Presentation is loading. Please wait.

Presentation is loading. Please wait.

李思銳 voip_taiwan@yahoo.com.tw VoIP系統與SIP協定 李思銳 voip_taiwan@yahoo.com.tw.

Similar presentations


Presentation on theme: "李思銳 voip_taiwan@yahoo.com.tw VoIP系統與SIP協定 李思銳 voip_taiwan@yahoo.com.tw."— Presentation transcript:

1 李思銳 voip_taiwan@yahoo.com.tw
VoIP系統與SIP協定 李思銳

2 大綱 VoIP 導論 電路交換與分封交換 FXS FXO T1 E1等電信介面之簡介 網路基本概念 Linux和Open Source
語音壓縮基本概念 封包大小與流量之計算

3 Telcom, Datacom Circuit switch: 電路交換 Packet switch: 分封交換 Example:
(2G) GSM: Circuit switch (2.5G) GPRS: Circuit switch (voice) + Packet switch (data) (3G) CDMA: Packet switch

4 Communication Physical layer Protocol layer

5 Communication Example
UART (TX, RX, Ground) or RS232 interface , 8N1, XMODEM Telephony interface Dial Pulse or DTMF (dual-tone multi-frequency)

6 Dial Pulse 北美: 60 (on) : 40 (off) 歐洲: 63 (on) : 37 (off)
6~15 (8~10) pulses per second Mark (on), Break (off), Pause 所以傳統類比電話系統可以使用勾鍵(Hook)撥號

7 DTMF Tone Frequencies 雙音複頻 兩個不同頻率的聲音耦合
使用4x4的table表, 可以表達1, …, 9, #, 0, *, A, B, C, D的訊息

8 DTMF row frequency ROW 0: 697 Hz ROW 1: 770 Hz ROW 2: 852 HZ

9 DTMF col frequency COL 0: 1209 Hz COL 1: 1336 Hz COL 2: 1477 Hz

10 SIP Signaling RFC 2833 INFO messages or RTP messages
Event 0~9: coding 0~9 Event *: 10 Event #: 11 Event A~D: 12~15 Event Flash: 16

11 FXS, FXO FXS: Foreign Exchange Station, interface provides power (battery) and generates ring signals, SLIC FXO: Foreign Exchange Office, interface receives power (battery) and receives ring signals, DAA

12 PCM PCM (pulse-code modulation) 類比數位的轉換 動作程序為: 取樣 量化 編碼

13 Sampling Sampling (取樣) 8 KHz, the voice frequency range is 0~4000 (300~3400), by Nyquist Theory, sampling speed must be taken greater (or equal) than double with frequency (s>=2f)

14 Quantifying Quantifying (量化) linear scale (線性量化) logarithmic scale (非線性量化)

15 Coding Coding (編碼) 8 bits (傳統電信) 16 bits, …

16 linear scale 如果編碼為n-bits, 將聲音頻率等分為2^n 例如, 如果編碼為8-bits, 那量化階度為等分256階
常見者為PCM8, PCM16

17 logarithmic scale 通常聲音頻率落在中間居多, 越高頻出現的機會較低, 為了讓量化更準確, 將聲音出現機率越高的頻段切分的更細, 以提高量化的準確度 常見者為G.711 u-Law和A-Law

18 u-law量化方式 y = ln(1 + ux) / ln(1 + u) where u = 255

19 A-law量化方式 y = Ax / (1 + ln A) for x <= 1/A y = (1 + ln Ax) / (1 + ln A) for 1/A <= x <= 1 where A = 87.6

20 CCS, CAS CCS: Common Channel Signaling 信令在獨立的通道上傳送, 因此信令的實體線路或路由可以和語音通道不同 CAS: Channel Associated (Access) Signaling 信令附加在語音通道, 所以信令的實體線路或路由可以和語音通道相同

21 Traditional Trunk 2-wire CO
2-wire E&M: E(RX), M(TX), G (Ground), B (Battery) 4-wire E&M: E1, E2, M1, M2, G, B 2-wire E&M and 4-wire E&M都是一路的語音中繼線路, 但是4-wire E&M的傳輸距離較遠

