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 大綱 穿越 NAT 編譯Open Source的STUN Server and Client Outbound Proxy

3 NAT 通常使用 xxx.xxx, xxx.xxx ~ xxx.xxx, 10.xxx.xxx.xxx; 但是沒有強制規定一定要以上的IP range NAT可分為四類: Full Cone Restricted Port Restricted Symmetric

4 Full Cone NAT 來自同一internal ip:port的所有要求都將mapping到相同的external ip:port
internal可以透過internal ip:port  external ip:port, 往external傳輸的網路封包 external可以透過external ip:port  internal ip:port , 往internal傳輸的網路封包

5 Restricted NAT 來自同一internal ip:port的所有要求都將mapping到相同的external ip:port
external”只能”循原路往internal傳輸網路封包, 也就是, internal曾將某一網路封包傳送到external時, external”才能”把網路封包傳送到internal

6 Port Restricted NAT 與Restricted Cone NAT一樣, 但是限制範圍包括port

7 Symmetric NAT 來自同一內部ip:port的所有要求, 在傳送到某一特定目標ip:port時, 都將mapping到相同的外部ip:port, 如果同一目標傳送的網路封包具有相同的來源ip:port, 但目的地不同, 則使用不同的mapping port 只有收到資料封包的external可以向internal回送UDP封包

8 關於穿越NAT 如果由client來做, 通常是去問外部的server(如STUN server), 目前NAT IP位址為何, 以及偵測NAT的type 如果是server來做, 最有效的做法就是outbound proxy, 這樣的做法就如同H.323裡的proxy mode. 但是, 由於所有的封包都經過outbound server, 網路流量是必需考量的重點

9 編譯與執行STUN Server # tar xvfz stund_0.96_Aug13.tgz # make
# ifconfig eth0:0 linux_host_ip_2 # ./server -v # ./client -v linux_host_ip

10 設定SJPhone – 使用我們的STUN server

11 設定SJPhone – 使用預設的STUN server

12 利用STUN穿越NAT的作法 在REGISTER和INVITE時, 注意Contact這個SIP header欄位的變化
在INVITE時, 注意o, c和m這幾個SDP欄位的變化

13 REGISTER封包 U :5060 -> :5060 REGISTER sip: SIP/2.0. Via: SIP/2.0/UDP ;rport;branch=z9hG4bKc0a80baf b451e2ebc000040ba Content-Length: 0. Contact: Call-ID: CSeq: 5 REGISTER. From: Max-Forwards: 70. To: User-Agent: SJphone/ a (SJ Labs).

14 INVITE封包 U :5060 -> :5060 INVITE SIP/2.0. Via: SIP/2.0/UDP ;rport;branch=z9hG4bKc0a80baf e2f fa Content-Length: 223. Contact: Call-ID: Content-Type: application/sdp. CSeq: 1 INVITE. From: Max-Forwards: 70. To: User-Agent: SJphone/ a (SJ Labs).

15 v=0. o= IN IP4 公網ip. s=SJphone. c=IN IP4公網ip. t=0 0. a=direction:active. m=audio公網port RTP/AVP a=rtpmap:0 PCMU/8000. a=rtpmap:101 telephone-event/8000. a=fmtp: ,16.

16 Quiz If two Uac behind the same NAT, and they enable STUN. What problem will happen?

17 大綱 H.323介紹 Open Source的H.323 terminal 在Linux平台的Gatekeeper 封包擷取與觀察

18 編譯的順序 因為library相依性的問題, 請照下面順序編譯: pwlib openh323 gnugk

19 編譯pwlib # tar xvfz pwlib_1_5_3.tgz # cd pwlib # ./configure # make opt
# make install # cd ..

20 編譯openh323 # tar xvfz openh323_1_12_3.tgz # cd openh323 # ./configure
# make opt # make install # cd ..

21 編譯gnugk # tar xvfz gnugk-2.0.8.tgz # cd openh323gk
編輯Makefile, disable ACCT, RADIUS, MYSQL, PGSQL, WAITARQ # make opt # make install # cd ..

22 啟動gnugk # cp -a /usr/local/lib/libp* /usr/lib/.
# cp -a /usr/local/lib/libh* /usr/lib/. # gnugk -c ./openh323gk/etc/gnugk.ini

