SIP應(yīng)用層網(wǎng)關(guān)技術(shù)
信息數(shù)據(jù)庫接口模塊
出于安全性的考慮,SIP URI信息管理系統(tǒng)從SIP應(yīng)用層網(wǎng)關(guān)中分離出去,這個系統(tǒng)的功能并不復(fù)雜,一方面它接受來自ALG的訪問;另一方面,它必須對自身的信息數(shù)據(jù)庫進(jìn)行維護(hù)。ALG本身必須通過信息數(shù)據(jù)庫接口模塊對其進(jìn)行訪問。
ALG需要從SIP URI信息管理系統(tǒng)得到的信息有兩類:一類是用戶信息,包括用戶名和密碼;另一類是SIP URI綁定信息,這一類信息的交互是雙向的,不同的REGISTER請求會要求ALG添加、修改、刪除或者僅僅是獲取SIP URI的綁定信息。本文用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)來表示這兩類信息,這樣只需要一次訪問就能夠獲取所需全部信息,可以縮短ALG處理SIP消息所需的時間。
信息管理模塊
SIP應(yīng)用層網(wǎng)關(guān)需要很多信息才能完成工作,有些信息是動態(tài)的,例如SIP URI的綁定信息,不同用戶不同時間的綁定信息是不同的,因此只有在需要的時候應(yīng)用層網(wǎng)關(guān)才從數(shù)據(jù)庫中進(jìn)行動態(tài)的訪問;而另外一些信息則是相對穩(wěn)定的,如ALG本身的域名、IP地址等等。這些信息很多,但并不復(fù)雜,大多是字符串、數(shù)值或者布爾型的變量,信息管理模塊的功能就是維護(hù)和管理它們。
“媒體會話”模塊
當(dāng)SIP應(yīng)用層網(wǎng)關(guān)為跨網(wǎng)絡(luò)呼叫的終端之間建立起媒體會話(視頻、音頻)的連接后,雙方之間主要的交互將是RTP數(shù)據(jù)流(媒體數(shù)據(jù)被打包成RTP數(shù)據(jù)包)的交互,“媒體會話”模塊的功能主要就是在通信雙方之間進(jìn)行RTP數(shù)據(jù)包的轉(zhuǎn)發(fā)工作,每一個RTP數(shù)據(jù)包轉(zhuǎn)發(fā)器能夠為多路RTP連接提供數(shù)據(jù)包轉(zhuǎn)發(fā)服務(wù)。
當(dāng)ALG需要為一路RTP連接提供數(shù)據(jù)包轉(zhuǎn)發(fā)服務(wù)時,它試圖從轉(zhuǎn)發(fā)器環(huán)境中得到一個空閑的RTP數(shù)據(jù)包轉(zhuǎn)發(fā)器,如果環(huán)境中的轉(zhuǎn)發(fā)器都已經(jīng)被占用,環(huán)境會試圖創(chuàng)建一個新的RTP數(shù)據(jù)包轉(zhuǎn)發(fā)器,并把它加入到環(huán)境當(dāng)中,并將它返回給ALG使用。另一方面,當(dāng)一個轉(zhuǎn)發(fā)器不再為任何RTP連接提供轉(zhuǎn)發(fā)服務(wù)時,環(huán)境會把它刪除,并釋放相應(yīng)的資源。
“消息處理及對話維護(hù)”模塊
這是SIP應(yīng)用層網(wǎng)關(guān)的核心模塊,它的功能是對收到的SIP消息進(jìn)行解析和處理,完成對SIP消息的代理,對跨網(wǎng)絡(luò)呼叫的上下文環(huán)境進(jìn)行維護(hù)以及在必要時啟動對話的RTP代理。這些功能之間是相互關(guān)聯(lián)的,統(tǒng)一由SIP消息處理及對話的維護(hù)線程完成。圖2是SIP消息處理線程的工作流程圖。
本文小節(jié)
SIP協(xié)議憑借其簡單、易于擴(kuò)展、便于實現(xiàn)等諸多優(yōu)點越來越得到業(yè)界的青睞,越來越多的基于SIP協(xié)議的網(wǎng)絡(luò)如VOIP、視頻會議、智能家居系統(tǒng)被開發(fā)實現(xiàn),本文實現(xiàn)的SIP應(yīng)用層網(wǎng)關(guān)正是SIP網(wǎng)絡(luò)對NAT/Firewall的穿越的關(guān)鍵技術(shù),但這一方案仍存在著不足之處,由于SIP應(yīng)用層網(wǎng)關(guān)必須對跨網(wǎng)絡(luò)的所有SIP消息進(jìn)行解析,導(dǎo)致這些消息須以明碼的形式傳輸,降低了SIP應(yīng)用的安全性,進(jìn)一步研究表明:這要求我們對SIP協(xié)議進(jìn)行適當(dāng)擴(kuò)展來實現(xiàn)信息的加密。
c++相關(guān)文章:c++教程
tcp/ip相關(guān)文章:tcp/ip是什么
評論