两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法

文檔序號:7960140閱讀:131來源:國知局
專利名稱:基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法
技術(shù)領(lǐng)域
本發(fā)明屬于計算機網(wǎng)絡技術(shù)領(lǐng)域,它涉及基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法。
背景技術(shù)
一個會話(Session)是指用戶間的數(shù)據(jù)交換過程,互聯(lián)網(wǎng)上大量的應用都需要使用會話的創(chuàng)建與管理功能,這也是IETF提出會話初始化協(xié)議(Session Initiation Protocol,簡稱會話初始化協(xié)議)的初衷。在IETF定義的網(wǎng)絡協(xié)議體系結(jié)構(gòu)中,會話初始化協(xié)議協(xié)議是位于傳輸層之上的應用層協(xié)議,通過攜帶可選的SDP(Session DescriptionProtocol)載荷,會話初始化協(xié)議協(xié)議可以輕松地開啟/關(guān)閉會話、協(xié)商會話參數(shù)、建立數(shù)據(jù)交換流以及管理會話。
在會話初始化協(xié)議協(xié)議中定義了四種網(wǎng)絡元素1.用戶代理(User Agent,簡稱UA)負責發(fā)送請求與接受響應;2.代理服務器(Proxy)專門用于轉(zhuǎn)發(fā)會話初始化協(xié)議消息,進行會話初始化協(xié)議路由;3.注冊服務器(Registrar)則用于登記用戶的登陸位置;4.重定向服務器(Redirect Server)管理并通知用戶的當前登錄位置。
因此可以將會話初始化協(xié)議網(wǎng)絡元素劃分為客戶端與服務端,在當前大多數(shù)的會話初始化協(xié)議實現(xiàn)中,也往往把用戶代理放在個人主機上,譬如KPhone,把代理服務器、注冊服務器與重定向服務器作為一個整體服務器實現(xiàn),如SER。對于后三者,會話初始化協(xié)議協(xié)議并沒有規(guī)定如何實現(xiàn),以及它們之間使用的通信協(xié)議,我們將統(tǒng)一用代理服務器代表代理服務器、注冊服務器、重定向服務器的統(tǒng)一體。
IETF在設(shè)計會話初始化協(xié)議協(xié)議時廣泛借鑒了已有的互聯(lián)網(wǎng)協(xié)議,譬如HTTP、SMTP等,采用了基于文本的編碼方式,這是會話初始化協(xié)議協(xié)議的最大特點之一。會話初始化協(xié)議的標準(RFC 3261)主要介紹了會話初始化協(xié)議的消息格式、如何進行通信以及消息的轉(zhuǎn)發(fā)機制,會話初始化協(xié)議最大的特點就是提供在應用層定位通信對方的能力以及消息在應用層的路由機制,這是會話初始化協(xié)議靈活性的重要體現(xiàn),然而在應用層數(shù)據(jù)中包含大量的地址信息,也是造成會話初始化協(xié)議穿越網(wǎng)絡地址轉(zhuǎn)換困難的根本原因。網(wǎng)絡地址轉(zhuǎn)換技術(shù)就是解決互聯(lián)網(wǎng)地址匱乏與主機訪問互聯(lián)網(wǎng)需求之間矛盾的方式之一,它通過把內(nèi)部地址映射成合法的外部地址或者端口,來實現(xiàn)內(nèi)外的連接。傳統(tǒng)的網(wǎng)絡地址轉(zhuǎn)換設(shè)備至多包含傳輸層以下的轉(zhuǎn)換,即僅轉(zhuǎn)換數(shù)據(jù)包中IP頭的地址信息或者包括TCP/UDP頭的端口信息,以此實現(xiàn)內(nèi)外網(wǎng)絡通信的方法。然而在會話初始化協(xié)議消息中包含了大量而必要的地址信息,這些信息可以用于在會話初始化協(xié)議網(wǎng)絡元素中進行應用層路由,同時會話初始化協(xié)議消息作為應用層的協(xié)議,是攜帶在TCP包或者UDP包中的。因此很明顯,網(wǎng)絡地址轉(zhuǎn)換設(shè)備對于轉(zhuǎn)發(fā)類似于會話初始化協(xié)議的應用層消息,特別是在消息中攜帶了地址信息,并且用于消息路由的報文,是無能為力的,會話初始化協(xié)議消息只能在內(nèi)部或者只能在外部互聯(lián)網(wǎng)上傳輸,一旦跨越網(wǎng)絡地址轉(zhuǎn)換,則該消息就將無法使用,因為內(nèi)部網(wǎng)絡的地址是無法被外部網(wǎng)絡所識別,并正確轉(zhuǎn)發(fā)的。
從會話初始化協(xié)議協(xié)議的提出開始,研究人員就開始關(guān)注會話初始化協(xié)議穿越網(wǎng)絡地址轉(zhuǎn)換的問題。由于其中轉(zhuǎn)換涉及大量的會話初始化協(xié)議語義分析,其所攜帶的會話描述協(xié)議(SDP)載荷往往用于開啟之后的數(shù)據(jù)流,在網(wǎng)絡地址轉(zhuǎn)換上需要創(chuàng)建至少兩條以上的地址映射,分別用于會話初始化協(xié)議會話與RTP通信,因此會話初始化協(xié)議網(wǎng)絡地址轉(zhuǎn)換的穿越方案中考慮最多的是效率問題。目前,會話初始化協(xié)議穿越網(wǎng)絡地址轉(zhuǎn)換的實現(xiàn)方法各異有的直接在網(wǎng)絡地址轉(zhuǎn)換上實現(xiàn)會話初始化協(xié)議應用層網(wǎng)關(guān),有的通過擴展會話初始化協(xié)議協(xié)議,還有的則使用網(wǎng)絡地址轉(zhuǎn)換穿越協(xié)議,譬如STUN、MidCom、ICE等。然而這些方法實際上都對網(wǎng)絡地址轉(zhuǎn)換網(wǎng)絡的拓撲進行了假設(shè)在內(nèi)網(wǎng)至少有一個服務器代理與外部的通信,這個服務器可能是代理服務器,也有可能是STUN、ICE客戶端等等,即使使用擴展會話初始化協(xié)議的方案也需要會話初始化協(xié)議客戶端軟件的支持。這極大限制了會話初始化協(xié)議網(wǎng)絡實施的靈活性與擴展性,也限制了會話初始化協(xié)議應用的推廣。

