999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用ICE實現VOIP媒體流穿越

2010-04-12 00:00:00暢巨崢王慶輝
現代電子技術 2010年6期

摘 要:為了解決NAT所帶來的穿越問題,業界提出多種方案如ALG,STUN,TURN等,但它們在網絡拓撲和應用可擴展性上都具有一定的局限性。在此參考STUN 協議和TURN協議,設計并實現了一個基于ICE方式的綜合性解決方案,擁有ICE模塊的客戶端在發起和接收呼叫前會收集所有可能用于媒體流傳輸的地址,然后從中選擇最優傳輸路徑進行媒體流傳輸,從而克服了傳統方案的不足,具有很強的適應能力,能工作在任何拓撲環境中。

關鍵詞:NAT穿越;STUN;TURN;ICE

中圖分類號:TP393文獻標識碼:A

文章編號:1004-373X(2010)06-105-04

Traversal of VOIP Media Stream Based on ICE

CHANG Juzheng,WANG Ying,WANG Qinghui

(Shenyang Institute of Chemical Technology,Shenyang,110142,China)

Abstract:Numerous solutions including ALG,classic STUN,TURN etc,have been defined for allowing higher level singaling protocol such as the Session Initiation Protocol to work through NAT,but these techniques are limited to work only in certain network toplogies.A new completely solution to the NAT traversal-Interactive Connectivity Establishmentis(ICE) is introduced.ICE is a not a new method but making use of existing protocol such as STUN and TURN.Before initializing or answering a session,ICE-enabled UAs can collect all candidates that may be used for media transfer,and choose one optimal candidate-pair for mediastream.ICE can work in every topologies,overcome the shortcomings of traditional sulotions.

Keywords:NAT traversal;STUN;TURN;ICE

目前互聯網的迅猛發展使原有的IPv4地址日益面臨耗盡的威脅[1],為了能夠盡量減少地址的消耗,引入NAT[2]的概念。通過NAT技術將網絡劃分為公網和私網兩個部分,在私網內部使用的是私網IP[3]地址,這樣便達到了減少IP消耗的目的,同時還有一定程度的安全性,所以NAT技術得到了廣泛應用,但也給一些互聯網應用如基于SIP[4]的通信帶來了挑戰。在SIP的呼叫建立過程中,消息接收方始終按照協議載荷內的源地址和端口信息來回傳響應消息和發送相應的媒體流,當SIP終端通過NAT進行地址轉化時,NAT會將IP包頭的源IP地址和端口轉換為NAT的網絡出口地址,從而造成載荷內的地址和端口號與IP包頭的源地址和源端口不一致,此時消息接收方無法將響應消息正確回傳到消息發送方[1],雙方也無法建立正常的通信連接,這就是所謂的穿越問題。為解決穿越問題,已經有多種方案,常用的有:ALG,STUN,TURN[7],PROXY等,但這些方案都有自己的適用范圍,只在特定的拓撲環境下才能發揮作用,同時還會給系統帶來許多復雜性和脆弱性因素[8]。所以需要一種能適用于各種網絡拓撲環境且足夠靈活的方案,使之能在各種情況下都能很好地解決NAT穿越問題,而ICE[9]正是符合這樣要求的一種良好的解決方案。

1 ICE方案原理及其實現

1.1 ICE概述

交互式連接建立(Interactive Connectivity Establishment,ICE)方案是利用STUN和TURN并對之進行適當擴充后實現穿越的。ICE對SDP[10]也進行了擴展,通信雙方會在發出消息前收集所有可能用于通信的地址,并將它們以SDP擴展屬性的形式編入SIP消息中發出,在雙方進行一次消息交互后并不立即啟動媒體流,而是對所有這些地址配對并計算優先級,然后按照優先級順序進行連通性測試,以選擇最佳地址對進行媒體流的傳輸。

1.2 ICE算法流程

1.2.1 收集地址并確定其基地址