22 FDM, TDM FDM: 劃頻多工 對特定範圍的頻帶切割, 已傳輸多路的訊息, 例如廣播系統中的FM
TDM: 劃時多工 利用切割時間的不同, 來達成同時傳輸多路的訊息, 類似電腦系統中的multi-task概念, 也因為要切割時間, 所以需要同步. 我們稱每個切割出來的區間為Time Slot, 若是用來傳遞語音則也稱為Voice Channel

23 TDM trunk T1 CAS: TS 0~23: Voice Channel using 1 bit as signaling every 6 TS I bit addition for sync. E1 CCS: TS 0: Frame Sync. and Alarm TS 1~15: Voice Channel TS 16: Signaling TS 17~31: Voice Channel

24 T1 PCM Sampling Rate: 8 KHz Encoding Law: u-law
Bit Rate: Mbps 8 KHz*(8 bits*24 TS+1 bit sync) Code: AMI, B8ZS Impedance: 100 Ohms Standard

25 E1 PCM Sampling Rate: 8KHz Encoding Law: A-law
Bit Rate: 2.048Mbps 8 KHz * 8 bits * 32 TS Code: HDB3 Impedance: 120 Ohms Standard

26 Quiz The speed limiting of modem is 56kbps? Why or why not?

27 Protocol stacks The IETF Internet 4-layer Physical: Ethernet IP/ICMP
TCP/UDP AP: SIP, H.323, RTP/RTCP

28 SIP RFC 3261 support TCP and UDP
H.323 v1 and H.323 v2 support H.245 Q.931 over TCP and RAS over UDP H.323 v3 and H.323 v4 support H.245 Q.931 over TCP/UDP and RAS over UDP

29 Network Class Class A: ~ 但是0開頭和127開頭為特殊用途 0結尾和255結尾也有特殊用途 Class B: ~ Class C: ~

30 Class D: 224.0.0.0 ~ 239.255.255.255 注意Class D為multicast 使用
Class E: ~ 保留未來或實驗使用

31 特別的IP Address : 用於來源位址時, 合法用途為要讓IP位址動態地由伺服器分配 用於目的位址時, 合法用途為要參照一個預設路由

32 127.xxx.xxx.xxx: Loopback, 傳統上只使用127.0.0.1, 來表示本機
廣播位址: 例如 ,

33 CIDR 舉例來說, /24, 表示subnet mask開頭有24個1, 也就是subnet mask = ; 所以整個區段的網路範圍為 ~

34 TCP vs. UDP TCP通訊協定(由上層AP看下來)保證沒有錯誤, 沒有遺失或重複, 依序傳遞; 而UDP則不保證, 而必須由AP層自行負責 由於UDP的負擔小, 在傳輸類似影像或聲音的資料流時, 通常不用考慮重傳的問題, 因此UDP就顯現出他的優點

35 The Open Source 通常我們稱open source, 是指軟體的版權規範於GPL, LGPL或是MPL等等, 通常我們可以自由下載使用, 甚至傳播這些軟體, 也可以更改程式的source, 不過若是更動source, 通常要回報原始的作者或是開發論壇, 詳細內容請見該程式的原始規範 所以, 我們可以說open source的精神, 就是要集合眾人之力, 把程式做到更完美

36 常用的Linux Command ls : list, 類似DOS的dir, 可以搭配ls -al使用
rm : remove,類似DOS的del rmdir : remove directory mkdir : make directory cd : change directory cp : copy

37 mv : move chmod : 更改權限 file : 看某個檔案的類型, 也常用來測試某檔案存不存在 find -name : 找檔案 grep : 找字串 cat : 顯示內容到stdout

38 ps : 顯示執行的process, 常使用ps aux
touch : 更改檔案的timestamp, 也常用來產生一個空的檔案 man : manual ifconfig : 設定或顯示網路 ifconfig eth0 xxx.xxx.xxx.xxx

39 route : 設定或顯示路由 route add default gw yyy.yyy.yyy.yyy
ping reboot : 重新開機 shutdown : 關機, 常用shutdown -h now

40 vi文字編輯器 vi 檔名 初始進入vi文字編輯器時, 我們稱之為命令模式