發(fā)明內(nèi)容
本發(fā)明的目的是解決使用傳統(tǒng)方案進行會話初始化協(xié)議穿越網(wǎng)絡地址轉(zhuǎn)換時,對網(wǎng)絡拓撲以及應用系統(tǒng)的諸多限制,同時也有助于解決網(wǎng)關(guān)設(shè)備存儲利用率與分析處理效率低的問題,為了實現(xiàn)上述目的,本發(fā)明提供了一種高效而且透明的基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法。
本發(fā)明基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法,包括步驟相關(guān)頭域字段解析步驟網(wǎng)絡地址轉(zhuǎn)換(NAT)設(shè)備對接收到的會話初始化協(xié)議(SIP)報文中網(wǎng)絡地址轉(zhuǎn)換路由相關(guān)頭域字段進行解析;堆棧組成步驟將各類路由相關(guān)的頭域字段按頭域類型的不同組成不同的堆棧;堆棧存放步驟將會話初始化協(xié)議報文利用路由相關(guān)的類頭域字段路由所經(jīng)過的各個會話初始化協(xié)議節(jié)點的IP地址存放在堆棧中;會話初始化協(xié)議節(jié)點定位步驟在堆棧中,將網(wǎng)絡地址轉(zhuǎn)換設(shè)備前后相鄰的會話初始化協(xié)議節(jié)點定位;建立映射條目結(jié)合步驟會話初始化協(xié)議消息中的頭域字段中的地址信息,頭域在會話初始化協(xié)議路由中的作用以及會話初始化協(xié)議報文是否首次到達,決定是否為會話初始化協(xié)議類節(jié)點在網(wǎng)絡地址轉(zhuǎn)換表中建立映射條目;建立會話初始化協(xié)議會話步驟當與上述會話初始化協(xié)議消息屬于同一會話的會話初始化協(xié)議報文到達網(wǎng)絡地址轉(zhuǎn)換設(shè)備時,依據(jù)已建立的網(wǎng)絡地址轉(zhuǎn)換映射條目進行相同的分析,替換頭域字段批中的內(nèi)網(wǎng)/外網(wǎng)IP地址,從而完成會話初始化協(xié)議會話的成功建立。
本發(fā)明的優(yōu)點在于1、本發(fā)明的方法解決了傳統(tǒng)會話初始化協(xié)議報文在網(wǎng)絡地址轉(zhuǎn)換穿越時,對網(wǎng)絡地址轉(zhuǎn)換網(wǎng)絡拓撲以及會話初始化協(xié)議應用系統(tǒng)的諸多限制,本發(fā)明將所有系統(tǒng)的變化集中在網(wǎng)絡地址轉(zhuǎn)換設(shè)備的包處理邏輯中,從而保持了會話初始化協(xié)議在網(wǎng)絡地址轉(zhuǎn)換環(huán)境中擴展性與靈活性。
2、本發(fā)明的方法對一個會話初始化協(xié)議會話最多生成兩條網(wǎng)絡地址轉(zhuǎn)換映射條目(分別用于會話初始化協(xié)議、RTP),會話初始化協(xié)議消息中所有類型的,需要進行內(nèi)網(wǎng)/外網(wǎng)地址映射的頭域字段的IP地址,或者需要為其創(chuàng)建新的映射條目,或者源于現(xiàn)存網(wǎng)絡地址轉(zhuǎn)換映射條目,本發(fā)明避免了一些傳統(tǒng)會話初始化協(xié)議穿越網(wǎng)絡地址轉(zhuǎn)換方案需要為每類頭域都耗費網(wǎng)絡地址轉(zhuǎn)換存儲空間的缺陷。
3、本發(fā)明的方法運用構(gòu)造路由堆棧,然后查找堆棧的辦法,將會話初始化協(xié)議的網(wǎng)絡地址轉(zhuǎn)換穿越問題轉(zhuǎn)化為對堆棧中特定元素定位的問題,有助于提高網(wǎng)關(guān)設(shè)備的計算效率。