通信雙方收集所有可能用于會話的地址,每個候選地址都有一個基地址,當使用候選地址發送消息時必須由其基地址發出[9]。客戶端在發送初始化請求前收集三類地址,一類來自于客戶端直接連接的網絡接口,稱為主機候選地址,其基地址就是它本身;一類是經NAT映射后的地址,稱為服務器反身候選地址,其基地址就是相應的主機候選地址;還有一類是TURN服務器分配的地址,稱為中繼候選地址,其基地址就是它本身。其中主機候選地址通過給本地主機IP地址附加一個空閑端口號組成;服務器反身地址則可以通過向STUN服務器發送綁定請求或向TURN服務器發送分配請求獲得;中繼地址則通過向TURN服務器發送分配請求獲得。

1.2.2 確定候選地址的優先級并確定缺省地址

收集好地址后就是確定各個地址的優先級,優先級通過公式Pc=224×Pt+28×Pl+(256-Nc)來計算,式中:Pt為類型優先參數,為的整數,對于本地候選地址,其類型優先級為126,服務器反身地址的類型優先級為100,中繼地址的類型優先級為0;Pl是本地優先參數,是的整數,當只有一個IP地址時設為65 535;Nc則是候選地址所對應的組件編號,是屬于的整數[9]。

缺省候選地址是用來發送媒體流的地址,在連通性測試前,按照中繼地址、服務器反身地址、主機地址的順序來選擇。

1.2.3 構建并發送初始化請求

初始化消息由一系列媒體流組成,每個媒體流都包含候選地址列表和一個缺省地址,客戶端將每個媒體流的缺省地址編輯進相應的SDP的c行和m行,并將候選地址及其相關信息編輯進Candidate屬性,這樣生成初始化請求后由信令信道發出。

1.2.4 生成應答

被叫端收到初始化請求后,進行以下操作:

(1) 確定雙方的角色[9]。通信雙方一方為控制端,另一方為受控端,分別由ICE-CONTROLLED屬性和ICE-CONTROLLING屬性表示,主叫端是控制端,被叫端是受控端。

(2) 收集候選地址,這些地址可以在初始化請求到達前預收集,以減少呼叫建立時延。

(3) 確定候選地址的優先級并確定缺省地址。

(4) 生成響應消息,并反饋給主叫端。

1.2.5 生成檢測列表

經過地址收集后,客戶端擁有雙方的所有候選地址。在對這些地址進行配對、計算地址對優先級并按照優先級排序后,將地址對的本地地址由其基地址代替,剔除重復的地址對,生成檢測列表。使用公式Pp=232×min(G,D)+2×max(G,D)+(G>D?1:0)來計算地址對的優先級。式中:G和D分別代表地址對中本地和遠端地址的優先級[9]。

1.2.6 狀態轉換

地址對一共有五種狀態,分別為等待、運行、成功、失敗、凍結。ICE運行期間,地址對的狀態將按照圖1所示那樣在各狀態間轉換。

圖1 地址對狀態遷移

1.2.7 連通性測試

對地址對進行測試時客戶端將請求從處于等待狀態的地址對中的本地地址發往其遠端地址,對端收到后產生響應,并觸發對同一地址對的測試過程。測試成功的地址對被加入有效列表中,測試過程結束后,有效列表中優先級最高的地址對就是ICE所選中的用來傳輸媒體流的地址對。

測試使用STUN綁定請求,如果測試的地址對其本地地址是服務器反身地址或主機候選地址,則直接由其基地址將請求發出;如果測試的地址對其本地地址為中繼地址,則必須先為對端地址在中繼服務器上建立許可方可使用TURN協議的Send命令和Data命令通過中繼服務器進行連通性測試。包含中繼地址的連通性測試流程如圖2所示。

圖2 利用中繼進行連通性測試

1.2.8 更新缺省候選地址

如果連通性測試所選中的地址跟先前設置的缺省地址不同,則需要再次進行一次信息交互,以便雙方就用于媒體流傳送的地址對達成共識。如果連通性測試所選中的地址對恰巧跟缺省地址對相同,則省去這一步,可直接進入媒體流的傳輸。

1.3 ICE算法實現

1.3.1 ICE協議棧架構

實現后的ICE協議棧架構及類與主要方法如圖3所示。

圖3 ICE協議架構及類與方法總圖