41 :wq.  存檔並結束 :q.  強迫結束(不存檔, 不論檔案有無被更改) :100.  跳到第100行(row) dd
:wq  存檔並結束 :q!  強迫結束(不存檔, 不論檔案有無被更改) :100  跳到第100行(row) dd  刪除游標所在那一行(row) i  進入編輯模式, 在編輯模式中可以按ESC回到命令模式

42 語音壓縮 傳統的PCM編碼, 以u-law或是A-law為例, 他所需的傳輸速率要64kbps, 若以目前的網路環境(或許該說2000年以前), 是無法承受這麼大的網路頻寬需求, 因此語音封包需要壓縮, 以減少網路流量, 當然壓縮過後多多少少會導致語音的失真或品質的降低

43 G.711 PCM u-law 64 kbps data rate 10 ms sample size
Default datagram 2 samples = 20 ms Default 1.5 ms packetization delay Default 40 ms jitter buffer delay (based on 2 datagrams) Theoretical maximum MOS 4.4

44 G.711 PCM A-law 64 kbps data rate 10 ms sample size
Default datagram 2 samples = 20 ms Default 1.5 ms packetization delay Default 40 ms jitter buffer delay (based on 2 datagrams) Theoretical maximum MOS 4.4

45 G.729A 8 kpbs data rate 10 ms frame size
Default datagram 2 frames = 20ms Default 15.0 ms packetization delay Default 40 ms jitter buffer delay (based on 2 datagrams) Theoretical maximum MOS 4.07

46 G.723.1 6.3 kbps 30 ms frame size Default datagram 1 frame = 30 ms
Default 37.5 ms packetization delay Default 60 ms jitter buffer delay (based on 2 datagrams) Theoretical maximum MOS 3.87

47 g723.1 can also be 5.3 kbps with a maximum MOS 3.69

48 封包大小與流量之計算 以G.711為例 64 Kbps * 20 ms = 160 bytes
Overhead, 以Ethernet為例 IP+UDP+RTP Overhead = = 40 bytes Ethernet Overhead (包含4-byte的CRC) = 18 bytes

49 所以, 在Ethernet傳輸的總速率為 (160+40+18) bytes * 50 frame = 87.2 Kbps

50 大綱 SIP測試環境架設 安裝X-Lite, SJPhone與Ethereal 設定讓同一台PC執行兩個SIP soft phone
在Linux環境下編譯open source的Proxy Server

51 在只有文字模式Linux環境下擷取SIP封包: 編譯與使用ngrep

52 Testing Environment X-Lite SJPhone Ethereal VMWare Red Hat 9 SER ngrep

53 設定SJPhone Options/Profiles/PC to PC (SIP)確認設定為in use

54 在上個畫面點選Edit, 在Profile Option/STUN中, 不要勾選Use discovered address in SIP

55 如果要強迫binding某個IP, 可以在Options/Call Options/Outgoing calls裡設定

56 設定X-Lite X-Lite在安裝完成, 第一次執行時, 會一直跳出Menu/System Settings/SIP Proxy/Default的頁面, 我們需要設定一下以便測試點對點 Enable: Yes Display Name: 1001 Username: 1001 Authorization User: 1001 Password: 1001

57 Domain/Realm: 填Linux host IP, 之後要用,測試點對點時沒用到, 只是為了讓X-Lite不要一直跳出設定畫面

58 SIP Proxy: 填host Linux IP
Outbound Proxy: 填 host Linux IP Use Outbound Proxy: Never Send Internal IP: Always Register: Never Direct Dial IP: Yes

59 在Menu/Network要設定 Auto Detect IP: No Listen on IP: 如果要強制binding某個IP, 可以填在這 Use X-NAT to Choose SIP/RTP Ports: Never Listen SIP Port: 為避免和SJPhone衝突, 不要填5060, 我通常喜歡改成50607或是50600

60 測試點對點 SJPhone  X-Lite: 輸入1001@xxx.xxx.xxx.xxx:50600
X-Lite  SJPhone: 這個模式(X-Lite主叫, SJPhone被叫)會有問題, 詳情請見下面說明