23 設定SJPhone 新增一個Profile 使用Call through H.323 Gatekeeper
輸入正確的Gatekeeper Address

24 設定OpenPhone 設定Username和Aliases 更改Local interfaces

25 輸入正確的Gatekeeper Address
關掉OpenPhone後, 再啟動一次

26 擷取封包

27 大綱 SIP IP-PBX: Asterisk Asterisk的編譯與SIP service的啟動 Asterisk的設計概念
TransCoding的問題研究

28 Asterisk的編譯 # tar xvfz asterisk-1.0.11.tar.gz # cd asterisk-1.0.11
# make # make install # make samples

29 Asterisk預設的安裝路徑 執行檔: /usr/sbin/asterisk
Modules: /usr/lib/asterisk/modules Config: /etc/asterisk

30 sip.conf 請見/etc/asterisk/sip.conf, 或是光碟片裡copy出來的default sip config of asterisk 請注意以下一些設定, 我們通常/也許可能會去更改: context=default port=5060 bindaddr=

31 增加SIP client帳號 [1000] type=friend secret=1000 host=dynamic [1001]

32

33 Problem 註冊OK 1000< -- >1001對打不對勁
增加底下兩項到sip.conf的1000和1001帳號裡 nat=yes context=internal

34 增加internal context到extensions
增加internal context到extensions.conf [internal] exten => 100,1,Dial(SIP/1000) exten => 200,1,Dial(SIP/1001) X-Lite(1001)呼叫SJPhone(1000): call 100 SJPhone(1000)呼叫X-Lite(1001): call 200

35

36

37

38 Asterisk的設計概念 Asterisk is so-called IP-PBX 他主要是針對他們的類比或數位的板卡所設計的程式
基本上, 可以將Asterisk視作是一個加強型的Trunk Gateway

39 TransCoding的問題研究 基於上述原因, 預設所有RTP封包都會經過Asterisk
另外Asterisk為解決某些device沒有提供的codec, 他將進到自己本身的封包作codec的轉換 Asterisk的核心codec為PCM16和GSM

40 大綱 SIP互通性研究 研究X-Lite的各種設定 各種Open Source SIP Protocol Stack之比較與探討
SIP RFC 2543和RFC 3261比較與問題 SIP與H.323比較與差異 SIP優缺點與未來之挑戰

41 The setting with X-Lite
Auto Detect IP Listen on IP Listen SIP Port Listen RTP Port NAT Firewall IP Out Bound SIP Proxy Stun Server DNS Server

42 Display Name Username Authorization User Password Domain/Realm SIP Proxy Outbound Proxy Send Internal IP Forward SIP URL Dial Prefix

43 Reregister Proxy Send Compact SIP Messages Send Basic SDP Messages Use SIP rport Timeout

44 SIP rport allows a client to request that the server send the response back to the source IP address and port from which the request originated

45 Open source SIP stack VOCAL: vovida, huge and full functions, support RFC2543 but RFC3261 unknown OPAL: openh323, support H.323 and SIP miniSIP: support TLS oSIP: GNU, very small, C language

46 Hold in RFC2543 RFC3261 hold: a=sendonly, a=recvonly, a=sendrecv
RFC2543 hold: c= Quiz: Is the address “ ” a legal internet address?

47 RFC3261 vs. RFC2543 Please refer chapter 28 of RFC3261
Refer the book “Understanding the Session Initiation Protocol” (second edition), searching the keyword “RFC 2543” Installing the vocal server and client and then testing with your program or device

48 SIP vs. H.323 IETF vs. ITU-T(CCITT) Text vs. ASN.1
SIP URL vs. E164ID/H323ID NAT friendly Gateway mode and prefix number Trunk gateway and connecting to telecommunication SIP servers vs. H.323 gatekeeper

49 The problem with SIP SIP 3261和2543不相容 由於是Text編碼傳輸, 無法保證call setup time
沒有gateway prefix觀念, 需自行實作, 也因此造成某些程度的不相容 在RFC規範裡, MUST字眼很少出現, 各廠商的產品相容性需驗證 SIP某些功能仍然是draft, 也就是還沒定稿 SIP的規範散見各RFC或draft


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

Similar presentations


Ads by Google