基於SIP 的NAT 穿透研究

來源:互聯網
上載者:User

1 引言
VoIP 是新一代網路時代發展起來的最具代表性和發展前
途的應用技術之一。SIP 作為VoIP 中的一種信令控制協議,具
有很大的增長潛力。因此為了更好地推廣VoIP 業務的發展,解
決好SIP 穿越NAT 的問題將是一個重大的研究課題。本文主要
是在STUN 方法的基礎上,針對其無法穿越對稱型NAT 的缺陷
展開研究的,提出了一個改進的新方案。
2 SIP 協議、NAT 相關技術及STUN 簡介
2.1 SIP 協議及相關內容
SIP 是由IETF(網際網路工程任務推動小組)提出的多媒體通訊控制
協議,用於發起、更改和終止一個多媒體會話,同時配合會話描
述協議(Session Description Protocol,SDP)可以對會話屬性和媒體
屬性進行設定和動態修改,並且由於SIP 協議簡單、便於擴充和
擴充, 它已被業界選定為NGN 的核心控制協議。SIP 網路有2
個組成要素:SIP 使用者代理程式和SIP 伺服器。使用者代理程式是呼叫的終
端系統,SIP 伺服器是處理呼叫相關信令的網路裝置。SIP 訊息
有2 種: 從客戶機發到伺服器的SIP 請求訊息以及從伺服器發
到客戶機的SIP 響應訊息。SIP 定義了INVITE、BYE、OPTIONS
、ACK、REGISTER、CANCEL6 個基本方法。
2.2 NAT 技術介紹及NAT 分類
由於Internet 的迅猛發展,公網IP 位址變得非常緊缺,另外
為了管理方便和網路安全方面的考慮, 許多企業和機構將內部
的主機群組織起來形成區域網路, 這些主機通過設在網路邊界上的
網關與外部網路通訊,這樣既節約了IP 位址又使內部主機免受
外來攻擊,在這個網關上採用了一個非常關鍵的技術:網路地址
轉換,即NAT。NAT 將每個區域網路節點的地址轉換成一個IP 地
址,反之亦然。它可以應用到防火牆技術裡,把個別IP 位址隱藏
起來不被外界發現,使外界無法直接存取內部網路裝置,同時,它
還可合理地安排網路中的公有地址和私人地址的使用。但由於
NAT 的工作層次,它又成了制約VoIP 在廣泛發展的城域網和企
業網中應用的一大問題。
按照地址轉換的方式,可以將NAT 分為3 類,靜態NAT、動
態NAT 和網路地址連接埠轉換(NAPT)。按照地址映射的實現方
式,可以將NAT 分為4 類,全錐型NAT(full cone NAT)、受限錐型
NAT (re-stricted cone NAT)、連接埠受限錐型NAT(portrestricted
cone NAT)和對稱NAT(symmetric NAT)。前3 種NAT 均可實現
某內部(IP:連接埠)對與多個外部(IP:連接埠)對之間的映射轉換,區別
在於NAT 的啟用以及連接埠的限制。第4 種則要求每一對內外
(IP:連接埠)對對應惟一的映射綁定,即根據目的地址不同而映射
為不同的公網地址。
2.3 STUN
STUN 是UDP 的NAT 簡單穿越(simpletraversal of
UDPthrough network address translators)的簡稱,其解決思路是使
內網使用者預先獲知自己通過NAT 後將分配的公有地址,這樣就
可以在SDP 中直接填入外部地址, 以取代其原來的私人地址。
STUN 解決方案的優點是無需做任何改動, 同時可用於多個
NAT 串聯的網路環境,其局限性在於終端需加裝STUN 用戶端。
目前,業界對NAT 穿越問題非常關注,也提出了多種解決
方案,根據處理部分所在位置的不同,可以分為三種:用戶端解決
方案、路由邊界解決方案以及伺服器端解決方案。
3.1 用戶端解決方案
用戶端解決方案主要包括:STUN (simple traversal of UDP
through NAT)、TURN(Traversal Using Relay NAT)、ICE(Interactive
Connectivity Establishment)。
3.2 路由邊界解決方案
路由邊界解決方案主要包括:應用程式層網關ALG、通用即插
即用UPnP、中間盒通訊MIDCOM。
3.3 伺服器端解決方案
伺服器端解決方案主要包括:B2NUA(Back-to-Back User Agent)
、伺服器端RTP 中繼。
3.4 各種穿越方案的總結與比較
綜上所述,SIP 穿越NAT 問題已有多種解決方案。用戶端解
決方案,雖然無需對現有NAT 做任何改動,但對SIP UA 的要求
較高,需要支援相應的協議,而且到目前為止還無法解決通訊雙
方均處在對稱性NAT 的情況;路由邊界的各種解決方案,均需
要對NAT 裝置升級,但目前網路實際已經部署了大量的不支援
相關特性的NAT 裝置,因而這種方式可行性較差;伺服器端解
決方案, 通過中繼RTP 資料包來解決所有類型NAT 的穿越,缺
點就是增加了包的時延和丟包的可能性。
表3-1 給出了三種典型穿越方案的簡單對比:
表3-1
4 一種實現SIP 穿越雙對稱NAT 的
新方案
4.1 改進方案中NAT 的分類
STUN 方式最大的優點是無須對現有NAT Gateway裝置做任
何改動,因此是當前業界較為流行的應用方案,其缺陷就是無法
完成對對稱型NAT 的穿越;TURN 方式雖然支援所有類型的
NAT 穿越,但是它需要中轉通訊雙方的媒體流,不可避免地增加
了包的延遲和丟包的可能性;ICE 結合使用了STUN 和TURN
兩種協議,因而也存在TURN 方式所具有的缺陷。因此,為了能
保留STUN 方式的優越性, 進一步避免包的延遲和丟包的可能
性,對STUN 方式進行改進,擴大其使用範圍就顯得尤為重要。
在改進的STUN 方案中,把NAT 分為三種類型,分別是恒定
型、增量型和隨機型。
(1)恒定型NAT(Constant NAT):在這種類型的NAT 中,來自
同一地址和連接埠的請求訊息將被分配於相同的外部IP 位址和
連接埠, 這一類的NAT 包含了STUN 方式中的Full-cone 型、Restricted-
cone 型和Port Restricted-cone 型。
(2)增量型NAT(Increment NAT):在這種類型的NAT 中,只有
來自相同內部IP 位址和連接埠號碼,並且發送往同一個目的地址和
連接埠的請求訊息才被映射為相同的外部地址和連接埠號碼。同時,對
於第i 次外部地址映射分配,有
Addressi=Addressi-1
Porti=Porti-1+ΔP(i> 1)
其中Δp 是一個常數。目前,Internet 上使用的對稱型NAT
絕大多數是此種類型。
(3)隨機型NAT(Random NAT):在這種類型的NAT 中,對於
第i 次外部地址映射分配,有
Addressi=Addressi-1
Porti≠Porti-1+ΔP(i> 1)
也就是說每次所分配的連接埠間距不相同, 同時不存線上性
關係。
4.2 改進方案的演算法思想
改進方案就是從STUN Server 的響應訊息中擷取資訊,得
知NAT 類型(只考慮恒定型NAT 和增量型NAT),從而採取相應
的策略來完成對NAT 的穿越。演算法思想如下:
(1)參與通訊的Clienti(i=1,2)分別向STUNServer1 和STUN
Server2 發送STUN 請求訊息, 得到兩次響應訊息Res1 和Res2,
從兩次響應訊息中得到被分配的外部地址Addressi 和兩次被
分配得到的連接埠號碼:pi1,pi2(i=1,2)。
(2)Clienti(i=1,2)根據兩次被分配的連接埠號碼pi1 和pi2 來判斷
所處NAT 類型:
1) 如果兩次分配得到的連接埠號碼pi1 和pi2 能滿足pi1=pi2,
那麼NAT 類型是恒定型,轉步驟3;
2) 如果兩次分配得到的連接埠號碼pi1 和pi2 不滿足pi1=pi2,
那麼NAT 類型是增量型,同時Clienti(i=1,2),根據兩次分配得到
的連接埠號碼計算連接埠分配間距:
Δpi1=pi2-pi1(i=1,2)。
(3)Clienti(i=1,2)根據pi1,pi2 以及Δpi 預測實際建立串連時
將被分配到的連接埠號碼pipre:
1)如果NAT 類型是恒定型,那麼pipre=pi1(i=1,2),轉步驟4;
2)如果NAT 類型是增量型,那麼pipre=pi1+Δpi(i=1,2)。
(4)Clienti(i=1,2)向Intermediate Server 發送自己的預測連接埠
號pipre 和Δpi,同時從IntermediateServer 獲得對方的預測連接埠
號p2-ipre 和Δp2-i(i=1,2)。
(5)Clienti (i=1,2) 向目的端對等結點的外部IP 位址Address2-
i 及預測連接埠號碼pipre 發送包含串連請求的資料包,從而
建立起UDP 串連。為了確保串連建立的成功率,採取了失敗重
試(Retry)的策略,Clienti 將連續N 次(N>1)向目的端發送串連數
據包,直到串連成功建立為止。
(6)串連成功建立,對等結點雙方進行後續的通訊內容。至此
完成了對NAT 的穿越。
5 結束語
本文作者創新點:STUN 方式最大的優點是無須對現有NAT
網關裝置做任何改動, 因此是當前業界較為流行的應用方案,其
缺陷就是無法完成對對稱型NAT 的穿越。本文主要針對STUN
方式無法穿越對稱型NAT 這一弊端展開研究, 在STUN 方式的
基礎上,進行改進設計,從而達到能夠穿越對稱型NAT 的目的。
改進方案較其他能夠穿越對稱型NAT 的方案(如TURN、ICE 方
案)的可貴之處是可以盡量避免包的延遲和丟包的可能性。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.