61 Some problems with SJPhone
注意我們只有一個網路介面, 而且只有一個音效介面, 因此在本機上SJPhone和X-Lite對打會有怪現象發生, 而且Ethereal會抓不到封包 另外, 由於我們在同一台機器上執行兩個sip soft phone, SJPhone若是被叫端, 他會回應c: IN IP , 因此造成問題

62 安裝設定Ethereal 先安裝WinPcap 然後安裝Ethereal
啟動Ethereal後, 按下Capture/Interfaces, 會跑出一個視窗, 找到正確網路介面後, 按下Capture就開始抓封包了

63 為了方便閱覽, 我通常設定Filter: sip, 這樣其他不是sip的封包就會被過濾掉

64 通常要抓到封包需要純Hub, 而Switch Hub會有些問題
在比較新版的Ethereal中有個設定值Capture packets in promiscuous mode可以勾選, 以解決(部分)Switch Hub的問題

65 如果要把抓到的封包傳給別人分析, 用File/Save As, 就可以存成檔案
如果只是要方便閱讀, 可以用File/Export, 然後選擇匯出的格式

66 Host Linux VM + RH9 Development Tools + mysql-server + mysql-devel ( + apache-server + PHP) Memory > 128MB (256MB recommend) HD space > 2GB (4GB recommend)

67 SSH login 如果是安裝RH9, 在重啟後SSH就自動啟動
如果是其他平台, 先用ps aux檢查, 如果沒有啟動可以下命令service sshd start

68 putty 在Windows執行putty, 然後在Session/Host Name輸入Linux Host的IP

69 pietty 也可以用pietty取代putty

70 psftp 如果要在Windows和Linux Host之間傳輸檔案, 可以執行psftp psftp> open xxx.xxx.xxx.xxx psftp> put 要傳到linux裡的檔名 psftp> get 要回傳windows的檔名

71 winscp 有的時候psftp建立連線很慢, 可以用winscp取代psftp, 而且winscp有圖形介面

72 SIP proxy server # tar xvfz ser-0.9.6_src.tar.gz # cd ser-0.9.6 # make
# make modules # make install # ser # serctl ul show

73 SER的啟動 SER如果沒有更改Makefile, 通常會安裝在/usr/local/sbin, 換句話說, 如果要改變安裝位置, 需要去更動Makefile SER的預設的config檔案通常是在/usr/local/etc/ser/ser.cfg, 我們可以用 ser -f your_own_ser_cfg 來改變讀取的config檔

74 如果在shell直接下命令, shell卻回報找不到執行檔, 可以檢查PATH(echo $PATH)後, 執行PATH=$PATH:/usr/local/sbin

75 SER啟動後檢查 Listening on: 檢查SER是否binding到我們要的protocol和位址
下命令ps aux, 檢查SER是否真的有啟動 如果SER啟動有問題, 可以用ser -c檢查config是否有錯 如果config檔沒錯, 但是SER啟動仍然有問題, 可以進入偵錯模式檢視問題

76 SER的偵錯模式 通常我會下命令 ser -ddd -D -E -l eth0:5060
-d: Debugging mode (multiple -d increase the level) -D: Do not fork into daemon mode -E: Log to stderr -l address: Listen on the specified address/interface

77 SER的config 如果執行ser之後, 發現ser抱怨SIP_DOMAIN沒有設定, 可以在linux shell執行以下命令
SIP_DOMAIN=“your_own_sip_domain” export SIP_DOMAIN SER的config檔內容在下面說明

78 global configuration parameters
debug: -d fork: -D log_stderror: -E check_via: -v dns: -r rev_dns: -R port: the listen port

79 children: -n fifo: ser fifo location listen: the listen address alias: 別名 fifo_db_url: the database location of fifo

80 SER IPC SER利用fifo來達成IPC(inter-process communication), 通常是用在和外部程式溝通時使用
預設的SER config設定fifo="/tmp/ser_fifo"

81 在比較新版本的SER, 也可以用Unix socket來達到IPC, 設定的方法就是把fifo改成socket, 但是要注意Linux kernel必需support Unix socket
如果我們沒有要和其他process用fifo_db溝通, fifo_db_url可以不用設定, 不過SER會抱怨”no fifo_db_url given”

