《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > SIP ALG穿透NAT的實現

SIP ALG穿透NAT的實現

2008-05-05
作者:沈 軍1,周淑華2,張思發1

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


  會話發起協議SIP[1](Session Initiation Protocol)是由IETF組織于1999年提出的在Internet網絡環境中實現實時通信應用的一種信令協議。SIP引發了現代通信體系結構的變革,然而它卻在視頻能力、會議控制方面沒有一個完善的標準;同時,由于大量企業和駐地網都采用了私有編址[2],并通過網絡地址轉換NAT(Network Address Translation)來控制與公共網絡的通信,而SIP數據包需通過信令消息中的IP地址和端口號" title="端口號">端口號來實現目的地尋址,且它的媒體流" title="媒體流">媒體流端口是動態分配的,這就為在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連接到外部世界。位于內網" title="內網">內網和外網中的NAT路由器在發送數據包之前,負責把內部IP翻譯成外部合法地址。當從外網來的含公網地址信息的數據包到達NAT時,NAT使用預設好的規則(其組元包含源地址、源端口、目的地址、目的端口、協議)來修改數據包,然后再轉發給內網接收點。NAT的基本工作原理如圖1所示,NAT設備實際上是在維護一個狀態表,該表用于把非法的IP地址映射" title="地址映射">地址映射到合法的IP地址上。


1.2 技術難點
  與傳統NAT支持HTTP等數據的穿透不同,SIP應用中的語音和視頻數據需通過信令消息中的IP地址和端口號來實現目的地尋址,因此信令消息在地址穿透中不僅需要對TCP/UCP層的端口信息以及IP層的源地址和目的地址進行變換,還需對IP包載荷中的相關地址信息進行變換。同時,對于SIP應用來說,是在控制信息中動態地協商媒體流端口,信令協議中的IP地址也是私有的,因此要準確把握相關的地址和端口信息,并進行正確的轉換。這是本文需要解決的首要技術難點。
  其次,SIP ALG實現對NAT的穿透會因呼叫方處在內網和外網而不同,因此對進出NAT的SIP消息在解析時要判斷是內網之間的呼叫請求(內部消息)、外網呼叫請求內網(對內消息),還是內網呼叫請求外網(對外消息),以便對該消息進行正確處理。這也是本文需要解決的技術難點。
2 SIP ALG的設計思想
  由于媒體流端口是在呼叫雙方SIP信令建立連接后動態協商的,因此對SIP消息穿透NAT設備要綜合考慮這兩個方面因素。
2.1 SIP信令的穿透原理
  SIP信令穿透NAT與HTTP穿透類似,NAT設備只要打開固定的端口,就能保證SIP信令穿透NAT并與外界建立連接。
  本文基于SIP終端設備的特殊性來考慮信令穿透NAT。SIP終端設備會周期性地發送Register消息[1]到注冊服務器上,由于不斷有信令消息經過NAT設備,致使NAT設備對通過的消息流始終保持一個確定的端口;同時,當Register消息經過ALG,ALG就會記錄信令穿透NAT時經NAT轉換后的IP地址和端口等信息,并將此信息與NAT后面的終端用戶ID(如890010098)等信息進行綁定。這樣,當一個信令到來,ALG將通過NAT上正確的地址和端口發送給被叫方。
2.2 媒體流的穿透原理
  當信令穿透NAT后,NAT后面的SIP終端就可以收到來自外網的呼叫請求。這時呼叫方的Invite消息和響應方的200(OK)消息中都攜帶了用于描述與會話相關的信息及與流媒體相關參數的SDP(Session Description Protocol)消息體[4]。當該消息通過ALG時,ALG將通過與該媒體流相關的呼叫——會話層消息中的用戶ID(如890010098)識別出NAT上的IP地址和端口并進行相應的轉換,這樣當呼叫方收到200(OK)消息時就能從SDP消息體中獲取該IP地址和端口等信息并發送ACK確認消息,從而完成一個會話的建立。