由圖3可知,ICE協議棧可分為四層。其中STUN功能分布于各層,最低層的STUN消息層主要實現STUN消息的表示與解析,這是ICE得以實現的基礎;在事務層STUN則主要進行STUN請求消息的重發和對STUN消息進行認證;在會話層,STUN的主要功能是管理STUN 客戶端和服務器之間的消息交互;在傳輸對象層,STUN提供異步UDP傳輸、獲取NAT映射地址并定時刷新NAT綁定。TURN和ICE這兩種協議分布在會話層和傳輸對象層。在會話層,TURN主要借助STUN會話功能實現其協議邏輯;在傳輸對象層,TURN提供基于中繼服務器的數據收發。

ICE在會話層管理和執行連通性測試,并將測試結果提供給ICE傳輸對象層建立通信接口,以便為應用層提供服務。

1.3.2 加入ICE后的SIP呼叫流程

當將ICE算法集成到SIP呼叫過程后,流程應該是:

(1) SIP終端注冊,ICE初始化,開始收集候選地址并計算優先級,選擇缺省候選地址;

(2) 主叫端生成初始化請求,并通過信令信道發送給被叫;

(3) 被叫在收到請求消息后,用事先收集的地址生成1XX響應并發送給主叫端;

(4) 雙方先后生成檢測隊列并進行連通性檢查;

(5) 為每一個組件都找到一對測試成功的地址對;

(6) 若選出的傳輸地址對與事先選擇的缺省候選地址對不匹配,則發送一個更新請求,否則進入下一步;

(7) 發送180響應并以響鈴提示用戶;

(8) 用戶確認接收后,發送200 OK響應;

(9) 主叫端發送ACK進行確認;

(10) 開始媒體流的傳輸;

(11) 媒體流傳輸完畢后,結束ICE,釋放相關資源。

在實現時為了減少接聽延遲和撥號延遲[4],SIP客戶端在登陸后即開始收集候選地址,在需要時直接使用。

2 實驗驗證

所有測試都在實驗室進行,使用Windows 2003 Server的路由與遠程管理工具和Linux下的iptables來模擬NAT的行為,SIP服務器和TURN服務器分別采用開源的OPENSIPS軟件和turnserver軟件,客戶端則都采用嵌入ICE模塊的軟電話,對通信一方處于NAT之后,雙方處于同一NAT之后,雙方處于不同NAT之后等多種拓撲環境進行雙方通話測試,通過抓包軟件分析可知,該算法在各種環境均能順利完成媒體流的穿越,呼叫建立時延采用多次取平均值的方法,其結果參見表1。

表1 ICE穿越測試結果

拓撲環境測試結果呼叫建立時延 /ms

雙方都位于公網成功363

一方為公網一方為私網成功407

雙方都位于同一私網成功512

雙方位于不同私網成功517

從測試結果可知,在有NAT存在的環境中,使用ICE方案時呼叫建立時延會相應增大,但其時延也是完全可接受的,實驗證實了該方案都可行性。

3 結 語

ICE綜合利用STUN和TURN,在通信雙方之間尋找最佳傳輸路徑,其優勢是顯而易見的,通過在SIP終端中嵌入ICE模塊,使得媒體流可以穿越任何類型的NAT設備,且不需對NAT進行任何的改變,這是它最大的優點。

傳統的穿越方式都有其致命弱點,如STUN需要客戶端自己去判斷所處網絡環境及NAT類型,這實際上是不必要的,而它最大的缺點在于無法在所有網絡拓撲環境中都正常工作;對于TURN方案,由于使用服務器進行中繼,很容易出現丟包或者時延增加等現象,并且隨著業務量的增大,TURN服務器必將成為整個系統的瓶頸,而ICE方式正好彌補了單獨采用STUN或TURN所帶來的不足,它將中繼轉發服務作為優先級最低的服務,從而在最大程度上保證了服務的可靠性和靈活性[8]。此外,ICE方式還支持IPv6協議。綜合所有這些特點,ICE作為一種綜合性解決方案必將有著非常廣闊的應用前景。

參考文獻

[1]周海華,邊恩炯.SIP原理與應用[M].北京:機械工業出版社,2007.

[2]Egevang K,Francis P.The IP Network Address Translator (NAT).http://www.ietf.org/rfc/rfc1631.txt,1994.

