SIP應(yīng)用層網(wǎng)關(guān)技術(shù)
引言
SIP(Session Initiation Protocol)稱為會話初始協(xié)議[1][4],是一個與HTTP和SMTP類似的、基于文本的協(xié)議,SIP獨立于傳輸層協(xié)議和其它會話控制協(xié)議,可以與其他協(xié)議(如RSVP,RTSP等)一起構(gòu)建多媒體通信系統(tǒng)如智能家居網(wǎng)絡(luò)、視頻會議[2]等。
NAT/防火墻(FW)為私網(wǎng)提供統(tǒng)一的對外出口,從而隱藏內(nèi)部網(wǎng)絡(luò)的拓撲結(jié)構(gòu),提高了私網(wǎng)的安全性[3]。但這也給私網(wǎng)的遠程控制應(yīng)用帶來很大的麻煩。對于NAT,其功能是在公網(wǎng)IP地址及端口和私網(wǎng)IP地址及端口間進行映射,工作在傳輸層,它只對TCP/UDP包頭中的地址、端口進行修改,而SIP協(xié)議需要在信令消息中內(nèi)嵌IP地址和端口號[5],這些地址、端口在應(yīng)用層上才可見,因此NAT不會對其中的地址信息進行修改,導(dǎo)致信令消息中的IP地址和端口不能指向正確的地址,因而通信也不能正常進行;對于FW,對公網(wǎng)打開的端口通常是固定的(Fw不會在運行過程中動態(tài)的打開或者關(guān)閉這些端口),且數(shù)目有限。而基于SIP構(gòu)建的私網(wǎng)的遠程控制應(yīng)用要求FW不但能夠提供對信令協(xié)議的代理功能,而且要求FW能夠在通信過程中動態(tài)的打開一些端口進行媒體流數(shù)據(jù)的交流,現(xiàn)有的FW難以滿足這個要求。
鑒于上述原因,本文提出了“SIP應(yīng)用層網(wǎng)關(guān)”技術(shù),并將其應(yīng)用于網(wǎng)絡(luò)通信中來建立相對合理、完善的SIP網(wǎng)絡(luò),以解決SIP私網(wǎng)遠程控制中穿越NAT/FireWall的難題。
SIP私網(wǎng)穿越NAT/防火墻方法分析
由于所有NAT和Firewall都是對于TCP/IP層以下進行處理和過濾的,而SIP是應(yīng)用層控制信令協(xié)議,SIP與下面的傳輸層和網(wǎng)絡(luò)層協(xié)議無關(guān)。所以必須采用其他的途徑來解決基于SIP的私網(wǎng)穿越NAT/防火墻這一問題,主要有以下不同的解決方案:1.UpnP(通用即插即用);2.TURN(Traversal Using Relay NAT);3.STUN(Simple Traversal of UDP Through network Address Translators);4.ALG(Application Layer Gateway,應(yīng)用層網(wǎng)關(guān))。
其中前3種都是由SIP Client(包括UA和Proxy)通過某種手段或協(xié)議在INVITE之前獲取自己的公網(wǎng)地址和端口。需要SIP Client提供額外支持,并且也不適應(yīng)所有的NAT方式。ALG(Application Layer Gateway)[2]適應(yīng)所有NAT方式,并不需要SIP Client做任何額外的支持。它對Application層的SIP信令進行處理和修改,從而做到透明轉(zhuǎn)換地址。該思想的基本思路是通過在NAT/FW中加入?yún)f(xié)議認知(Protocol Awareness)能力,使NAT/FW能夠在SIP信令消息通過時修改其內(nèi)容中的地址信息,ALG修改SIP消息里面的SIP地址和端口,并為分配給呼叫雙方的地址和端口進行綁定,這樣,以后的媒體流數(shù)據(jù)能夠通過NAT/FW指定的端口穿過。本文主要討論的是基于SIP的應(yīng)用層網(wǎng)關(guān)方法。
SIP應(yīng)用層網(wǎng)關(guān)原理分析
“SIP應(yīng)用層網(wǎng)關(guān)”是為解決基于SIP的私網(wǎng)控制應(yīng)用穿越NAT/FW的問題,實現(xiàn)私網(wǎng)內(nèi)的SIP用戶代理與公網(wǎng)上的SIP用戶代理之間的互連而提出的解決方案,從功能上來說,SIP應(yīng)用層網(wǎng)關(guān)是一種為私網(wǎng)內(nèi)的SIP終端提供連接到公網(wǎng)的代理功能的SIP設(shè)備或軟件。下文中提及的“應(yīng)用層網(wǎng)關(guān)”和ALG(Application Level Gateway)都是指SIP應(yīng)用層網(wǎng)關(guān)。
為了實現(xiàn)SIP應(yīng)用層網(wǎng)關(guān)的功能,同時保持與已有SIP應(yīng)用的兼容性,必須把ALG設(shè)計成一個SIP兼容的應(yīng)用。但是對于私網(wǎng)上和公網(wǎng)上的SIP應(yīng)用而言,ALG提供的功能并不完全相同:對于私網(wǎng)的SIP終端,SIP應(yīng)用層網(wǎng)關(guān)的角色是一個SIP意義上的代理服務(wù)器(Proxy),它不但需要為通往公網(wǎng)上的呼叫提供代理,同時還需要為私網(wǎng)內(nèi)部不同SIP終端之間的呼叫提供代理;另一方面ALG必須允許私網(wǎng)內(nèi)部SIP終端進行注冊,因為只有通過注冊才能使SIP終端明白ALG是它們的代理服務(wù)器,因此,SIP應(yīng)用層網(wǎng)關(guān)同時也是私網(wǎng)上的SIP注冊服務(wù)器。而對于公網(wǎng)上的SIP終端而言,私網(wǎng)內(nèi)部是不可見的,唯一可見的是處于公網(wǎng)上的SIP應(yīng)用層網(wǎng)關(guān),因此對它而言,ALG只是一個SIP終端,公網(wǎng)上的SIP設(shè)備就能夠直接對它進行呼叫或者接收它的呼叫。
綜上所述,SIP應(yīng)用層網(wǎng)關(guān)功能在私網(wǎng)和公網(wǎng)上是非對稱的,可劃分為:1.對內(nèi)功能:SIP應(yīng)用層網(wǎng)關(guān)是私網(wǎng)上的SIP注冊服務(wù)器和代理服務(wù)器,同時,對于跨網(wǎng)呼叫的情況,SIP應(yīng)用層網(wǎng)關(guān)除需為私網(wǎng)終端提供SIP消息的代理,還須提供媒體流數(shù)據(jù)的代理,這種媒體數(shù)據(jù)的代理功能對通信雙方是透明的;對外功能:在公網(wǎng)上,SIP應(yīng)用層網(wǎng)關(guān)作為一個普通的SIP終端而存在,它能夠與公網(wǎng)上的其它SIP應(yīng)用建立互連關(guān)系,并隱藏ALG與私網(wǎng)內(nèi)部SIP應(yīng)用之間的關(guān)系。
SIP應(yīng)用層網(wǎng)關(guān)的實現(xiàn)
本節(jié)前面部分詳細的介紹了SIP應(yīng)用層網(wǎng)關(guān)實現(xiàn)的理論基礎(chǔ),本節(jié)介紹ALG的軟件實現(xiàn)方式,軟件開發(fā)平臺是Windows2000,開發(fā)工具是Visua1C++ 6.0,采用的是OSIP協(xié)議棧,開發(fā)的語言主要是C。
結(jié)構(gòu)及工作流程
這里ALG被分成兩個部分:ALG主體部分和SIP URI信息管理系統(tǒng)部分,這兩部分被設(shè)計成是兩個相互獨立的程序。ALG主體部分的功能是處理各種流向上的SIP消息、管理呼叫環(huán)境以及跨網(wǎng)絡(luò)呼叫時,在通信雙方之間進行RTP數(shù)據(jù)包的轉(zhuǎn)發(fā);SIP URI信息管理系統(tǒng)部分的功能是負責私網(wǎng)內(nèi)部SIP URI及其綁定信息的管理和維護,該系統(tǒng)及其維護的數(shù)據(jù)庫放置在私網(wǎng)內(nèi)部的其它主機上運行。兩部分之間通過UDP/TCP進行通信,這樣可以減小來自外網(wǎng)上攻擊的風險,從而提高數(shù)據(jù)信息的安全性。 由于ALG主體無法直接對SIPURI的數(shù)據(jù)信息進行訪問,因此必須在這兩部分之間提供訪問的接口,“信息數(shù)據(jù)庫接口”模塊就是為 ALG訪問SIP URI信息管理系統(tǒng)的接口。
SIP應(yīng)用層網(wǎng)關(guān)的主要工作由一個SIP消息的監(jiān)聽線程、一個與SIP URI信息管理系統(tǒng)進行通信的線程、一個SIP消息處理線程(包括對話的管理和維護)和數(shù)量不定的RTP數(shù)據(jù)包轉(zhuǎn)發(fā)線程完成。RTP數(shù)據(jù)包轉(zhuǎn)發(fā)線程能夠根據(jù)需要而動態(tài)的生成和釋放,因此數(shù)量不定。
SIP應(yīng)用層網(wǎng)關(guān)的基本工作流程如下:
應(yīng)用程序初始化完畢以后,啟動SIP消息監(jiān)聽線程、URI信息數(shù)據(jù)庫訪問線程和SIP消息處理線程。SIP消息監(jiān)聽線程對ALG的所有SIP端口(包括私網(wǎng)和公網(wǎng))進行監(jiān)聽,如果收到SIP消息,它把消息連同其源IP地址和端口以及消息本身的長度封裝成一個簡單的數(shù)據(jù)結(jié)構(gòu)放入一個先入先出的隊列(FIFO)當中,然后繼續(xù)監(jiān)聽,它不對消息進行進一步的處理。
一旦FIFO中有了SIP消息,SIP消息處理線程就被喚醒,并投入運行,它從FIFO中取走消息,然后開始對這個消息進行處理:首先它對消息進行解析以及例行的語法檢查,然后根據(jù)SIP消息的源地址和目的地址將其分成四類:
(1)內(nèi)部消息,其源地址和目的地址都在私網(wǎng)內(nèi)部。
(2)對外消息,其源地址是私網(wǎng)地址,目的地址是公網(wǎng)地址。
(3)對內(nèi)消息,其源地址是公網(wǎng)地址,目的地址是ALG的公網(wǎng)地址。
(4)外部消息,其源地址和目的地址都是公網(wǎng)地址。
SIP消息被分成以上四類后,ALG對它們進行不同的處理。第(1)類消息稱為“內(nèi)部消息”,第(2)類和第(3)類消息統(tǒng)稱為“跨網(wǎng)絡(luò)消息”;第(4)類消息稱為“外部消息”,它會被無條件丟棄,ALG不對其作進一步的處理。SIP消息處理線程在對“跨網(wǎng)絡(luò)消息”消息進行處理的同時,對呼叫的上下文環(huán)境進行管理和維護,并在必要的時候,啟動新的RTP數(shù)據(jù)包轉(zhuǎn)發(fā)線程,使其完成對跨網(wǎng)絡(luò)通信的RTP數(shù)據(jù)包的轉(zhuǎn)發(fā)工作。
基于SOCKET消息接收與應(yīng)答功能模塊
由于UDP包的接收是異步的,ALG無法預(yù)測何時會有SIP消息到來,因此在SIP應(yīng)用層網(wǎng)關(guān)的設(shè)計中,用單獨的線程對SIP端口進行監(jiān)聽。由于SIP應(yīng)用層網(wǎng)關(guān)處在兩個網(wǎng)絡(luò)的邊界上,并在兩網(wǎng)之間轉(zhuǎn)發(fā)數(shù)據(jù),因此ALG的SIP端口也相應(yīng)的分為私網(wǎng)和公網(wǎng)兩部分,在任何一邊的網(wǎng)絡(luò)上,都可以打開一個或者多個與套節(jié)字(SOCKET)相聯(lián)系的SIP端口。并且每隔一定時間試圖從所有監(jiān)聽的SIP端口相關(guān)聯(lián)的SOCKET上讀取數(shù)據(jù),如果讀到了數(shù)據(jù),就對數(shù)據(jù)做簡單的封裝,然后把它放入應(yīng)用層網(wǎng)關(guān)的SIP消息FIFO當中。
關(guān)鍵詞: 技術(shù) 網(wǎng)關(guān) 應(yīng)用層
您可能也感興趣:
今日熱點
為您推薦
冰雪運動的保險迎來“出圈”契機 產(chǎn)品開發(fā)、銷售難度都不小
金融標準化“十四五”發(fā)展規(guī)劃發(fā)布 指明保險業(yè)發(fā)展方向
“隔離險”大火 銀保監(jiān)會強調(diào)保險公司不得無理拒賠
更多
- 墨奇科技入選北京市專精特新“小巨人”企業(yè)
- SMART Modular發(fā)布DuraMemory DDR5 VLP RDIMM內(nèi)存新品
- 詹姆斯-韋伯天文臺通過已經(jīng)激活的制導(dǎo)傳感器達到新里程碑
- 浙江省創(chuàng)新型城市建設(shè)成效顯著 6地進入國家創(chuàng)新型城市前50強
- 我國啟動商業(yè)秘密保護創(chuàng)新試點工作 重點做好“兩穩(wěn)兩進”
- 去年重慶高新區(qū)全面實施“項目建設(shè)年” 加速集聚高端創(chuàng)新資源
- 廣東各類創(chuàng)新主體蓬勃發(fā)展 不斷強化戰(zhàn)略科技力量布局
- 臺州科技興市步伐更有力 創(chuàng)新鏈產(chǎn)業(yè)鏈深度融合
排行
最近更新
- SIP應(yīng)用層網(wǎng)關(guān)技術(shù)
- 燃爆了!當冬奧精神遇見手造匠心,會碰撞出哪些火花?
- 以勞動換取收獲
- 燃情冰雪丨青島一高校師生創(chuàng)作《冰雪之約》獻唱北京冬奧
- 老人車流中過馬路 民警暖心護送
- 青島報告新增境外輸入確診病例3例
- 超300億元!年后16家房企密集發(fā)債,最低利率僅2.7%
- 摩托車未觀察車道情況 快速起步釀事故
- 正榮地產(chǎn):預(yù)計公司現(xiàn)有內(nèi)部資源不足以解決2023年3月到期債務(wù)
- 春節(jié)過后謹防高血壓
- 全民反詐丨女子網(wǎng)上找“偵探”調(diào)查男友被騙 民警緊急止付
- 安全提示每日一圖
- 陽光城:不排除短期兌付壓力更大的情況,正通過各種方式獲取...
- 視頻|24節(jié)氣里的淄博力量
- 公告!渝北區(qū)醫(yī)療保障局將搬遷到這里→
- 一周公告合輯丨央企國企頻繁融資 華僑城債券利率低至2.79%
- 山東發(fā)海上大風警報 本周末最大風力9級
- 為補充公司營運資金 天風證券擬發(fā)行不超過80億元公司債
- 谷歌報告:越南民眾對股票、加密貨幣的搜索興趣上升超過100%
- 橫琴人壽圍繞九個方面助力深合區(qū)發(fā)展
- 深圳市水務(wù)發(fā)展規(guī)劃發(fā)布 “十四五”期間實現(xiàn)自來水直飲全城覆蓋
- 1月深圳二手房網(wǎng)簽量同比下降82% 成交占比逐漸走低
- 深汕合作區(qū)發(fā)揮重大項目牽引帶動作用 建設(shè)現(xiàn)代化的產(chǎn)業(yè)新城
- 深圳將加速高質(zhì)量立法 重要領(lǐng)域和新興領(lǐng)域是重點
- 深圳:打造多元多層次消費新場景,加快建設(shè)國際消費中心城市
- 冬奧科技大揭秘|完美再現(xiàn)觀賽現(xiàn)場!聲場還原技術(shù)助力“蔥桶...
- 上海都市醫(yī)院治療HPV有哪些方法呢
- 英債收益率周五跌超8個基點,烏克蘭緊張局勢持續(xù)推高避險需求
- 成都錦一醫(yī)院治療HPV能信嘛
- 重慶南部新城產(chǎn)業(yè)集團10億元超短期債完成發(fā)行 利率3.05%
今日要聞
- SIP應(yīng)用層網(wǎng)關(guān)技術(shù)
- 超300億元!年后16家房企密集發(fā)債,最低利率僅2.7%
- 正榮地產(chǎn):預(yù)計公司現(xiàn)有內(nèi)部資源不足以解決2023年3月到期債務(wù)
- 陽光城:不排除短期兌付壓力更大的情況,正通過各種方式獲取資金以償還欠款
- 為補充公司營運資金 天風證券擬發(fā)行不超過80億元公司債
- 一周公告合輯丨央企國企頻繁融資 華僑城債券利率低至2.79%
- 谷歌報告:越南民眾對股票、加密貨幣的搜索興趣上升超過100%
- 英債收益率周五跌超8個基點,烏克蘭緊張局勢持續(xù)推高避險需求
- 重慶南部新城產(chǎn)業(yè)集團10億元超短期債完成發(fā)行 利率3.05%
- 印尼央行行長:印尼將繼續(xù)維持利率在3.5%