3 SIP ALG的實現
  利用SIP ALG實現對NAT的穿透,主要是對流經ALG的SIP消息進行處理和維護。按照各部分功能的差異,可以將SIP ALG劃分為消息解析模塊、消息修改模塊和消息轉發模塊,SIP ALG的整體結構如圖2所示,該圖體現了各功能模塊間的相互關系。


  下面以一個典型的兩個不同NAT內的用戶(Joe:890010098@192.168.1.4和Bob:810000004@10.10.15.44)通過注冊服務器(SER服務器)完成連接的過程為例,來說明SIP ALG的具體實現。SIP ALG解決NAT穿透的示意圖如圖3所示。


3.1 前提條件
  SIP ALG的實現主要是對Request、Response消息進行解析、修改與轉發。因此在實現ALG前首先要了解SIP請求(Request)的方法(Register、Invite、ACK、Options、Cancel、Bye)[1],SIP回答(Response,包括Trying、Ringing、OK和ACK)[1]以及SIP消息中的相關頭域(Request-URI、Via、From、To、Call-ID、Cseq、Contact等)[1]。
3.2 消息解析模塊的實現
  消息解析模塊主要對流經ALG的SIP消息進行解析,并判斷該消息是內部消息、對外消息還是對內消息,以便消息修改模塊能對這些消息進行正確的處理。消息解析模塊的工作流程如圖4所示。它主要判斷數據包From、To、Via等頭域中的IP地址信息,以準確解析消息類型。


3.3 消息修改模塊的實現
  由于同一NAT內部的用戶間可以直接通信,因此“內部消息處理”模塊不需要對消息體進行修改。這樣就把消息修改模塊分為對內消息修改與對外消息修改。這兩個過程實際上是可逆的。對內消息修改主要根據地址映射表把外網IP和端口號轉換成內部IP和端口號,以便外部請求能準確到達NAT內側的用戶端;對外消息修改則根據地址映射表把內部IP和端口號轉化成外網可用的IP和端口號,這樣,來自外網的請求就能準確定位到該地址。但無論哪個模塊,最終結果都是對相應的Request和Response消息中與NAT有關的IP地址和端口號進行修改。消息修改模塊的處理流程如圖5所示。


  對信令消息的修改需要對Invite、ACK、BYE和Register等Request消息和100(Tring)、180(Ringing)以及200(OK)等Response消息中的Via、From、To、Call-ID、Contact等頭域中包含的私有IP地址和端口信息進行修改。而對SDP消息體的處理是SIP ALG實現其功能的關鍵所在,因為SDP消息體的交換是實現呼叫雙方媒體流通信的前提和關鍵。對SIP控制的向內的媒體流轉發,ALG分析向外的Invite和200(OK)消息中的SDP消息體中“Media Description”和“Connection Information”行,根據這兩行中的描述地址在NAT上啟用未用端口,完成向內接收媒體流的目的地址翻譯,從而實現媒體流通信的建立。需要注意的是,在對Response消息進行修改時,還需通過Call-ID匹配呼叫的上下文環境,也要加入Record-Route頭域以告知內網上的SIP終端,本次呼叫中以后所有的SIP消息都要流經該SIP ALG,這樣才能保證ALG的正確轉發。最后,對消息修改完畢后,需要重新計算消息的長度,并保存在Content-Length中。
3.4 消息轉發模塊的實現
  消息轉發模塊主要是通過控制NAT,對修改后的SIP消息進行轉發,以完成一個會話的建立。消息轉發模塊在ALG中保留并維護當前呼叫的上下文環境,也就是一個地址映射信息表,如表1所示。以記錄相關的地址映射信息。


  表1中的數據表示所有目的地址為202.205.11.230、60012的SIP包都會被NAT網關轉發到主機10.10.15.44:5060上處理。消息修改模塊在做修改前,要首先查詢ALG內記錄的地址映射信息表,如果表內已建立了該用戶的信息,則按此信息對向NAT處的SIP消息做相應修改,否則丟棄該消息。
  為生成相關地址映射信息表,ALG首先需要分析向外的Register消息。ALG記錄Register中的To和Contact頭域,按它們的值在NAT設備上啟用一個未用的端口,然后ALG記錄生成的映射信息并填入地址映射信息表。生成地址映射信息表后,消息修改模塊再按映射信息修改向外的Invite和Register等報文,然后再通過消息轉發模塊實現對NAT的穿透。
  本文通過分析NAT的工作原理以及SIP信令與媒體流的特點,詳細講述了SIP ALG的具體實現方法。實驗證明,本文設計的SIP ALG能很好地解決NAT穿透問題,且運行穩定,互通性好。
