發表文章

目前顯示的是 九月 24, 2012的文章

SIP ALG穿透NAT的實現

圖片
摘要:為解決SIP應用穿透NAT的問題,剖析了NAT的工作原理,並針對SIP協議信令過程的特點,提出了採用ALG設備解決NAT的穿透問題,具體設計了ALG的結構和相關實現算法,並給出了詳細的實現方案。關鍵詞:會話發起協議(SIP)網絡地址轉換(NAT)會話描述協議(SDP)信令


  會話發起協議SIP [1] (Session Initiation Protocol)是由IETF組織於1999年提出的在Internet網絡環境中實現實時通信應用的一種信令協議。SIP引發了現代通信體系結構的變革,然而它卻在視頻能力、會議控制方面沒有一個完善的標準;同時,由於大量企業和駐地網都採用了私有編址[2],並通過網絡地址轉換NAT (Network Address Translation)來控制與公共網絡的通信,而SIP數據包需通過信令消息中的IP地址和端口號來實現目的地尋址,且它的媒體流端口是動態分配的,這就為在NAT上配置固定的包過濾策略帶來了困難。因此,SIP穿透NAT是絕大多數VoIP運營商亟待解決的問題。
  當前,幾種主要的NAT穿透技術有SIP ALG、Full Proxy、MidCom、VPN、隧道穿透、STUN等。其中,SIP ALG方式是在傳統的NAT上進行擴展,使之具備感知SIP呼叫控制協議的能力,從而對基於SIP呼叫的地址實現穿透。它是一種比較簡單的方案,最突出的特點是ALG和具體的SIP系統無關,對於一個SIP系統不需要做任何修改,只要在響應的NAT上加載SIP ALG,就能完成私網到公網甚至私網中的兩個用戶之間的SIP連接。1 SIP應用穿透NAT面臨的問題1.1 NAT的工作原理  NAT [3]被置於兩網間的邊界。NAT技術使得一個私有網絡可以通過Internet註冊IP連接到外部世界。位於內網和外網中的NAT路由器在發送數據包之前,負責把內部IP翻譯成外部合法地址。當從外網來的含公網地址信息的數據包到達NAT時,NAT使用預設好的規則(其組元包含源地址、源端口、目的地址、目的端口、協議)來修改數據包,然後再轉發給內網接收點。NAT的基本工作原理如圖1所示,NAT設備實際上是在維護一個狀態表,該表用於把非法的IP地址映射到合法的IP地址上。

1.2技術難點  與傳統NAT支持HTTP等數據的穿透不同,SIP應用中的語音和視頻數據需通過信令消息中的IP…