專利名稱:Sip呼叫中自適應(yīng)穿越nat的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于媒體數(shù)據(jù)網(wǎng)絡(luò)傳輸技術(shù)領(lǐng)域,具體涉及ー種SIP呼叫中自適應(yīng)穿越NAT的方法。
背景技術(shù):
SIP是會話初始化協(xié)議的縮寫,是ー種用于建立、修改和終止VOIP電話通話的IP電話信號協(xié)議。隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,基于SIP等多媒體信令協(xié)議的語音和視頻通信也得到了廣泛應(yīng)用。在當(dāng)前IPv4環(huán)境下,由于我國IP地址嚴(yán)重缺乏,用戶必須使用帶有NAT功能的網(wǎng)絡(luò)接入設(shè)備,從而使用私有地址擴(kuò)展其地址空間。NAT設(shè)備帶來ー個問題,處于不同私網(wǎng)中的SIP用戶,媒體數(shù)據(jù)卻無法完成互通。 目前解決私網(wǎng)穿越問題主要有STUN、TURN等協(xié)議。STUN (Simple Traversal ofUDP Through NAT),即UDP對NAT的簡單穿越方式。SIP終端(即STUN Client)向NAT外的STUN Server查詢其映射地址(通常情況下就是公網(wǎng)地址)。終端獲取到公網(wǎng)地址后,并將其填入到SIP消息中,告知對端。由于通過STUN協(xié)議已在NAT上建立的NAT映射表項,故媒體流可順利穿越NAT。STUN的缺點是不支持對稱NAT (Symmetric NAT)類型穿越。TURN (Traversal Using Relay NAT),即通過 Relay 方式穿越 NAT。SIP 終端向TURN Server請求建立中轉(zhuǎn)會話和中轉(zhuǎn)地址,用該地址作為對外的媒體流接收地址,填入到SIP消息中,對端收到消息后,發(fā)送媒體流到該中轉(zhuǎn)地址,即數(shù)據(jù)流經(jīng)過TURN Server進(jìn)行Relay轉(zhuǎn)發(fā),這種方式可解決所有的NAT穿越問題,但所有的媒體數(shù)據(jù)需要經(jīng)過TURNServer轉(zhuǎn)發(fā),増加了中轉(zhuǎn)服務(wù)器的成本開銷。由于STUN無法完成所有情況的NAT穿越,而TURN雖然可以解決穿越問題,但全部使用這種方式會大量消耗服務(wù)器資源,本發(fā)明因此而來。
發(fā)明內(nèi)容
本發(fā)明目的在于提供ー種SIP呼叫中自適應(yīng)穿越NAT的方法,解決了現(xiàn)有技術(shù)中STUN無法完成所有情況的NAT穿越,而TURN雖然可以解決穿越問題,但全部使用這種方式會大量消耗服務(wù)器資源等問題。為了解決現(xiàn)有技術(shù)中的這些問題,本發(fā)明提供的技術(shù)方案是ー種SIP呼叫中自適應(yīng)穿越NAT的方法,其穿越的公共網(wǎng)絡(luò)上設(shè)置有同時具備STUN Server和TURN Server功能的中轉(zhuǎn)服務(wù)器,其特點在于所述方法包括以下步驟(I)呼叫發(fā)起方向呼叫接收方發(fā)起呼叫時,先到中轉(zhuǎn)服務(wù)器上獲取公網(wǎng)地址和中轉(zhuǎn)地址,然后在呼叫請求中攜帯公網(wǎng)地址、中轉(zhuǎn)地址和本身的私網(wǎng)地址至呼叫接收方;(2)呼叫接收方收到呼叫請求后,先獲取本地媒體地址,并通過中轉(zhuǎn)服務(wù)器獲取相應(yīng)的公網(wǎng)地址,然后將呼叫請求中的私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址取出,通過媒體地址分別向私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址發(fā)送網(wǎng)絡(luò)狀況測試包;(3)呼叫接收方收到網(wǎng)絡(luò)狀況測試包的響應(yīng)包時或者等待超時時,根據(jù)對方私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址的到達(dá)記錄或往返時延RTT確定呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型;(4)呼叫發(fā)起方收到應(yīng)答后,根據(jù)呼叫接收方應(yīng)答信息選擇的網(wǎng)絡(luò)地址類型進(jìn)行媒體數(shù)據(jù)傳輸。優(yōu)選的,所述方法步驟(3)中當(dāng)呼叫接收方收到網(wǎng)絡(luò)狀況測試包的響應(yīng)包,表明向私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址的網(wǎng)絡(luò)暢通,則設(shè)置呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型的優(yōu)先級次序是先私網(wǎng)地址,再之公網(wǎng)地址,次之中轉(zhuǎn)地址。優(yōu)選的,所述方法步驟(3)中當(dāng)呼叫接收方等待超時時,計算向私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址發(fā)送測試包的RTT值,并按RTT值進(jìn)行排序,選取RTT值最小的地址作為呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型。
優(yōu)選的,所述方法步驟(4)中當(dāng)呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型為私網(wǎng)地址或公網(wǎng)地址時,呼叫發(fā)起方直接向其目的地址發(fā)送媒體數(shù)據(jù),并刪除中轉(zhuǎn)服務(wù)器上的會話;如果呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型是中轉(zhuǎn)地址,呼叫發(fā)起方則向中轉(zhuǎn)地址發(fā)送數(shù)據(jù),由中轉(zhuǎn)服務(wù)器進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)給呼叫接收方。優(yōu)選的,所述方法呼叫雙方消息遵循offer/answer模型。本發(fā)明的方法能自適應(yīng)各種網(wǎng)絡(luò)情況,完成NAT穿越,克服了各種NAT穿越技術(shù)存在的不足,能按照用戶設(shè)定的策略自適應(yīng)完成NAT穿越。本發(fā)明的技術(shù)方案采取如下的步驟實現(xiàn)自適應(yīng)網(wǎng)絡(luò)穿越A、在公網(wǎng)上建立一個中轉(zhuǎn)服務(wù)器(包含STUN Server和TURN Server的功能),可用于終端獲取公網(wǎng)地址(地址包含IP和端ロ)及轉(zhuǎn)發(fā)數(shù)據(jù);B、假定呼叫中INVITE和200 OK分別攜帶SDP Offer和Answer。主叫發(fā)起呼叫時,先到中轉(zhuǎn)服務(wù)器上獲取公網(wǎng)地址和中轉(zhuǎn)地址,然后將這兩個地址和私網(wǎng)地址,通過SDP中的擴(kuò)展屬性,攜帯至被叫;C、被叫收到呼叫后,首先獲取本地媒體地址,并通過中轉(zhuǎn)服務(wù)器獲取相應(yīng)的公網(wǎng)地址,然后將SDP其中的私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址取出,通過媒體地址給這三個地址各發(fā)ー組測試包,測試其網(wǎng)絡(luò)狀況;D、被叫收到測試響應(yīng)包或等待超時后,記錄三個地址是否可達(dá)和往返時延RTT,再按照用戶設(shè)定的策略確定最后的目的地址。對于可達(dá)地址,有兩種選取策略①按私網(wǎng) > 公網(wǎng)〉中轉(zhuǎn)優(yōu)先級從高到低來選??;②按RTT值來排序,選取RTT值最小的地址;被叫在構(gòu)造SDP時,在SDP中標(biāo)識選定的地址類型,同時根據(jù)該地址類型設(shè)定其媒體地址如果選定地址類型為私網(wǎng)地址,攜帯被叫的私網(wǎng)地址,否則攜帶公網(wǎng)地址;E.主叫收到應(yīng)答后,分析被叫SDP中選擇的網(wǎng)絡(luò)地址類型如果是私網(wǎng)或公網(wǎng),則直接向其目的地址發(fā)送媒體數(shù)據(jù),并刪除中轉(zhuǎn)服務(wù)器上的會話;如果是中轉(zhuǎn),則向中轉(zhuǎn)地址發(fā)送數(shù)據(jù),由中轉(zhuǎn)服務(wù)器進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。相對于現(xiàn)有技術(shù)中的方案,本發(fā)明的優(yōu)點是本發(fā)明綜合利用了 STUN和TURN的優(yōu)點,對NAT設(shè)備情況能進(jìn)行自適應(yīng)分析,判定得出最優(yōu)媒體傳輸路徑,來完成NAT穿越。有如下優(yōu)點1、通過檢測網(wǎng)絡(luò)狀況,按照優(yōu)先級順序,選出最優(yōu)媒體傳輸路徑;2、能按照用戶的實際情況來設(shè)定優(yōu)先級策略,如果使用網(wǎng)絡(luò)類型排序策略,可降低中轉(zhuǎn)服務(wù)器的使用成本,如果使用RTT值排序策略,則可以使媒體傳輸質(zhì)量達(dá)到最優(yōu);3、使用SDP的擴(kuò)展屬性,不會破壞其標(biāo)準(zhǔn)性。
下面結(jié)合附圖及實施例對本發(fā)明作進(jìn)ー步描述圖I是本發(fā)明實施例的系統(tǒng)網(wǎng)絡(luò)架構(gòu)示意圖;圖2是本發(fā)明實施例主叫的呼叫處理流程圖;圖3是本發(fā)明實施例被叫的呼叫處理流程圖。
具體實施方式
以下結(jié)合具體實施例對上述方案做進(jìn)ー步說明。應(yīng)理解,這些實施例是用于說明本發(fā)明而不限于限制本發(fā)明的范圍。實施例中采用的實施條件可以根據(jù)具體廠家的條件做進(jìn)ー步調(diào)整,未注明的實施條件通常為常規(guī)實驗中的條件。實施例本實施例在SIP終端發(fā)起呼叫時,通過中轉(zhuǎn)服務(wù)器獲取本端的公網(wǎng)地址(地址包含IP和端ロ)和中轉(zhuǎn)地址,和私網(wǎng)地址一起,發(fā)送到對端;對端對這三個地址進(jìn)行探測,并從可達(dá)地址中按用戶設(shè)定的策略選取最優(yōu)目的地址,并通過SIP消息告知呼叫發(fā)起端。地址選擇策略包含兩種1、按私網(wǎng) > 公網(wǎng) > 中轉(zhuǎn)優(yōu)先級從高到低來選取,可盡量減少對中轉(zhuǎn)服務(wù)器的依賴;2、按RTT值來排序,選取RTT值最小的地址,可以使媒體傳輸質(zhì)量達(dá)到最佳。這樣,SIP終端可在所有的網(wǎng)絡(luò)情況下完成NAT穿越,井根據(jù)網(wǎng)絡(luò)情況自適應(yīng)選擇最佳傳輸路徑,盡可能滿足用戶各策略的需求。RTT值計算方法發(fā)送端在時間tl向接收端發(fā)送測試包,接收端收到測試包立即發(fā)送響應(yīng)包,發(fā)送端在時間t2收到響應(yīng)包,RTT值就是t2-tl的值。參見附圖1,它是本系統(tǒng)的網(wǎng)絡(luò)架構(gòu)圖。由圖I可見,完成NAT穿越時,數(shù)據(jù)流可以走TURN中轉(zhuǎn)方式,也可以走STUN方式。需要用戶策略根據(jù)網(wǎng)絡(luò)類型優(yōu)先級選取目標(biāo)地址。參見附圖2,SIP終端A發(fā)起呼叫時,獲取到本地的IP = Port為172. 16. 123. 156:15001,然后向中轉(zhuǎn)服務(wù)器發(fā)送 Binding Request 和 AllocateRequest消息,來獲取公網(wǎng)地址和轉(zhuǎn)發(fā)地址。收到Binding Response,可得到公網(wǎng)IPiPort 為 218. 16. 12. 142:7805 ;收到 Allocate Response,可得到轉(zhuǎn)發(fā) IPiPort 為211.133. 52.12:10012。將這三個地址填入到SDP中,發(fā)送至SIP終端B。該SDP內(nèi)容如下v=0o=termA O O IN IP4 172. 16. 123. 156S=-c=IN IP4 172. 16. 123. 156a=stunip: 218. 16. 12. 142a=turnip:211. 133. 52. 12t=0 0m=audio 15001 RTP/AVP 0a=stunport:7805a=turnport:10012
a=rtpmap:0 PCMU/8000a=ptime: 20參見附圖3,SIP終端B獲取到終端A的呼叫(包含SDP)后,獲取本地私網(wǎng)IP = Port為192. 168. O. 12:12003,并通過Binding Request向中轉(zhuǎn)服務(wù)器獲取到公網(wǎng)IPiPort為183. 105. 23. 16:9556。然后獲取終端A的私網(wǎng)、公網(wǎng)、轉(zhuǎn)發(fā)地址后,進(jìn)行網(wǎng)絡(luò)探測,并設(shè)定探測超時時長為I秒。探測I秒超時后,發(fā)現(xiàn)沒有收到終端A私網(wǎng)地址的響應(yīng)包,但收到公網(wǎng)地址218. 16. 12. 142:7805和轉(zhuǎn)發(fā)地址211. 133. 52. 12:10012的響應(yīng)包,并計算出RTT值分別為523和210暈秒。假定用戶策略為按私網(wǎng)〉公網(wǎng) > 中轉(zhuǎn)優(yōu)先級從高到低來選取,由于私網(wǎng)不同,則會 選擇終端A的公網(wǎng)IP = Port作為媒體傳輸目的地址,在SDP的S行標(biāo)記為stun,并攜帶其公網(wǎng)IP:Port,回響應(yīng)消息告知主叫。這樣可避免使用中轉(zhuǎn)服務(wù)器進(jìn)行轉(zhuǎn)發(fā)。終端B發(fā)出的SDP 為v=0o=termB O O IN IP4 183. 105. 23. 16s=stunc=IN IP4 183. 105. 23. 16t=0 Om=audio 9556 RTP/AVP 0a=rtpmap:OPCMU/8000a=ptime: 20假定用戶策略為選取RTT值最小的地址作為目標(biāo)地址,而且SIP終端A和B分別處于電信和聯(lián)通的網(wǎng)絡(luò)中,而中轉(zhuǎn)服務(wù)器位于電信和聯(lián)通的雙通機(jī)房中。根據(jù)選取策略,與終端A轉(zhuǎn)發(fā)地址211. 133.52. 12:10012的RTT值最小,被叫選擇該轉(zhuǎn)發(fā)地址作為媒體傳輸目的地址,在SDP的S行標(biāo)記為turn,并攜帶其公網(wǎng)IP:Port,然后回響應(yīng)消息告知主叫。這樣雖然會消耗中轉(zhuǎn)服務(wù)器的資源,但能是媒體傳輸質(zhì)量達(dá)到最優(yōu),保證用戶的體驗效果。終端B發(fā)出的SDP為v=0o=termB O O IN IP4 183. 105. 23. 16s=turnc=IN IP4 183. 105. 23. 16t=0 0m=audio 9556 RTP/AVP 0a=rtpmap:0 PCMU/8000a=ptime: 20上述實例只為說明本發(fā)明的技術(shù)構(gòu)思及特點,其目的在于讓熟悉此項技術(shù)的人是能夠了解本發(fā)明的內(nèi)容并據(jù)以實施,并不能以此限制本發(fā)明的保護(hù)范圍。凡根據(jù)本發(fā)明精神實質(zhì)所做的等效變換或修飾,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種SIP呼叫中自適應(yīng)穿越NAT的方法,其穿越的公共網(wǎng)絡(luò)上設(shè)置有同時具備STUNServer和TURN Server功能的中轉(zhuǎn)服務(wù)器,其特點在于所述方法包括以下步驟 (1)呼叫發(fā)起方向呼叫接收方發(fā)起呼叫時,先到中轉(zhuǎn)服務(wù)器上獲取公網(wǎng)地址和中轉(zhuǎn)地址,然后在呼叫請求中攜帶公網(wǎng)地址、中轉(zhuǎn)地址和本身的私網(wǎng)地址至呼叫接收方; (2)呼叫接收方收到呼叫請求后,先獲取本地媒體地址,并通過中轉(zhuǎn)服務(wù)器獲取相應(yīng)的公網(wǎng)地址,然后將呼叫請求中的私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址取出,通過媒體地址分別向私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址發(fā)送網(wǎng)絡(luò)狀況測試包; (3)呼叫接收方收到網(wǎng)絡(luò)狀況測試包的響應(yīng)包時或者等待超時時,根據(jù)對方私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址的到達(dá)記錄或往返時延RTT確定呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型; (4)呼叫發(fā)起方收到應(yīng)答后,根據(jù)呼叫接收方應(yīng)答信息選擇的網(wǎng)絡(luò)地址類型進(jìn)行媒體數(shù)據(jù)傳輸。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于所述方法步驟(3)中當(dāng)呼叫接收方收到網(wǎng)絡(luò)狀況測試包的響應(yīng)包,表明向私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址的網(wǎng)絡(luò)暢通,則設(shè)置呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型的優(yōu)先級次序是先私網(wǎng)地址,再之公網(wǎng)地址,次之中轉(zhuǎn)地址。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于所述方法步驟(3)中當(dāng)呼叫接收方等待測試響應(yīng)包超時時,計算向私網(wǎng)地址、公網(wǎng)地址和中轉(zhuǎn)地址發(fā)送測試包的RTT值,并按RTT值進(jìn)行排序,選取RTT值最小的地址作為呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于所述方法步驟(4)中當(dāng)呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型為私網(wǎng)地址或公網(wǎng)地址時,呼叫發(fā)起方直接向其目的地址發(fā)送媒體數(shù)據(jù),并刪除中轉(zhuǎn)服務(wù)器上的會話;如果呼叫應(yīng)答時的網(wǎng)絡(luò)地址類型是中轉(zhuǎn)地址,呼叫發(fā)起方則向中轉(zhuǎn)地址發(fā)送數(shù)據(jù),由中轉(zhuǎn)服務(wù)器進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)給呼叫接收方。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于所述方法呼叫雙方消息遵循offer/answer 模型。
全文摘要
本發(fā)明公開了一種SIP呼叫中自適應(yīng)穿越NAT的方法,通過對NAT設(shè)備情況能進(jìn)行自適應(yīng)分析,判定得出最優(yōu)媒體傳輸路徑,來完成NAT穿越。該方法可以通過檢測網(wǎng)絡(luò)狀況,按照優(yōu)先級順序,選出最優(yōu)媒體傳輸路徑;能按照用戶的實際情況來設(shè)定優(yōu)先級策略,如果使用網(wǎng)絡(luò)類型排序策略,可降低中轉(zhuǎn)服務(wù)器的使用成本,如果使用RTT值排序策略,則可以使媒體傳輸質(zhì)量達(dá)到最優(yōu);使用SDP的擴(kuò)展屬性,不會破壞其標(biāo)準(zhǔn)性。
文檔編號H04L29/12GK102664901SQ20121014936
公開日2012年9月12日 申請日期2012年5月15日 優(yōu)先權(quán)日2012年5月15日
發(fā)明者蘭玉杰, 陳星星 申請人:蘭玉杰, 蘇州工業(yè)園區(qū)云視信息技術(shù)有限公司