參考文獻
1 Handley M,Schulzrinne H,Schooler E et al.SIP:Session Initiation Protocol.RFC3261,IETF,2002
2 Rekhter Y,Moskowitz B,Karrenberg D et al.Address alloca-tion for private internets.RFC1918,IETF,1996
3 Rosenberg J,Weinberger J,Huitema C et al.STUN- Simple Traversal of User Datagram Protocol(UDP) Through Network Address Translators (NATs).RFC3489,IETF,2003
4 Handley M,Jacobson V.SDP:Session Description Protocol.RFC2327,IETF,1998
5 Rosenberg J,Weinberger J,Schulzrinne H.SIP Extensions for NAT Traversal.Internet Draft,IETF,2001
6 沈 波,張順頤,沈蘇彬.會話發起協SIP的分析和研究.數據通信,2001;(4)

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品夜夜嗨| 国产精品v欧美精品v日韩精品| 欧美三级视频在线| 亚洲成在人线av| 在线观看亚洲视频| 久久福利资源站| 亚洲国产岛国毛片在线| 亚洲欧洲99久久| 在线精品视频在线观看高清| 国产精品久久久一区麻豆最新章节| 久久手机精品视频| 香蕉久久a毛片| 欧美寡妇偷汉性猛交| 永久免费精品影视网站| 日韩一区二区免费看| 欧美成人在线网站| 亚洲天堂成人在线观看| 18成人免费观看视频| 亚洲精品一区在线观看香蕉| 欧美一区二区在线看| 国产一区二区三区免费观看| 国产亚洲精品7777| 久久久91精品| 国产精品一区二区久久久久| 国产午夜精品在线观看| 国产精品你懂的在线| 欧美午夜在线| 久久久亚洲国产天美传媒修理工| 亚洲国产婷婷香蕉久久久久久| 欧美日韩久久精品| 日韩小视频在线观看专区| 欧美综合国产精品久久丁香| 欧美久久久久久久久| 久久影视三级福利片| 久久国产精品99久久久久久老狼| 另类天堂av| 欧美日韩在线第一页| 亚洲欧美日韩一区二区三区在线观看| 欧美一区二区在线观看| 亚洲第一精品福利| 久久阴道视频| 欧美日韩精品在线| 国产精品视频福利| 亚洲精品在线三区| 中文在线资源观看网站视频免费不卡| 亚洲国产精品精华液网站| 久久在精品线影院精品国产| 国产精品每日更新在线播放网址| 国产精品一区二区男女羞羞无遮挡| 一区二区自拍| 亚洲综合色噜噜狠狠| 亚洲福利在线看| 亚洲欧美日韩一区| 国产在线视频不卡二| 亚洲精品黄网在线观看| 免费看成人av| 在线欧美日韩| 国产视频一区二区三区在线观看| 久久男人av资源网站| 国产精品久久一级| 国产精品v日韩精品| 亚洲黄一区二区| 欧美日韩一区二区三区四区五区| 亚洲日本中文| 久久青草福利网站| 欧美一区=区| 葵司免费一区二区三区四区五区| 国产一区二区三区四区五区美女| 亚洲精品视频二区| 欧美精品手机在线| 在线中文字幕一区| 亚洲图片欧洲图片av| 老**午夜毛片一区二区三区| 午夜精品在线观看| 亚洲第一网站| 国产区亚洲区欧美区| 欧美日韩综合另类| 亚洲精品美女在线观看播放| 日韩一区二区久久| 欧美在线视频一区二区三区| 国产精品尤物福利片在线观看| 在线观看一区二区精品视频| 亚洲美女免费精品视频在线观看| 国产精品成人国产乱一区| 可以免费看不卡的av网站| 国产精品日韩精品欧美精品| 免费视频亚洲| 99国产精品久久久久久久| 一区二区亚洲精品| 亚洲国产91精品在线观看| 一区二区三区中文在线观看| 韩国三级电影一区二区| 欧美**人妖| 亚洲亚洲精品三区日韩精品在线视频| 亚洲国产一区二区三区青草影视| 美脚丝袜一区二区三区在线观看| 欧美一区二区三区在线视频| 亚洲福利视频三区| 欧美一区二区日韩一区二区| 欧美乱人伦中文字幕在线| 亚洲精品乱码久久久久久| 欧美日韩国产成人精品| 亚洲精品在线三区| 欧美在线www| 这里只有视频精品| 香蕉久久夜色精品国产使用方法| 久久婷婷麻豆| 欧美高清hd18日本| 亚洲欧美日韩国产一区二区三区| 欧美日韩免费在线观看| 久久九九国产精品怡红院| 久久综合五月天婷婷伊人| 国产精品一区毛片| 免费一区二区三区| 欧美一区二区播放| 欧美日韩精品| 亚洲一区三区视频在线观看| 欧美成人一区二区三区在线观看| 一本大道av伊人久久综合| 久久手机免费观看| 欧美高清你懂得| 欧美成人一区二区三区| 久久影院亚洲| 欧美日韩国产在线一区| 伊伊综合在线| 久久综合成人精品亚洲另类欧美| 麻豆久久精品| 韩国精品主播一区二区在线观看| 精品成人在线| 欧美激情视频给我| 亚洲高清视频在线观看| 国产精品swag| 午夜欧美电影在线观看| 欧美日韩免费在线| 欧美日韩在线播放| 欧美激情视频给我| 在线观看91久久久久久| 亚洲美女视频在线免费观看| 午夜精品美女自拍福到在线| 宅男噜噜噜66一区二区| 久久国产精品99国产| 欧美日韩国产区一| 国产精品三级视频| 久久精品视频导航| 欧美大尺度在线| 欧美日韩综合视频| 久久激情五月丁香伊人| 亚洲精选久久| 在线播放日韩| 夜夜嗨av色综合久久久综合网| 亚洲午夜成aⅴ人片| 国内精品久久久久影院 日本资源| 在线午夜精品自拍| 亚洲日本欧美日韩高观看| 免费成人高清在线视频| 欧美大成色www永久网站婷| 国产一区白浆| 榴莲视频成人在线观看| 欧美激情女人20p| 一本色道久久综合亚洲91| 午夜老司机精品| 国产真实乱偷精品视频免| 国产女人18毛片水18精品| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲精品久久久久久久久久久| 亚洲午夜久久久久久久久电影网| 黄色国产精品一区二区三区| 欧美顶级少妇做爰| 亚洲素人一区二区| 亚洲视频一区二区在线观看| 欧美激情一区三区| 久久久久久久一区| 欧美激情一区二区久久久| 久热综合在线亚洲精品| 久久久久99精品国产片| 欧美日韩三级一区二区| 久久久成人精品| 欧美日本精品一区二区三区| 欧美日韩成人综合| 欧美激情一区二区三区不卡| 国产欧美一区二区精品婷婷| 一区二区三区波多野结衣在线观看| 欧美视频在线免费看| 亚洲线精品一区二区三区八戒| 国产精品无码专区在线观看| 欧美成人精品影院| 久久另类ts人妖一区二区| 欧美成人dvd在线视频| 亚洲视频免费在线| 欧美日韩精品二区| 欧美亚洲三级| 99re6这里只有精品视频在线观看| 亚洲精品久久久久中文字幕欢迎你| 激情自拍一区| 国产精品丝袜久久久久久app| 亚洲欧洲av一区二区三区久久| 国产精品久久亚洲7777| 精品电影在线观看| 国产精品日韩| 久久亚洲欧洲| 午夜精品福利一区二区蜜股av| 欧美日韩免费精品| 久久综合精品国产一区二区三区| 在线一区免费观看| 西瓜成人精品人成网站| 国产精品ⅴa在线观看h| 亚洲国产成人在线视频| 欧美顶级艳妇交换群宴| 国产深夜精品福利| 国产精品一区久久久久| 久久激情五月丁香伊人| 亚洲欧美怡红院| 久久久国产午夜精品| 亚洲免费中文| 欧美日韩一区二区在线观看| 欧美日韩色一区| 国产精品高潮久久| 国产老女人精品毛片久久| 国产精品一国产精品k频道56| 国产一区二区日韩| 亚洲人体大胆视频| 激情av一区| 亚洲视频碰碰| 久久成人综合网| 91久久一区二区| 影院欧美亚洲| 国产视频欧美| 久久国产精品免费一区| 亚洲精品久久视频| 亚洲美女尤物影院| 在线观看国产精品淫| 国产原创一区二区| 亚洲伊人第一页| 亚洲电影免费观看高清完整版| 欧美在线欧美在线| 亚洲九九精品| 欧美理论电影在线播放| 久久国产精品99国产| 欧美国产日韩一区| 欧美三级韩国三级日本三斤| 一区二区三区三区在线| 一本色道久久88亚洲综合88| 亚洲一区二区视频| 亚洲国产成人不卡| 在线视频一区观看| 国产精品激情| 久久福利毛片| 亚洲久久视频| 欧美午夜宅男影院在线观看| 久久精品国产综合| 欧美日本在线视频| 在线精品一区二区| 中文精品在线| 久久精品二区亚洲w码| 欧美高清不卡| 一区二区三区在线免费观看| 免费一级欧美在线大片| 久久婷婷国产麻豆91天堂| 欧美视频在线播放| 一区二区三区在线免费视频| 国语对白精品一区二区| 亚洲福利专区| 亚洲人永久免费| 亚洲人成77777在线观看网| 亚洲欧美影院| 欧美日韩在线精品一区二区三区| 欧美日韩一区不卡| 欧美日本亚洲| 99热免费精品在线观看| 亚洲国产精品传媒在线观看| 国产精品av久久久久久麻豆网| 在线播放日韩| 一区二区三区精密机械公司| 夜夜嗨网站十八久久| 久久蜜桃香蕉精品一区二区三区| 亚洲人成亚洲人成在线观看| 国产日韩av高清| 国产毛片精品视频| 一本久道久久综合狠狠爱| 国产日韩综合一区二区性色av| 国产精品第十页| 亚洲综合二区| 亚洲电影免费在线| 国产欧美日韩一级| 国产精品白丝黑袜喷水久久久| 欧美一区二区三区在线| 亚洲破处大片| 午夜免费久久久久| 久久国产精品电影| 亚洲免费在线观看视频| 亚洲精品四区| 欧美视频不卡| 国产精品久久夜| 欧美激情日韩| 国产日产欧美一区| 欧美午夜宅男影院在线观看| 136国产福利精品导航网址| 一本色道久久综合一区| 国产乱子伦一区二区三区国色天香| 亚洲国产精品国自产拍av秋霞| 一个人看的www久久| 国产日韩一区二区三区在线播放| 欧美一区免费视频| 久久久久久97三级| 欧美精品在线观看播放| 亚洲影视在线| 国产一区二区三区电影在线观看| 日韩午夜三级在线| 亚洲大片免费看| 国产欧美另类| 国产精品午夜春色av| 欧美在线视频免费观看| 亚洲日韩欧美视频一区| aa国产精品| 欧美电影打屁股sp| 日韩午夜av在线| 国产精品爽爽ⅴa在线观看| 亚洲欧美福利一区二区| 亚洲欧美大片| 欧美日韩中文字幕精品| 国内精品久久久久国产盗摄免费观看完整版| 日韩视频永久免费| 在线色欧美三级视频| 亚洲一级黄色| 午夜精品国产| 亚洲最新中文字幕| 牛夜精品久久久久久久99黑人| 国产精品99久久久久久久vr|