82 module-specific parameters
loadmodule: 指定要載入的模組, 注意各模組之間可能會有相依性 modparam: 設定各模組的parameters, 各模組的設定值可以在官方網站或是source code裡的README檔案找到, 但是注意有時說明檔會沒有更新, 所以需要搭配研讀source code

83 request routing logic 這裡就是SER的routing table, 也就是我們要讓自己的SIP Proxy Server執行指定的行為的地方 在source code裡面有兩個目錄, etc和examples, 裡面有各式各樣的範例, 但是還是要注意, 也許程式更新了但是範例還是沒有更新

84 編譯與安裝libpcap ngrep depends on libpcap, 所以我們先編譯與安裝libpcap
# tar xvfz libpcap tar.gz # cd libpcap-0.8.3 # ./configure # make # make install

85 編譯與安裝ngrep # tar xvfj ngrep-1.44-1.tar.bz2 # cd ngrep-1.44
# ./configure # make # make install

86 使用ngrep擷取SIP封包 由於SIP封包的內容是純文字的, 而且每行結尾均為CR LF, 所以我們用下面的命令來擷取SIP封包 # ngrep -d any port W byline

87 “-d”: 後面可以填device name(例如eth0), 我們填any表示所有的network device封包都要擷取
“port 5060”: 指定port=5060, 其他的不擷取, 若是SIP server的listen port不是用default的5060 port, 則這裡的值要跟著更改 “-W byline”: 如果收到的封包有換行符號, 則顯示時也跟著換行

88 如果要把抓到的封包存到檔案, 而不是輸出到stdout # ngrep -d any port 5060 -W byline \ > capture.txt
# ngrep -d any port W byline \ | tee capture.txt

89 大綱 SIP初探: 擷取SIP封包 點對點 Call Setup SIP Header SDP 註冊到Proxy Server 認證相關問題

90 Reference RFC 2327: SDP: Session Description Protocol
RFC 2543: SIP: Session Initiation Protocol (俗稱SIP v1) RFC 3261: SIP: Session Initiation Protocol (俗稱SIP v2) RFC 3264: An Offer/Answer Model with the Session Description Protocol (SDP)

91 SIP user agents UAC (user agent client): an entity which make a call, terminal a call UAS (user agent server): an entity which receive a call , terminal a call

92 SIP servers Proxy server: make request on behalf of other clients
Location server: keep the info of call party’s location Redirect server: map the address into new address Registrar server: accept REGISTER request

93 SIP client and SIP server
在本課程中, 我們稱一個SIP client, 他需具備UAC+UAS全部或部分的特性, 類似H.323裡所定義的Endpoint 在本課程中, 我們稱一個SIP server, 他需具備Proxy server+Location server+ Redirect server+Registrar server全部或部分的特性, 類似H.323裡所定義的Gatekeeper

94 有時候,我們稱一個Proxy server, 其實就是在說一個SIP server

95 SIP method REGISTER INVITE ACK BYE CANCEL
OPTIONS: query the capability of server INFO: carry a out-of-band information (eg. DTMF)

96 SIP response 1xx: informational 2xx: successful 3xx: redirection
4xx: request failure 5xx: server failure 6xx: global failure

97 1xx and 2xx and 3xx 100 Trying 180 Ringing 181 Call Is Being Forwarded
183 Session Progress 200 OK 301 Moved Permanently 302 Moved Temporarily

98 4xx 401 Unauthorized 403 Forbidden 404 Not Found
405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout

99 415 Unsupported Media Type
480 Temporarily Unavailable 481 Call/Transaction Does Not Exist 483 Too Many Hops 486 Busy Here 487 Request Terminated 488 Not Acceptable Here

100 5xx and 6xx 500 Server Internal Error 501 Not Implemented
503 Service Unavailable 513 Message Too Large 600 Busy Everywhere 603 Decline 604 Does Not Exist Anywhere 606 Not Acceptable

101 Make a simple call A send “INVITE” to B B send “180 Ringing” to A
B send “200 OK” to A A send “ACK” to B Media connection between A and B B send “BYE” to A A send “200 OK” to B