[3]Rekhter Y,Moskowitz B,Karrenberg D.Address Allocation for Private Internets[EB/OL].http://www.ietf.org/rfc/rfc1918.txt,1996.

[4]Rosenberg J,Schulzrinne H,Camarillo G.SIP:Session Initiation Protocol.http://www.ietf.org/rfc/rfc3261.txt,2002.

[5]Rosenberg J,Weinberger J,Huitema C.Stun-Simple Tra-versal of User Datagram Protocol (UDP) Through Network Address Translators (NATs).http://www.ietf.org/rfc/rfc3489.txt,2003.

[6]Rosenberg J,Mahy R,Matthews P.Session Traversal Utilities for NAT(STUN).http://www.ietf.org/rfc/rfc5389.txt,2008.

[7]Session Traversal Utilities for NAT(STUN)draft-ietf-behave-turn-15.http://www.ietf.org/internet-drafts/draft-ietf-behave-turn-15.txt,2009.

[8]曾立,吳平,高萬林,等.基于ICE方式SIP穿透Symmetric NAT技術研究[J].計算機工程與設計,2005,26(11):3 017-3 020.

[9]Rosenberg J.Interactive Connectivity Establishment (ICE):A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols draft-ietf-mmusic-ice-19.http://www.ietf.org/internet-drafts/draft-ietf-mmusic-ice-19,2007.

[10]Handley M,Jacobson V,Perkins C.SDP:Session Description Protocol.http://www.ietf.org/rfc/rfc3264.txt,2006.

主站蜘蛛池模板: 免费人成视网站在线不卡| 日韩人妻无码制服丝袜视频| 亚洲天堂日韩在线| 成人av专区精品无码国产| 99久久精品久久久久久婷婷| 亚洲一区二区约美女探花| 国产精品黄色片| 91外围女在线观看| 真人高潮娇喘嗯啊在线观看| 重口调教一区二区视频| 国产欧美日韩18| 999国产精品永久免费视频精品久久| 片在线无码观看| 9啪在线视频| 天天视频在线91频| 91精品人妻互换| 一本综合久久| 欧美日韩另类在线| 久久香蕉国产线看观看亚洲片| 久久久久国产一级毛片高清板| 91亚瑟视频| 97国产在线观看| 日韩精品毛片| 免费va国产在线观看| a级毛片免费网站| 国产性生交xxxxx免费| 日韩高清中文字幕| 国产福利在线免费| 高潮爽到爆的喷水女主播视频 | 伊人久久大香线蕉影院| 日韩无码视频播放| 亚洲天堂网视频| 精品国产免费第一区二区三区日韩| 99色亚洲国产精品11p| 色偷偷一区二区三区| 国产精品久久国产精麻豆99网站| 69国产精品视频免费| 亚洲欧美不卡中文字幕| 亚欧成人无码AV在线播放| 亚洲狠狠婷婷综合久久久久| 最新亚洲av女人的天堂| 国产一区二区三区夜色| 亚洲欧洲AV一区二区三区| 99精品伊人久久久大香线蕉| 成人小视频网| 午夜国产不卡在线观看视频| 精品少妇人妻一区二区| 亚洲国产AV无码综合原创| 伊人久综合| 在线一级毛片| 久久久久国产精品免费免费不卡| 亚洲精品制服丝袜二区| JIZZ亚洲国产| 二级特黄绝大片免费视频大片| 亚洲欧美日本国产综合在线 | 久久男人资源站| 欧美色99| 欧美色伊人| 无码一区二区三区视频在线播放| 精品免费在线视频| 亚洲一级毛片在线观播放| 亚洲欧美极品| а∨天堂一区中文字幕| 亚洲伦理一区二区| 国产成人夜色91| 亚洲精品免费网站| 欧美激情一区二区三区成人| 香蕉视频在线精品| 欧美日韩一区二区三区在线视频| 欧美19综合中文字幕| 国产成人免费观看在线视频| 国产国语一级毛片| 57pao国产成视频免费播放| 亚洲精品日产AⅤ| 国产午夜人做人免费视频| 欧美在线一二区| 久久精品丝袜| 玖玖精品在线| 国产精品色婷婷在线观看| 美女被操黄色视频网站| 九九这里只有精品视频| 在线观看免费黄色网址|