在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子百科>無線通信>無線局域網>

SIP應用層網關技術 - 全文

2011年04月20日 11:37 www.xsypw.cn 作者:電子發燒友 用戶評論(0

  引言

  SIP (Session Initiation Protocol)稱為會話初始協議[1][4],是一個與HTTP和SMTP類似的、基于文本的協議,SIP獨立于傳輸層協議和其它會話控制協議,可以與其他協議(如RSVP,RTSP等)一起構建多媒體通信系統如智能家居網絡、視頻會議[2]等。

  NAT/防火墻(FW)為私網提供統一的對外出口,從而隱藏內部網絡的拓撲結構,提高了私網的安全性[3]。但這也給私網的遠程控制應用帶來很大的麻煩。對于NAT,其功能是在公網IP地址及端口和私網IP地址及端口間進行映射,工作在傳輸層,它只對TCP/UDP包頭中的地址、端口進行修改,而SIP協議需要在信令消息中內嵌IP地址和端口號[5],這些地址、端口在應用層上才可見,因此NAT不會對其中的地址信息進行修改,導致信令消息中的IP地址和端口不能指向正確的地址,因而通信也不能正常進行;對于FW,對公網打開的端口通常是固定的(Fw不會在運行過程中動態的打開或者關閉這些端口),且數目有限。而基于SIP構建的私網的遠程控制應用要求FW不但能夠提供對信令協議的代理功能,而且要求FW能夠在通信過程中動態的打開一些端口進行媒體流數據的交流,現有的FW難以滿足這個要求。

  鑒于上述原因,本文提出了“SIP應用層網關”技術,并將其應用于網絡通信中來建立相對合理、完善的SIP網絡,以解決SIP私網遠程控制中穿越NAT/FireWall的難題。

  SIP私網穿越NAT/防火墻方法分析

  由于所有NAT和Firewall都是對于TCP/IP層以下進行處理和過濾的,而SIP是應用層控制信令協議,SIP與下面的傳輸層和網絡層協議無關。所以必須采用其他的途徑來解決基于SIP的私網穿越NAT/防火墻這一問題,主要有以下不同的解決方案:1.UpnP(通用即插即用);2.TURN(Traversal Using Relay NAT);3.STUN(Simple Traversal of UDP Through network Address Translators);4.ALG(Application Layer Gateway,應用層網關)。

  其中前3種都是由SIP Client(包括UA和Proxy)通過某種手段或協議在INVITE之前獲取自己的公網地址和端口。需要SIP Client提供額外支持,并且也不適應所有的NAT方式。ALG(Application Layer Gateway)[2]適應所有NAT方式,并不需要SIP Client做任何額外的支持。它對Application層的SIP信令進行處理和修改,從而做到透明轉換地址。該思想的基本思路是通過在NAT/FW中加入協議認知(Protocol Awareness)能力,使NAT/FW能夠在SIP信令消息通過時修改其內容中的地址信息,ALG修改SIP消息里面的SIP地址和端口,并為分配給呼叫雙方的地址和端口進行綁定,這樣,以后的媒體流數據能夠通過NAT/FW指定的端口穿過。本文主要討論的是基于SIP的應用層網關方法。

  SIP應用層網關原理分析

  “SIP應用層網關”是為解決基于SIP的私網控制應用穿越NAT/FW的問題,實現私網內的SIP用戶代理與公網上的SIP用戶代理之間的互連而提出的解決方案,從功能上來說,SIP應用層網關是一種為私網內的SIP終端提供連接到公網的代理功能的SIP設備或軟件。下文中提及的“應用層網關”和ALG(Application Level Gateway)都是指SIP應用層網關。

  為了實現SIP應用層網關的功能,同時保持與已有SIP應用的兼容性,必須把ALG設計成一個SIP兼容的應用。但是對于私網上和公網上的SIP應用而言,ALG提供的功能并不完全相同:對于私網的SIP終端,SIP應用層網關的角色是一個SIP意義上的代理服務器(Proxy),它不但需要為通往公網上的呼叫提供代理,同時還需要為私網內部不同SIP終端之間的呼叫提供代理;另一方面ALG必須允許私網內部SIP終端進行注冊,因為只有通過注冊才能使SIP終端明白ALG是它們的代理服務器,因此,SIP應用層網關同時也是私網上的SIP注冊服務器。而對于公網上的SIP終端而言,私網內部是不可見的,唯一可見的是處于公網上的SIP應用層網關,因此對它而言,ALG只是一個SIP終端,公網上的SIP設備就能夠直接對它進行呼叫或者接收它的呼叫。

  綜上所述,SIP應用層網關功能在私網和公網上是非對稱的,可劃分為:1.對內功能:SIP應用層網關是私網上的SIP注冊服務器和代理服務器,同時,對于跨網呼叫的情況,SIP應用層網關除需為私網終端提供SIP消息的代理,還須提供媒體流數據的代理,這種媒體數據的代理功能對通信雙方是透明的;對外功能:在公網上,SIP應用層網關作為一個普通的SIP終端而存在,它能夠與公網上的其它SIP應用建立互連關系,并隱藏ALG與私網內部SIP應用之間的關系。

  SIP應用層網關的實現

  本節前面部分詳細的介紹了SIP應用層網關實現的理論基礎,本節介紹ALG的軟件實現方式,軟件開發平臺是Windows2000,開發工具是Visua1C++ 6.0,采用的是OSIP協議棧,開發的語言主要是C。

  結構及工作流程

  這里ALG被分成兩個部分:ALG主體部分和SIP URI信息管理系統部分,這兩部分被設計成是兩個相互獨立的程序。ALG主體部分的功能是處理各種流向上的SIP消息、管理呼叫環境以及跨網絡呼叫時,在通信雙方之間進行RTP數據包的轉發;SIP URI信息管理系統部分的功能是負責私網內部SIP URI及其綁定信息的管理和維護,該系統及其維護的數據庫放置在私網內部的其它主機上運行。兩部分之間通過UDP/TCP進行通信,這樣可以減小來自外網上攻擊的風險,從而提高數據信息的安全性。 由于ALG主體無法直接對SIPURI的數據信息進行訪問,因此必須在這兩部分之間提供訪問的接口,“信息數據庫接口”模塊就是為 ALG訪問SIP URI信息管理系統的接口。

  SIP應用層網關的主要工作由一個SIP消息的監聽線程、一個與SIP URI信息管理系統進行通信的線程、一個SIP消息處理線程(包括對話的管理和維護)和數量不定的RTP數據包轉發線程完成。RTP數據包轉發線程能夠根據需要而動態的生成和釋放,因此數量不定。

  SIP應用層網關的基本工作流程如下:

  應用程序初始化完畢以后,啟動SIP消息監聽線程、URI信息數據庫訪問線程和SIP消息處理線程。SIP消息監聽線程對ALG的所有SIP端口(包括私網和公網)進行監聽,如果收到SIP消息,它把消息連同其源IP地址和端口以及消息本身的長度封裝成一個簡單的數據結構放入一個先入先出的隊列(FIFO)當中,然后繼續監聽,它不對消息進行進一步的處理。

  一旦FIFO中有了SIP消息,SIP消息處理線程就被喚醒,并投入運行,它從FIFO中取走消息,然后開始對這個消息進行處理:首先它對消息進行解析以及例行的語法檢查,然后根據SIP消息的源地址和目的地址將其分成四類:

  (1)內部消息,其源地址和目的地址都在私網內部。

  (2)對外消息,其源地址是私網地址,目的地址是公網地址。

  (3)對內消息,其源地址是公網地址,目的地址是ALG的公網地址。

  (4)外部消息,其源地址和目的地址都是公網地址。

  SIP消息被分成以上四類后,ALG對它們進行不同的處理。第(1)類消息稱為“內部消息”,第(2)類和第(3)類消息統稱為“跨網絡消息”;第(4)類消息稱為“外部消息”,它會被無條件丟棄,ALG不對其作進一步的處理。SIP消息處理線程在對“跨網絡消息”消息進行處理的同時,對呼叫的上下文環境進行管理和維護,并在必要的時候,啟動新的RTP數據包轉發線程,使其完成對跨網絡通信的RTP數據包的轉發工作。

  基于SOCKET消息接收與應答功能模塊

  由于UDP包的接收是異步的,ALG無法預測何時會有SIP消息到來,因此在SIP應用層網關的設計中,用單獨的線程對SIP端口進行監聽。由于SIP應用層網關處在兩個網絡的邊界上,并在兩網之間轉發數據,因此ALG的SIP端口也相應的分為私網和公網兩部分,在任何一邊的網絡上,都可以打開一個或者多個與套節字(SOCKET)相聯系的SIP端口。并且每隔一定時間試圖從所有監聽的SIP端口相關聯的SOCKET上讀取數據,如果讀到了數據,就對數據做簡單的封裝,然后把它放入應用層網關的SIP消息FIFO當中。

  信息數據庫接口模塊

  出于安全性的考慮,SIP URI信息管理系統從SIP應用層網關中分離出去,這個系統的功能并不復雜,一方面它接受來自ALG的訪問;另一方面,它必須對自身的信息數據庫進行維護。ALG本身必須通過信息數據庫接口模塊對其進行訪問。

  ALG需要從SIP URI信息管理系統得到的信息有兩類:一類是用戶信息,包括用戶名和密碼;另一類是SIP URI綁定信息,這一類信息的交互是雙向的,不同的REGISTER請求會要求ALG添加、修改、刪除或者僅僅是獲取SIP URI的綁定信息。本文用統一的數據結構來表示這兩類信息,這樣只需要一次訪問就能夠獲取所需全部信息,可以縮短ALG處理SIP消息所需的時間。

  信息管理模塊

  SIP應用層網關需要很多信息才能完成工作,有些信息是動態的,例如SIP URI的綁定信息,不同用戶不同時間的綁定信息是不同的,因此只有在需要的時候應用層網關才從數據庫中進行動態的訪問;而另外一些信息則是相對穩定的,如ALG本身的域名、IP地址等等。這些信息很多,但并不復雜,大多是字符串、數值或者布爾型的變量,信息管理模塊的功能就是維護和管理它們。

  “媒體會話”模塊

  當SIP應用層網關為跨網絡呼叫的終端之間建立起媒體會話(視頻、音頻)的連接后,雙方之間主要的交互將是RTP數據流(媒體數據被打包成RTP數據包)的交互,“媒體會話”模塊的功能主要就是在通信雙方之間進行RTP數據包的轉發工作,每一個RTP數據包轉發器能夠為多路RTP連接提供數據包轉發服務。

  當ALG需要為一路RTP連接提供數據包轉發服務時,它試圖從轉發器環境中得到一個空閑的RTP數據包轉發器,如果環境中的轉發器都已經被占用,環境會試圖創建一個新的RTP數據包轉發器,并把它加入到環境當中,并將它返回給ALG使用。另一方面,當一個轉發器不再為任何RTP連接提供轉發服務時,環境會把它刪除,并釋放相應的資源。

  “消息處理及對話維護”模塊

  這是SIP應用層網關的核心模塊,它的功能是對收到的SIP消息進行解析和處理,完成對SIP消息的代理,對跨網絡呼叫的上下文環境進行維護以及在必要時啟動對話的RTP代理。這些功能之間是相互關聯的,統一由SIP消息處理及對話的維護線程完成。圖2是SIP消息處理線程的工作流程圖。

  本文小節

  SIP協議憑借其簡單、易于擴展、便于實現等諸多優點越來越得到業界的青睞,越來越多的基于SIP協議的網絡如VOIP、視頻會議、智能家居系統被開發實現,本文實現的SIP應用層網關正是SIP網絡對NAT/Firewall的穿越的關鍵技術,但這一方案仍存在著不足之處,由于SIP應用層網關必須對跨網絡的所有SIP消息進行解析,導致這些消息須以明碼的形式傳輸,降低了SIP應用的安全性,進一步研究表明:這要求我們對SIP協議進行適當擴展來實現信息的加密。

上一頁12全文

非常好我支持^.^

(2) 100%

不好我反對

(0) 0%

( 發表人:Spring )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 中国一级特黄剌激爽毛片| 日韩手机看片| 久久网综合| 久久大尺度| 第九色| www.激情网.com| 天天综合色天天桴色| 天堂网www在线资源网| 美女黄色毛片| 99精品视频在线播放2| 亚洲视频在线免费看| 最新中文字幕在线资源| 婷婷六月在线| 男女www视频在线看网站| 国产婷婷色| 天天插天天搞| 午夜 dy888理论久久| 热re久久精品国产99热| 亚洲激情| 欧美黄三级在线观看| 国产农村一一级特黄毛片| 午夜影院免费观看视频| 黄色成人免费网站| 中文字幕一区二区三区不卡| 男女在线观看视频| 天堂网在线最新版官网| 免费人成在线观看视频色| a级黄视频| 加勒比在线免费视频| 亚洲免费不卡| 特黄特色的视频免费播放| 久久艹免费视频| 天天干天天射天天插| 69国产成人精品午夜福中文| 国模极品一区二区三区| 三区在线观看| 99久在线| 欧美一区色| 亚洲人成网站在线在线| 老司机午夜网站| 午夜美女视频在线观看高清|