102 Sample INVITE package INVITE sip:1000@192.168.11.200 SIP/2.0
Via: SIP/2.0/UDP :50607;rport;branch=z9hG4bK82FC66F931EF4E40AE E5D8D From: 1001 To: Contact: Call-ID: CSeq: INVITE Max-Forwards: 70 Content-Type: application/sdp User-Agent: X-Lite release 1103m Content-Length: 197

103 v=0 o= IN IP s=X-Lite c=IN IP t=0 0 m=audio 8000 RTP/AVP 0 101 a=rtpmap:0 pcmu/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:

104 Header fields Call-ID, i Contact, m Content-Length, l Content-Type, c
From, f Subject, s To, t

105 Via, v CSeq Max-Forwards User-Agent

106 The min required header field set
Via Max-Forwards To From Call-ID CSeq

107 SDP Version number, v Origin containing name, o Subject, s
Connection, c Time, t Media, m Attributes, a

108 Content-Length calculation
v=0 --> 5 o= IN IP > 48 s=X-Lite --> 10 c=IN IP > 25 t=0 0 --> 7 m=audio 8000 RTP/AVP > 28 a=rtpmap:0 pcmu/ > 22 a=rtpmap:101 telephone-event/ > 35 a=fmtp: > 17

109 空白字元要計算 行尾的CR LF (0x0D 0x0A)要計算 所以上面例子裡的Content-Length為 …+17=197

110 SJPhone reg to SER Options/Profiles點選New Profile Name: 輸入名字, 例如SER
Profile Type: Calls through SIP Proxy

111 在按下2次OK後 Account: 1000 Password: 1000

112 新增完成後, 選取Edit, 在Proxy domain和User domain填入Linux Host IP

113 X-Lite reg to SER Menu/System Settings/SIP Proxy/Default Register: Always Direct Dial IP: No 設定完畢後, 記得重新啟動X-Lite

114 Registration A send “REGISTER” to P P send “100 Trying” to A
P send “200 OK” to A

115 Sample REGISTER package
REGISTER sip: SIP/2.0 Via: SIP/2.0/UDP :50607;rport;branch=z9hG4bK6C24482F4D7747ADBB4523FA7526E7C6 From: 1001 To: 1001 Contact: "1001" Call-ID: CSeq: 607 REGISTER Expires: 1800 Max-Forwards: 70 User-Agent: X-Lite release 1103m Content-Length: 0

116 Call with proxy server A send “INVITE” to P P send “INVITE” to B
B send “180 Ringing” to P P send “180 Ringing” to A B send “200 OK” to P P send “200 OK” to A A send “ACK” to B

117 Media connection between A and B
B send “BYE” to P P send “BYE” to A A send “200 OK” to P P send “200 OK” to B

118 SER with mysql support Modify Makefile to enable mysql support 找到exclude_modules, 把mysql去掉 Re-compile and re-install SER 記得先停止SER, 可以下命令killall ser 確保安全, 先清掉之前安裝的目錄, 然後make clean

119 SER mysql table 記得先export SIP_DOMAIN 執行SER, 確認SER已經啟動
然後Create the database table 問密碼時直接按Enter 注意, 這裡的密碼指的是MySQL的密碼, 預設是沒有

120 # export SIP_DOMAIN="RH9“
# ser # ser_mysql.sh create MySql password for root: creating database ser ... Enter password:

121 Add user 命令格式為 serctl add username passwd email
SER database table的預設密碼為heslo # serctl add MySql password: heslo new user added new user into uri table added 多加幾個, 例如1001, 1002, 1003, …

122 Re-install SER mysql table
如果SER的mysql table毀損可以 下命令ser_mysql.sh reinstall, 或是 利用工具清掉mysql裡的table, 然後依照前面的做法, 重新create新的

123 mysql and phpmyadmin # tar xvfz phpMyAdmin tar.gz \ –C /var/www/html # service mysqld start 在某些系統可能是service mysql start # service httpd start 開啟IE, 網址列輸入

124