通過以下結(jié)合附圖的詳細描述,本發(fā)明的上述和其它方面、特征和優(yōu)點將變得更加顯而易見。附圖中圖1是本發(fā)明使用Record-Route棧設(shè)計分析替換算法圖示圖2是本發(fā)明使用Record-Route頭域分析算法流程3是本發(fā)明會話初始化協(xié)議穿越網(wǎng)絡地址轉(zhuǎn)換五類網(wǎng)絡拓撲結(jié)構(gòu)示意4是本發(fā)明會話初始化協(xié)議穿越網(wǎng)絡地址轉(zhuǎn)換五類網(wǎng)絡拓撲結(jié)構(gòu)示意5是本發(fā)明會話初始化協(xié)議穿越網(wǎng)絡地址轉(zhuǎn)換五類網(wǎng)絡拓撲結(jié)構(gòu)示意圖具體實施方式
下面結(jié)合附圖對本發(fā)明作具體說明。應該指出,所描述的施例僅僅視為說明的目的,而不是對本發(fā)明的限制。
圖1是本發(fā)明基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法使用Record-Route棧設(shè)計分析替換算法圖示,以Record-Route頭域分析為例,介紹“棧模式”的分析過程;圖2是本發(fā)明基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法Record-Route頭域分析算法流程圖,則是經(jīng)過總結(jié)后的Record-Route頭域的處理流程;頭域字段是分析的基本單位,在互聯(lián)網(wǎng)工程任務組(IETF)提出的RFC 3261(會話初始化協(xié)議Session Initiation Protocol)中明確指出會話初始化協(xié)議消息的最基本單位是消息頭域(會話初始化協(xié)議Header),每個消息頭域有自己的名稱,通常在一行文本中表示成namevalue的形式,并且使用與HTTP類似的語法。會話初始化協(xié)議消息以開始行(start-line)開始,請求消息的開始行為請求行(request-line),而響應消息的開始行為狀態(tài)行(status-line)。最后會話初始化協(xié)議消息可以攜帶會話描述協(xié)議(SDP)載荷,以此協(xié)商RTP參數(shù)。
根據(jù)本發(fā)明技術(shù)方案,所述的網(wǎng)絡地址轉(zhuǎn)換相關(guān)的頭域字段步驟包括Contact、Content-Length、Content-Type、From、Record-Route、Route、To、Via、CSeq、Expires共10個頭域字段,其中Content-Length與Content-Type是與SDP消息解析相關(guān)聯(lián)的頭域字段,Cseq僅在響應中判斷該響應消息所對應的請求類型,本身不做任何修改,Expires表示通信地址的時效,只是用于提供網(wǎng)絡地址轉(zhuǎn)換為會話初始化協(xié)議消息建立映射條目的超時信息,也無須修改。此外請求消息的請求行也攜帶著通信對方的請求統(tǒng)一資源定位符(Request URI),作為唯一標識通信主體的記號,可能包含主機的地址信息,也需要轉(zhuǎn)換。對于會話初始化協(xié)議消息的消息體部分——會話描述協(xié)議SDP)載荷的分析涉及RTP地址的轉(zhuǎn)換,在實現(xiàn)中對它單獨設(shè)計,不屬于本發(fā)明的內(nèi)容。對于不屬于網(wǎng)絡地址轉(zhuǎn)換分析范圍的頭域,一律予以跳過,以提高效率,這樣分析的范圍就限制在Contact、Record-Route、Route、From、To、Via、RequestURI這7個字段中。
根據(jù)本發(fā)明技術(shù)方案,在所述的堆棧組成步驟中,將與路由相關(guān)的頭域字段按類型的不同組成不同堆棧的實現(xiàn)過程包括堆棧步驟將網(wǎng)絡地址轉(zhuǎn)換設(shè)備接收到的會話初始化協(xié)議消息中的路由相關(guān)的頭域字段(Via、Record-Route、Route),按照在會話初始化協(xié)議消息中出現(xiàn)的先后順序排列成一個堆棧,位置靠前的為棧頂,表示最后經(jīng)過的會話初始化協(xié)議節(jié)點;位置靠后的為棧底,表示最早經(jīng)過的會話初始化協(xié)議節(jié)點,先進先出。
分析步驟將該棧放入網(wǎng)絡地址轉(zhuǎn)換環(huán)境中分析,分析內(nèi)容包括分析當前堆棧的特征與形式,定位網(wǎng)絡地址轉(zhuǎn)換所分隔的內(nèi)外網(wǎng)分界線位置;棧中表示與網(wǎng)絡地址轉(zhuǎn)換相鄰節(jié)點在會話初始化協(xié)議消息路由的具體作用;這些節(jié)點應該做怎樣的內(nèi)外地址轉(zhuǎn)換才能保證本次消息、以及后繼消息都可以順利通過網(wǎng)絡地址轉(zhuǎn)換設(shè)備;根據(jù)本發(fā)明技術(shù)方案,在所述的堆棧步驟中,Via、Record-Route、Route頭域字段在會話初始化協(xié)議路由機制中的行為非常類似,具體為在首次路由發(fā)現(xiàn)過程中,會話初始化協(xié)議協(xié)議將所經(jīng)過的每個中間元素(代理服務器或者提供轉(zhuǎn)發(fā)功能的用戶代理)地址依次記錄到某類頭域字段中,添加到會話初始化協(xié)議消息中,此后的實際路由中,中間元素每收到一條會話初始化協(xié)議消息,檢查當前會話初始化協(xié)議消息頭域字段中的第一個地址是否指向自身,若是則從會話初始化協(xié)議消息中刪除指向自身的地址記錄,把新消息轉(zhuǎn)發(fā)給當前會話初始化協(xié)議消息頭域字段中第一個元素所指向的主機。
根據(jù)本發(fā)明技術(shù)方案,在所述會話初始化協(xié)議節(jié)點定位步驟中在堆棧中定位及為會話初始化協(xié)議類節(jié)點在網(wǎng)絡地址轉(zhuǎn)換表中建立映射條目的實現(xiàn)過程如下堆棧查找步驟在堆棧中查找連續(xù)的兩個元素,其中一個元素記錄的IP地址信息屬于外網(wǎng),另一個元素記錄的IP地址信息則屬于內(nèi)網(wǎng),出現(xiàn)這樣特征的堆棧表示這兩個元素位于網(wǎng)絡地址轉(zhuǎn)換設(shè)備附近;分析節(jié)點步驟根據(jù)會話初始化協(xié)議消息的類型、頭域字段的類型,分析這兩個元素是位于網(wǎng)絡地址轉(zhuǎn)換設(shè)備兩側(cè)的節(jié)點,還是位于同一網(wǎng)絡,最接近網(wǎng)絡地址轉(zhuǎn)換設(shè)備的兩個節(jié)點,以及位于哪個網(wǎng)絡;確定位置步驟根據(jù)分析節(jié)點步驟分析得出在該會話初始化協(xié)議報文的路由線路上,與網(wǎng)絡地址轉(zhuǎn)換設(shè)備最接近、份處于內(nèi)網(wǎng)與外網(wǎng)的兩個節(jié)點,從而獲得堆棧中表示內(nèi)網(wǎng)與外網(wǎng)的分界線位置;地址替換步驟根據(jù)會話初始化協(xié)議后繼消息使用頭域路由的方式不同,確定這兩個節(jié)點中誰需要進行內(nèi)網(wǎng)/外網(wǎng)地址替換,用需要替換的節(jié)點網(wǎng)絡地址查詢網(wǎng)絡地址轉(zhuǎn)換的內(nèi)網(wǎng)/外網(wǎng)地址映射表,若表中不存在相應記錄,則需要為其創(chuàng)建一條新的映射條目,用該映射地址替換對應會話初始化協(xié)議消息報文中的頭域字段;轉(zhuǎn)發(fā)步驟對在所有類型頭域分析、修改,將新的會話初始化協(xié)議報文轉(zhuǎn)發(fā)給目的地址。
根據(jù)本發(fā)明技術(shù)方案,在所述的建立映射條目結(jié)合步驟中依據(jù)已建立的網(wǎng)絡地址轉(zhuǎn)換映射條目,進行內(nèi)網(wǎng)/外網(wǎng)IP地址替換的實現(xiàn)過程如執(zhí)行會話初始化協(xié)議節(jié)點定位步驟,差別在于執(zhí)行地址替換步驟中不再需要創(chuàng)建新的映射條目,直接查找網(wǎng)絡地址轉(zhuǎn)換設(shè)備中的內(nèi)網(wǎng)/外網(wǎng)地址映射表,用表中的映射地址替換對應會話初始化協(xié)議消息報文中的頭域字段。
根據(jù)本發(fā)明,堆棧組成、分析步驟,具體地,針對本發(fā)明的附圖1,對“棧模式”分析Record-Route頭域過程在一次網(wǎng)絡雙方通訊中,Record-Route頭域在會話初始化協(xié)議消息的路由過程中發(fā)揮的作用就是用于構(gòu)造通信雙方的Route路徑呼叫方首先發(fā)出INVITE請求消息,請求消息在到達對方前,沿途愿意轉(zhuǎn)發(fā)會話初始化協(xié)議請求消息的代理服務器,在收到請求消息后用本機的接收地址、端口構(gòu)造一條新的Record-Route記錄,并插入到會話初始化協(xié)議消息中所有Record-Route頭域前,從而形成一個有序的地址列表。將請求消息中所有Record-Route頭域按在會話初始化協(xié)議消息中的順序設(shè)想為“Record-Route棧”。被呼叫方根據(jù)收到的會話初始化協(xié)議請求消息相應地發(fā)出會話初始化協(xié)議響應消息,Record-Route棧被原封不動地拷貝至響應消息;同時將其倒置作為本次會話被呼叫方與呼叫方通信的Route棧。當響應消息沿原路返回時,呼叫方直接把響應中的Record-Route棧作為Route棧。通信雙方就同時擁有一條中間節(jié)點相同,但是順序相反的路徑,此后二者用各自的Route棧路由會話初始化協(xié)議請求,也就是說呼叫方與被呼叫方后繼發(fā)出的會話初始化協(xié)議請求消息將沿著方向相反的同一條路由線路進行轉(zhuǎn)發(fā)。
圖1中假設(shè)四個代理服務器愿提供轉(zhuǎn)發(fā)服務,分別為RR0、RR1、RR2、RR3,數(shù)字表示其先后順序。虛線為網(wǎng)絡地址轉(zhuǎn)換定義的網(wǎng)域界限,由于呼叫未必始于內(nèi)網(wǎng),所以用網(wǎng)域1、網(wǎng)域2分別指代兩個獨立網(wǎng)絡。因為一次會話初始化協(xié)議會話,包括發(fā)出的請求消息和返回的響應,它們都攜帶著Record-Route記錄,可視作同一個Record-Route棧在整個會話過程中需要進行的兩次內(nèi)網(wǎng)/外網(wǎng)地址轉(zhuǎn)換,第一次轉(zhuǎn)換表示對請求消息中的Record-Route進行轉(zhuǎn)換,第二次則表示對響應消息進行轉(zhuǎn)換,所以下面對應這兩次轉(zhuǎn)換將網(wǎng)絡地址轉(zhuǎn)換接受的會話初始化協(xié)議消息按照是其類型是請求還是響應分別進行分析。
對于網(wǎng)絡地址轉(zhuǎn)換接受的請求當呼叫請求消息首次過網(wǎng)絡地址轉(zhuǎn)換時,Record-Route棧已按序記錄RR0與RR1,此時若不對請求消息轉(zhuǎn)換,則根據(jù)Record-Route的語義,被呼叫方構(gòu)造的Route棧將依次為RR3-RR0,當被呼叫方發(fā)出請求消息時,請求消息到達節(jié)點RR2就會結(jié)束,因為RR2可能不識別網(wǎng)域2的節(jié)點地址RR1。由于這種情況僅出現(xiàn)在網(wǎng)域2為內(nèi)網(wǎng)時(內(nèi)網(wǎng)能識別互聯(lián)網(wǎng)地址),所以網(wǎng)絡地址轉(zhuǎn)換接收到INVITE消息時,檢查Record-Route棧頂?shù)刂肥欠駚碜詢?nèi)網(wǎng),若是則創(chuàng)建網(wǎng)絡地址轉(zhuǎn)換映射條目RR1→RR1’,并替換棧頂?shù)刂?,來自外網(wǎng)則直接轉(zhuǎn)發(fā)。
對于網(wǎng)絡地址轉(zhuǎn)換接受的響應被呼叫方發(fā)出響應,將Record-Route??截惖巾憫卦贩祷?。若呼叫始于內(nèi)網(wǎng),則當響應經(jīng)RR2轉(zhuǎn)發(fā)給網(wǎng)絡地址轉(zhuǎn)換時,要對之前已替換的地址反向替換,否則呼叫方發(fā)出的請求將在節(jié)點RR0轉(zhuǎn)發(fā)給外網(wǎng)RR1’時錯誤;若呼叫始于外網(wǎng),那么網(wǎng)絡地址轉(zhuǎn)換在收到響應時應對棧中位于網(wǎng)域邊緣的RR2構(gòu)造映射RR2→RR2’,否則呼叫方依據(jù)響應建立的Route棧將無法穿越網(wǎng)絡地址轉(zhuǎn)換。通過簡單的內(nèi)外地址辨別可得RR1與RR2位置——兩條連續(xù)RR記錄分屬不同域。
此外還應考慮特例分界點前后僅有一個或無代理服務器的情況。請求依然替換棧頂,對響應處理時分界點的判斷則需調(diào)整。從呼叫方看,網(wǎng)絡地址轉(zhuǎn)換之前若僅一個代理服務器(RR0不存在),若呼叫始于內(nèi)網(wǎng),響應Record-Route棧中將無法發(fā)現(xiàn)分界點,但棧底地址為網(wǎng)絡地址轉(zhuǎn)換分配地址,那么可確定分界點在棧底RR1與之后的RR2之間;若呼叫始于外網(wǎng)判斷法不變。若網(wǎng)絡地址轉(zhuǎn)換之前未架設(shè)代理服務器(無RR0、RR1),呼叫來自內(nèi)網(wǎng),檢查響應的Record-Route棧未發(fā)現(xiàn)內(nèi)網(wǎng)地址或網(wǎng)絡地址轉(zhuǎn)換分配地址,那么棧底必為內(nèi)網(wǎng)地址,必須為其構(gòu)造映射條目并替換;分界點在網(wǎng)絡地址轉(zhuǎn)換之后的情況同理分析。每次至多處理一條Record-Route記錄,剩下的Record-Route字段直接略過,以提高效率。
根據(jù)本發(fā)明,具體地,路由相關(guān)頭域字段解析步驟如圖2所示,Record-Route頭域的具體處理流程如下步驟S1網(wǎng)絡地址轉(zhuǎn)換設(shè)備接收到會話初始化協(xié)議消息,搜索會話初始化協(xié)議消息獲得一條Record-Route頭域字段記錄。
步驟S2網(wǎng)絡地址轉(zhuǎn)換設(shè)備根據(jù)先前分析開始行(start-line),獲得的會話初始化協(xié)議消息的類型是請求還是響應分別處理,請求轉(zhuǎn)入步驟S3,響應轉(zhuǎn)入步驟S4。
步驟S3根據(jù)分析開始行(start-line)可判斷會話初始化協(xié)議消息始于內(nèi)網(wǎng)/外網(wǎng),始于內(nèi)網(wǎng)轉(zhuǎn)入步驟S5,否則轉(zhuǎn)入步驟S14。
步驟S4保存當前Record-Route頭域字段記錄,轉(zhuǎn)入步驟S7。
步驟S5若當前獲得的Record-Route就是棧頂元素,也就是第一條Record-Route記錄那么轉(zhuǎn)入步驟S6,否則轉(zhuǎn)入步驟S14。
步驟S6用Record-Route的IP地址搜索網(wǎng)絡地址轉(zhuǎn)換設(shè)備中的內(nèi)網(wǎng)/外網(wǎng)地址映射表,若不存在相應映射條目,則創(chuàng)建新的映射條目,并替換對應Record-Route頭域字段中的IP地址信息,否則直接用已有的映射條目替換,轉(zhuǎn)入步驟S14。
步驟S7若當前記錄的Record-Route中IP地址與本次消息的目的地址屬于同一網(wǎng)絡,則轉(zhuǎn)入步驟S9,否則轉(zhuǎn)入步驟S8。
步驟S8若在會話初始化協(xié)議消息中,當前Record-Route頭域字段之后還有Record-Route尚未分析,則轉(zhuǎn)入步驟S1,繼續(xù)獲得下一條Record-Route記錄。
步驟S9若本次響應對應的呼叫始于內(nèi)網(wǎng),那么轉(zhuǎn)入步驟S10分析,否則轉(zhuǎn)入步驟S11。
步驟S10若當前記錄的Record-Route的IP地址屬于內(nèi)網(wǎng),而且會話初始化協(xié)議消息中前一個Record-Route記錄屬于外網(wǎng)地址,那么轉(zhuǎn)入步驟S12,否則轉(zhuǎn)入步驟S13。
步驟S11若當前記錄的Record-Route的IP地址屬于外網(wǎng),而且會話初始化協(xié)議消息中前一個Record-Route記錄屬于內(nèi)網(wǎng)地址,那么轉(zhuǎn)入步驟S12,否則轉(zhuǎn)入步驟S13。
步驟S12需要替換前一個Record-Route記錄中的IP地址,首先查詢網(wǎng)絡地址轉(zhuǎn)換中的內(nèi)網(wǎng)/外網(wǎng)映射表,若不存在映射條目,則創(chuàng)建新的映射條目,并替換對應Record-Route頭域字段中的IP地址信息,否則直接用已有的映射條目替換,轉(zhuǎn)入步驟S13。
步驟S13需要替換的是當前的Record-Route記錄的IP地址,執(zhí)行替換操作同步驟S13,轉(zhuǎn)入步驟S14。
步驟S14已經(jīng)完成會話初始化協(xié)議消息中IP地址的網(wǎng)絡地址轉(zhuǎn)換映射與替換,跳過剩余上未分析的Record-Route記錄,結(jié)束對Record-Route頭域的分析。
為了檢驗方案的透明性(也稱完備性),必須驗證其對于任何會話初始化協(xié)議拓撲,都無需會話初始化協(xié)議軟件做任何修改、配置,就能正常通信。因此首先需要找出所有可能的會話初始化協(xié)議網(wǎng)絡地址轉(zhuǎn)換拓撲環(huán)境。在RFC 3261并未對會話初始化協(xié)議的拓撲做出任何規(guī)定,用戶可以采用任意的方式實現(xiàn)會話初始化協(xié)議通信,即對會話初始化協(xié)議路由的中間節(jié)點如何部署不做規(guī)定,那么放入網(wǎng)絡地址轉(zhuǎn)換環(huán)境,將產(chǎn)生大量可能的拓撲,不利于完備性驗證。因此我們采用約減法對所有拓撲模式進行歸納兩臺UA進行通信時,若某個中間節(jié)點所扮演的角色僅僅是在同一網(wǎng)域內(nèi)的會話初始化協(xié)議消息路由,轉(zhuǎn)發(fā)的會話初始化協(xié)議消息并不經(jīng)過網(wǎng)絡地址轉(zhuǎn)換,那么這些位于同一網(wǎng)域的代理服務器就可看作是一個代理服務器節(jié)點。
根據(jù)本發(fā)明所述,可以得到以下五類簡化拓撲,如圖3、圖4、圖5所示附圖3采用拓撲模式為①和②,圖3中有三個用戶代理為用戶代理1、用戶代理2、用戶代理3、內(nèi)網(wǎng)、外網(wǎng)、代理服務器、網(wǎng)絡地址轉(zhuǎn)換設(shè)備網(wǎng)絡地址轉(zhuǎn)換;附圖4拓撲模式為③和④,其它部分表示相同;附圖5拓撲模式為⑤,其它部分表示相同。
在圖中虛線表示實際通信的雙方用戶代理,虛線上方用帶圈數(shù)字表示不同的數(shù)據(jù)流①表示網(wǎng)絡拓撲中唯一的代理服務器位于內(nèi)網(wǎng),分處于內(nèi)外網(wǎng)絡中的用戶代理1與用戶代理2通過代理服務器通話,對應附圖3,帶圈數(shù)字①所表示的數(shù)據(jù)流;②表示用戶代理2與用戶代理3均處于外網(wǎng),但依靠內(nèi)網(wǎng)代理服務器通話,對應附圖3帶圈數(shù)字②所表示的數(shù)據(jù)流;③表示代理服務器位于外網(wǎng),內(nèi)網(wǎng)的用戶代理1與外網(wǎng)的用戶代理3通過代理服務器通話,對應附圖4帶圈數(shù)字③所表示的數(shù)據(jù)流;④表示兩臺處于內(nèi)網(wǎng)的用戶代理1和用戶代理2同時使用外網(wǎng)代理服務器聯(lián)絡,對應附圖4帶圈數(shù)字④所表示的數(shù)據(jù)流;⑤表示用戶代理1和用戶代理2分別位于內(nèi)、外網(wǎng)絡,通過各自域內(nèi)的代理服務器為它們轉(zhuǎn)發(fā)消息,對應附圖5帶圈數(shù)字⑤所表示的數(shù)據(jù)流;上面描述是用于實現(xiàn)本發(fā)明及其實施例,上述各個步驟均為示例,本發(fā)明的范圍不應由實施例的描述來限定,本領(lǐng)域普通技術(shù)人員可以根據(jù)實際情況確定要使用的實際步驟,而且各個步驟的有多種實現(xiàn)方法,這些均應屬于本發(fā)明的范圍。本領(lǐng)域的技術(shù)人員應該理解,在不脫離本發(fā)明的范圍的任何修改或局部替換,均屬于本發(fā)明權(quán)利要求來限定的范圍。
權(quán)利要求
1.一種基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法,其特征在于,其實現(xiàn)方法步驟包括將會話初始化協(xié)議路由機制和具有網(wǎng)絡地址轉(zhuǎn)換的網(wǎng)絡拓撲環(huán)境結(jié)合起來;相關(guān)頭域字段解析步驟利用網(wǎng)絡地址轉(zhuǎn)換設(shè)備對接收到的會話初始化協(xié)議報文中網(wǎng)絡地址轉(zhuǎn)換路由相關(guān)頭域字段進行解析;堆棧組成步驟將各類路由相關(guān)的頭域字段按頭域類型的不同組成不同的堆棧;堆棧存放步驟將會話初始化協(xié)議報文利用路由相關(guān)的類頭域字段路由所經(jīng)過的各個會話初始化協(xié)議節(jié)點的IP地址存放在堆棧中;會話初始化協(xié)議節(jié)點定位步驟在堆棧中,將網(wǎng)絡地址轉(zhuǎn)換設(shè)備前后相鄰的會話初始化協(xié)議節(jié)點定位;建立映射條目結(jié)合步驟會話初始化協(xié)議消息中的頭域字段中的地址信息,頭域在會話初始化協(xié)議路由中的作用以及會話初始化協(xié)議報文是否首次到達,決定是否為會話初始化協(xié)議節(jié)點在網(wǎng)絡地址轉(zhuǎn)換表中建立映射條目;建立會話初始化協(xié)議會話步驟當與上述會話初始化協(xié)議消息屬于同一會話的會話初始化協(xié)議報文到達網(wǎng)絡地址轉(zhuǎn)換設(shè)備時,依據(jù)已建立的網(wǎng)絡地址轉(zhuǎn)換映射條目進行相同的分析,替換頭域字段批中的內(nèi)網(wǎng)/外網(wǎng)IP地址,從而完成會話初始化協(xié)議會話的成功建立。
2.根據(jù)權(quán)利要求1所述的基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法,其特征在于,所述的網(wǎng)絡地址轉(zhuǎn)換相關(guān)的頭域字段步驟包括Contact、Content-Length、Content-Type、From、Record-Route、Route、To、Via、CSeq、Expires,其中Content-Length與Content-Type是與會話描述協(xié)議消息解析相關(guān)聯(lián)的頭域字段;Cseq僅在響應中判斷響應消息所對應的請求類型本身不做任何修改;Expires表示通信地址的時效,是用于提供網(wǎng)絡地址轉(zhuǎn)換為會話初始化協(xié)議消息建立映射條目的超時信息,請求消息的請求行攜帶著通信對方的請求同一資源定位符,作為唯一標識通信主體的記號,可能包含主機的地址信息,也需要轉(zhuǎn)換;對于會話初始化協(xié)議消息的消息體部分會話描述協(xié)議載荷的分析涉及RTP地址的轉(zhuǎn)換;對于不屬于網(wǎng)絡地址轉(zhuǎn)換分析范圍的頭域,一律予以跳過,分析的字段范圍為Contact、Record-Route、Route、From、To、Via、Request URI。
3.根據(jù)權(quán)利要求1所述的基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法,其特征在于,所述的堆棧組成步驟,將與路由相關(guān)的頭域字段按類型的不同組成不同堆棧包括堆棧步驟將網(wǎng)絡地址轉(zhuǎn)換設(shè)備接收到的會話初始化協(xié)議消息中的路由相關(guān)的頭域字段Via、Record-Route、Route,按照在會話初始化協(xié)議消息中出現(xiàn)的先后順序排列成一個堆棧,位置靠前的為棧頂,表示最后經(jīng)過的會話初始化協(xié)議節(jié)點;位置靠后的為棧底,表示最早經(jīng)過的會話初始化協(xié)議節(jié)點,先進先出;分析步驟將所述的堆棧放入網(wǎng)絡地址轉(zhuǎn)換環(huán)境中分析,分析內(nèi)容包括分析當前堆棧的特征與形式,定位網(wǎng)絡地址轉(zhuǎn)換設(shè)備所分隔的內(nèi)外網(wǎng)分界線位置;堆棧中表示與網(wǎng)絡地址轉(zhuǎn)換設(shè)備相鄰節(jié)點在會話初始化協(xié)議消息路由的具體作用;這些節(jié)點應該做怎樣的內(nèi)外地址轉(zhuǎn)換才能保證本次消息、以及后繼消息都可以順利通過網(wǎng)絡地址轉(zhuǎn)換設(shè)備。
4.根據(jù)權(quán)利要求3所述的基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法,其特征在于,在所述的堆棧步驟中,Via、Record-Route、Route頭域字段與在會話初始化協(xié)議路由機制中的行為類似,具體為在首次路由發(fā)現(xiàn)過程中,會話初始化協(xié)議協(xié)議將所經(jīng)過的每個中間元素地址依次記錄到某類頭域字段中,添加到會話初始化協(xié)議消息中,此后的實際路由中,中間元素每收到一條會話初始化協(xié)議消息,檢查當前會話初始化協(xié)議消息頭域字段中的第一個地址是否指向自身,若是則從會話初始化協(xié)議消息中刪除指向自身的地址記錄;把新消息轉(zhuǎn)發(fā)給當前會話初始化協(xié)議消息頭域字段中第一個元素所指向的主機。
5.根據(jù)權(quán)利要求1所述的基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法,其特征在于,在所述的會話初始化協(xié)議節(jié)點定位步驟中,在堆棧中定位及為類節(jié)點在網(wǎng)絡地址轉(zhuǎn)換表中建立映射條目的實現(xiàn)過程如下堆棧查找步驟在堆棧中查找連續(xù)的兩個元素,其中一個元素記錄的IP地址信息屬于外網(wǎng),另一個元素記錄的IP地址信息則屬于內(nèi)網(wǎng),出現(xiàn)這樣特征的堆棧表示這兩個元素位于網(wǎng)絡地址轉(zhuǎn)換設(shè)備附近;分析節(jié)點步驟根據(jù)會話初始化協(xié)議消息的類型、頭域字段的類型,分析這兩個元素是位于網(wǎng)絡地址轉(zhuǎn)換設(shè)備兩側(cè)的節(jié)點,還是位于同一網(wǎng)絡,最接近網(wǎng)絡地址轉(zhuǎn)換設(shè)備的兩個節(jié)點,以及位于哪個網(wǎng)絡;確定位置步驟根據(jù)分析節(jié)點步驟得出在該會話初始化協(xié)議報文的路由線路上,與網(wǎng)絡地址轉(zhuǎn)換設(shè)備最接近、處于內(nèi)網(wǎng)與外網(wǎng)的兩個節(jié)點,從而獲得堆棧中表示內(nèi)網(wǎng)與外網(wǎng)的分界線位置;地址替換步驟根據(jù)會話初始化協(xié)議后繼消息使用頭域路由的方式不同,確定這兩個節(jié)點中誰需要進行內(nèi)網(wǎng)/外網(wǎng)地址替換,用需要替換的節(jié)點網(wǎng)絡地址查詢網(wǎng)絡地址轉(zhuǎn)換的內(nèi)網(wǎng)/外網(wǎng)地址映射表,若表中不存在相應記錄,則需要為其創(chuàng)建一條新的映射條目,用該映射地址替換對應會話初始化協(xié)議消息報文中的頭域字段;轉(zhuǎn)發(fā)步驟對所有類型頭域分析、修改,將新的會話初始化協(xié)議報文轉(zhuǎn)發(fā)給目的地址。
6.根據(jù)權(quán)利要求1所述的基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法,其特征在于在所述的建立映射條目結(jié)合步驟依據(jù)已建立的網(wǎng)絡地址轉(zhuǎn)換映射條目,執(zhí)行會話初始化協(xié)議節(jié)點定位步驟進行內(nèi)網(wǎng)/外網(wǎng)IP地址替換,執(zhí)行地址替換步驟不再需要創(chuàng)建新的映射條目,直接查找網(wǎng)絡地址轉(zhuǎn)換設(shè)備中的內(nèi)網(wǎng)/外網(wǎng)地址映射表,用表中的映射地址替換對應會話初始化協(xié)議消息報文中的頭域字段。
7.根據(jù)權(quán)利要求2所述的基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法,其特征在于路由相關(guān)頭域字段解析步驟,Record-Route頭域的具體處理流程如下步驟S1網(wǎng)絡地址轉(zhuǎn)換設(shè)備接收到會話初始化協(xié)議消息,搜索會話初始化協(xié)議消息獲得一條Record-Route頭域字段記錄;步驟S2網(wǎng)絡地址轉(zhuǎn)換設(shè)備根據(jù)先前分析開始行(start-line),獲得的會話初始化協(xié)議消息的類型是請求還是響應分別處理,請求轉(zhuǎn)入步驟S3,響應轉(zhuǎn)入步驟S4;步驟S3根據(jù)分析開始行(start-line)可判斷會話初始化協(xié)議消息始于內(nèi)網(wǎng)/外網(wǎng),始于內(nèi)網(wǎng)轉(zhuǎn)入步驟S5,否則轉(zhuǎn)入步驟S14;步驟S4保存當前Record-Route頭域字段記錄,轉(zhuǎn)入步驟S7。步驟S5若當前獲得的Record-Route就是棧頂元素,也就是第一條Record-Route記錄,轉(zhuǎn)入步驟S6,否則轉(zhuǎn)入步驟S14;步驟S6用Record-Route的IP地址搜索網(wǎng)絡地址轉(zhuǎn)換設(shè)備中的內(nèi)網(wǎng)/外網(wǎng)地址映射表,若不存在相應映射條目,則創(chuàng)建新的映射條目,并替換對應Record-Route頭域字段中的IP地址信息,否則直接用已有的映射條目替換,轉(zhuǎn)入步驟S14;步驟S7若當前記錄的Record-Route中IP地址與本次消息的目的地址屬于同一網(wǎng)絡,則轉(zhuǎn)入步驟S9,否則轉(zhuǎn)入步驟S8;步驟S8若在會話初始化協(xié)議消息中,當前Record-Route頭域字段之后還有Record-Route尚未分析,則轉(zhuǎn)入步驟S1,繼續(xù)獲得下一條Record-Route記錄;步驟S9若本次響應對應的呼叫始于內(nèi)網(wǎng),轉(zhuǎn)入步驟S10分析,否則轉(zhuǎn)入步驟S11;步驟S10若當前記錄的Record-Route的IP地址屬于內(nèi)網(wǎng),而且會話初始化協(xié)議消息中前一個Record-Route記錄屬于外網(wǎng)地址,轉(zhuǎn)入步驟S12,否則轉(zhuǎn)入步驟S13;步驟S11若當前記錄的Record-Route的IP地址屬于外網(wǎng),而且會話初始化協(xié)議消息中前一個Record-Route記錄屬于內(nèi)網(wǎng)地址,轉(zhuǎn)入步驟S12,否則轉(zhuǎn)入步驟S13;步驟S12需要替換前一個Record-Route記錄中的IP地址,首先查詢網(wǎng)絡地址轉(zhuǎn)換中的內(nèi)網(wǎng)/外網(wǎng)映射表,若不存在映射條目,則創(chuàng)建新的映射條目,并替換對應Record-Route頭域字段中的IP地址信息,否則直接用已有的映射條目替換,轉(zhuǎn)入步驟S13;步驟S13需要替換的是當前的Record-Route記錄的IP地址,執(zhí)行替換操作同步驟S13,轉(zhuǎn)入步驟S14;步驟S14已經(jīng)完成會話初始化協(xié)議消息中IP地址的網(wǎng)絡地址轉(zhuǎn)換映射與替換,跳過剩余上未分析的Record-Route記錄,結(jié)束對Record-Route頭域的分析。
全文摘要
本發(fā)明公開一種基于路由的會話初始化協(xié)議透明穿越網(wǎng)絡地址轉(zhuǎn)換的方法。該方法將會話初始化協(xié)議(SIP)由機制和具有NAT的網(wǎng)絡拓撲環(huán)境結(jié)合,對接收SIP報文解析并與路由相關(guān)的頭域字段以堆棧方式構(gòu)建,該堆棧中存放SIP報文路由所經(jīng)過各個節(jié)點的IP地址;在堆棧中定位與網(wǎng)絡地址轉(zhuǎn)換(NAT)設(shè)備前后相鄰的SIP節(jié)點,為首次出現(xiàn)的節(jié)點在NAT表中建立映射條目;當屬于同一會話的SIP報文到達NAT設(shè)備時,依據(jù)已建立的NAT映射條目對內(nèi)網(wǎng)/外網(wǎng)IP地址替換,完成SIP會話的成功建立。本發(fā)明使SIP應用與服務程序無需任何修改即可應用于各種NAT網(wǎng)絡拓撲,同時可以有效提高NAT設(shè)備存儲利用率與分析處理效率。
文檔編號H04L12/56GK101060472SQ20061007564
公開日2007年10月24日 申請日期2006年4月17日 優(yōu)先權(quán)日2006年4月17日
發(fā)明者陳沫, 蔡嘉勇, 李丹 申請人:中國科學院計算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
固安县| 仪陇县| 黄冈市| 泊头市| 宁武县| 三江| 宁明县| 同江市| 廊坊市| 富裕县| 栾城县| 南城县| 永登县| 启东市| 东源县| 伊宁县| 达拉特旗| 公安县| 电白县| 咸丰县| 盐亭县| 白朗县| 九龙城区| 正蓝旗| 五常市| 沙洋县| 安丘市| 长沙市| 开平市| 遂平县| 无棣县| 乐安县| 手机| 六枝特区| 天等县| 平凉市| 海门市| 安化县| 两当县| 达州市| 敦化市|