125 Config Modify config file of SER to enable auth and mysql support
vi /usr/local/etc/ser/ser.cfg 找到mysql.so, auth.so, auth_db.so把comment拿掉 (就是拿掉該行最前面那個#)

126 db_mode設成2 calculate_ha1設成yes password_column設成password 啟動www_authorize和www_challenge, 並且把domain清空

127 loadmodule "/usr/local/lib/ser/modules/mysql.so“
loadmodule "/usr/local/lib/ser/modules/auth.so" loadmodule "/usr/local/lib/ser/modules/auth_db.so“ modparam("usrloc", "db_mode", 2) modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password") www_authorize("", "subscriber") www_challenge("", "0")

128 Reg auth A send “REGISTER” to P P send “401 Unauthorized” to A
(407 Proxy Authentication Required) A send “REGISTER” to P with Authorization information P send “200 OK” to A

129 Enable call auth with SER
Copy the reg auth settings Modify it if (method=="INVITE") { if (!www_authorize("", "subscriber")) { www_challenge("", "0"); break; };

130 Call auth A send “INVITE” to P P send “401 Unauthorized” to A
A send “ACK” to P A send “INVITE” to P with Authorization information P send “INVITE” to B B send “180 Ringing” to P P send “180 Ringing” to A

131 B send “200 OK” to P P send “200 OK” to A A send “ACK” to B Media connection between A and B B send “BYE” to P P send “BYE” to A A send “200 OK” to P P send “200 OK” to B

132 實地演練 練習將SJPhone和X-Lite都註冊到SER, 由SJPhone打給X-Lite, 啟動Ethereal抓取封包, 然後檢視封包內容 請比較no auth, reg auth和call auth之間行為的差異性

133 Quiz What should I fill the address of “From”, “To”, and “Contact” fields? Should it be local address, NAT’s address, or proxy server’s address?

134 大綱 SIP Registration Registration Registration Update
Contact List Request UnRegistration Unsuccessful Registration

135 SIP Registration 這個部分我們使用X-Lite and SER, 直接擷取封包
請更改X-Lite的Advanced System Settings / SIP Settings, 設定Reregister Proxy = 180

136 Registration: 正常執行SER, 然後開啟X-Lite(假設已經設定完成)就可以擷取到註冊封包
Registration Update: 我們前面設定了Expire Time = 180 sec, 所以等待3分鐘後就可以擷取到重新註冊封包

137 Contact List Request: X-Lite於正常執行狀態, 更改X-Lite向SIP server註冊的帳號及密碼即可擷取到新的註冊封包
UnRegistration: 關閉X-Lite, 即可擷取到解除註冊的封包 Unsuccessful Registration: 把X-Lite向SIP server註冊的帳號及密碼故意填錯, 可以擷取到註冊失敗的封包

138 大綱 SIP Call Call Establishment Through Two Proxies No Answer Busy
No Response Temporarily Unavailable

139 SIP Call 這個部分我們使用SJPhone, X-Lite and SER, 直接擷取封包
請將前面更改X-Lite的設定改回來(Advanced System Settings / SIP Settings, 設定Reregister Proxy = 1800)

140 Call Establishment: 由SJPhone發起呼叫, X-Lite為受話端即可
Through Two Proxies: 啟動另一個SER (listen port要跳開), 將SJPhone註冊到新的SER, 這個新的SER設定將封包forward到第一台SER, 測試完畢請將SJPhone註冊回原來的SER

141 No Answer: (1) 由SJPhone發起呼叫, X-Lite不要應答, 等待2分鐘會收到408 Request Timeout (2) 由SJPhone發起呼叫, X-Lite還沒應答, SJPhone掛斷電話 Busy: 用SJPhone或是X-Lite自己呼叫自己, 會收到486 Busy

142 No Response: 先停掉SER, 關掉X-Lite, 然後再啟動SER, 由SJPhone呼叫X-Lite(此時沒有啟動)
Temporarily Unavailable: 將X-Lite正常開啟, 再正常關閉X-Lite, 然後由SJPhone呼叫X-Lite


Download ppt "李思銳 voip_taiwan@yahoo.com.tw VoIP系統與SIP協定 李思銳 voip_taiwan@yahoo.com.tw."

Similar presentations


Ads by Google