涂繼輝,佘新平,陳永軍
(長江大學(xué) 電信學(xué)院,湖北 荊州 434023)
軟交換是基于分組網(wǎng)利用程控軟件提供呼叫控制功能和媒體處理相分離的設(shè)備和系統(tǒng),它將呼叫控制功能從媒體網(wǎng)關(guān)中分離出來,通過軟件實(shí)現(xiàn)基本呼叫控制功能,從而實(shí)現(xiàn)呼叫傳輸與呼叫控制的分離,為控制、交換和軟件可編程功能建立分離的平面。會(huì)話初始協(xié)議(Session Initiation Protocol,SIP)作為軟交換的核心協(xié)議之一,具有協(xié)議結(jié)構(gòu)簡(jiǎn)單、支持多媒體業(yè)務(wù)的開展、符合互聯(lián)網(wǎng)網(wǎng)絡(luò)結(jié)構(gòu)等特點(diǎn),它主要用來建立、修改和終止多媒體會(huì)話[1-2]。隨著軟交換技術(shù)的日益發(fā)展,許多高校的現(xiàn)代交換原理課程中都引入了軟交換理論的學(xué)習(xí)和實(shí)驗(yàn)[3-4]。因此,在軟交換實(shí)驗(yàn)中設(shè)計(jì)一套SIP協(xié)議的可視化分析軟件配合理論教學(xué),使學(xué)生深入理解和掌握SIP工作原理勢(shì)在必行。
目前用于教學(xué)的SIP協(xié)議分析工具主要有兩種類型:一種是只能抓取SIP協(xié)議的數(shù)據(jù)包,并分析數(shù)據(jù)包的格式和內(nèi)容,比如Ethereal,這類工具很難讓學(xué)生直觀了解到整個(gè)信令的工作流程;另外一種是不但可以分析出SIP數(shù)據(jù)包的格式和內(nèi)容,還可以畫出整體工作流程圖,比如hammer和文獻(xiàn)[5]中提出的工具,但是這些僅僅給出了SIP信令的流程,沒有給出RTP的通信流程,因此,無法完整觀察到語音通信流程。本文總結(jié)了前面提到的SIP協(xié)議分析軟件的弊端,提出了一種新的SIP協(xié)議分析軟件,該軟件不僅能分析出SIP協(xié)議的數(shù)據(jù)包格式,而且可以畫出一次通話過程中SIP和RTP的流程圖,這為學(xué)生更直觀地學(xué)習(xí)和研究SIP協(xié)議通信流程具有重要的實(shí)際價(jià)值。
軟交換實(shí)驗(yàn)系統(tǒng)是為“現(xiàn)代交換原理”課程開設(shè)的實(shí)驗(yàn)平臺(tái),用來讓學(xué)生深入學(xué)習(xí)和了解軟交換中的呼叫信令流程、媒體流程、增值業(yè)務(wù)及網(wǎng)絡(luò)架構(gòu)。實(shí)驗(yàn)系統(tǒng)整體結(jié)構(gòu)如圖1所示,它由軟交換服務(wù)器、交換機(jī)、路由器、網(wǎng)關(guān)和VOIP電話等組成,包含了呼叫控制、管理、計(jì)費(fèi)、NAT穿越和各種增值業(yè)務(wù)等功能。整個(gè)軟交換通過Web頁面進(jìn)行配置和管理,操作起來簡(jiǎn)單、方便。
圖1 軟交換實(shí)驗(yàn)平臺(tái)的體系結(jié)構(gòu)圖
為了讓學(xué)生更加直觀地理解軟交換中的呼叫信令流程和媒體流程,實(shí)驗(yàn)平臺(tái)上需要一個(gè)用于監(jiān)聽和顯示SIP信令及媒體流的協(xié)議分析工具,該工具能對(duì)信令的數(shù)據(jù)包解析、保存、過濾和顯示,并且能夠自動(dòng)的繪制出通信的流程圖。本文設(shè)計(jì)的軟件是基于Linux平臺(tái),開發(fā)工具為QT4.0。
軟交換的實(shí)驗(yàn)平臺(tái)是在局域網(wǎng)的環(huán)境下,此環(huán)境下只要將主機(jī)設(shè)置成混雜模式就能監(jiān)聽到其他主機(jī)間通信的數(shù)據(jù)包;然后根據(jù)協(xié)議特征從截獲的數(shù)據(jù)包中提取出SIP和RTP協(xié)議的數(shù)據(jù)包;最后分析SIP和RTP的數(shù)據(jù)包,畫出相應(yīng)的流程圖。軟件的總體結(jié)構(gòu)如圖2所示,系統(tǒng)分為網(wǎng)絡(luò)數(shù)據(jù)包截獲模塊、數(shù)據(jù)包解析模塊、SIP及RTP消息流程顯示模塊。
圖2 軟件整體設(shè)計(jì)圖
數(shù)據(jù)包截獲模塊[6-8]主要是對(duì)局域網(wǎng)中所有的網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行采集,從采集的數(shù)據(jù)中分析出SIP數(shù)據(jù)包。正常情況下,網(wǎng)卡的缺省模式是廣播模式和直接模式,它只響應(yīng)目標(biāo)地址是本地的MAC地址數(shù)據(jù)幀和廣播幀,對(duì)于其他數(shù)據(jù)幀不予響應(yīng);當(dāng)網(wǎng)卡工作模式設(shè)置在混雜模式下時(shí),對(duì)于本局域網(wǎng)上的每一幀都接收。因此為了能夠截獲到局域網(wǎng)中所有的數(shù)據(jù)包,必須把用于數(shù)據(jù)包截獲的主機(jī)網(wǎng)卡設(shè)置為混雜模式。
在本文的設(shè)計(jì)中,這種對(duì)網(wǎng)卡混雜模式的設(shè)置是通過原始套接字(raw socket)來實(shí)現(xiàn)的,這也有別于通常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報(bào)套接字。在創(chuàng)建了原始套接字后,為了讓原始套接字能接收所有的數(shù)據(jù),還需要通過ioctl()來把網(wǎng)卡設(shè)置為混雜模式;完成以上設(shè)置就可以開始對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行截獲了,對(duì)數(shù)據(jù)包的接收的方式像流式套接字或數(shù)據(jù)報(bào)套接字方式通過recvfrom()函數(shù)來完成。數(shù)據(jù)包截獲的流程如圖3所示。
圖3 數(shù)據(jù)包截獲流程圖
此模塊的主要功能是從截獲的數(shù)據(jù)包中分析出SIP[9]和 RTP[10]的數(shù)據(jù)包,為后面的通信流程的繪制做準(zhǔn)備。由于SIP和RTP協(xié)議處于網(wǎng)絡(luò)中的應(yīng)用層,要解析出SIP和RTP的數(shù)據(jù)包,首先要對(duì)截獲的數(shù)據(jù)包分別去掉數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和傳輸層的包頭,然后根據(jù)SIP協(xié)議特征和RTP協(xié)議所在端口解析出對(duì)應(yīng)的數(shù)據(jù)包。SIP協(xié)議的特征是起始行的前7個(gè)字符為“SIP/2.0”,根據(jù)這個(gè)標(biāo)志就可以解析出SIP協(xié)議的數(shù)據(jù)包。SIP數(shù)據(jù)包解析的流程圖如圖4所示。
SIP協(xié)議在通信中一般帶有SDP協(xié)議,SDP實(shí)際上是用來描述多媒體會(huì)話通告、多媒體會(huì)話邀請(qǐng)和其他形式的多媒體會(huì)話初始化的協(xié)議。SDP為SIP協(xié)議在通信過程中協(xié)商通信雙方媒體流的端口、編碼和會(huì)話信息起到了重要作用。一般在SIP信令通信完成的最后一個(gè)應(yīng)答消息200OK中的SDP協(xié)議部分給出通信雙發(fā)協(xié)商的RTP端口[11](見圖5)。RTP通信的端口為18314。RTP數(shù)據(jù)包就可以根據(jù)這個(gè)端口進(jìn)行監(jiān)聽,然后得到RTP的數(shù)據(jù)包。
圖4 SIP數(shù)據(jù)包解析流程圖
圖5 SIP應(yīng)答消息200OK的數(shù)據(jù)包
此模塊的主要功能是把截獲到的SIP數(shù)據(jù)包[12]和RTP數(shù)據(jù)包通過流程圖的形式顯示出來。SIP和RTP數(shù)據(jù)包被截獲后,存放在QList的鏈表模板類中,然后根據(jù)保存的SIP數(shù)據(jù)包和RTP數(shù)據(jù)包的源/目的IP地址、源/目的端口號(hào)、消息內(nèi)容和截獲時(shí)間等參數(shù)來繪制流程圖。繪制SIP及RTP通信的信令流程圖如圖6所示:當(dāng)有SIP消息到來時(shí)判斷此SIP消息的IP地址是否已經(jīng)存在,如果存在,則不生成新的地址欄豎線,根據(jù)SIP消息是請(qǐng)求消息還是應(yīng)答消息來區(qū)分SIP信令流程的位置和方向;如果不存在,則生成新的地址欄豎線,然后根據(jù)SIP消息是請(qǐng)求消息還是應(yīng)答消息來區(qū)分SIP信令流程的位置和方向。在RTP消息的端口處監(jiān)聽,當(dāng)RTP消息到來時(shí),根據(jù)RTP的端口來繪制RTP的信令流程圖。
由于這些信令是實(shí)時(shí)到來的,因此,圖像的繪制也要求具有實(shí)時(shí)性,如果采用一般的實(shí)時(shí)繪圖方式,即繪制一次,刷新一次屏幕的方式,會(huì)引起整個(gè)圖像的閃爍,所以在用QT繪制圖像時(shí)應(yīng)該采用雙緩沖技術(shù),即在內(nèi)存中創(chuàng)建一個(gè)與屏幕繪圖區(qū)域一致的對(duì)象,先將圖形繪制到內(nèi)存中的這個(gè)對(duì)象上,再一次性將這個(gè)對(duì)象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度,并且避免圖像的閃爍。
圖6 繪制SIP及RTP通信的信令流程圖
系統(tǒng)的測(cè)試環(huán)境如圖7所示。2個(gè)SIP的軟電話分別為:號(hào)碼104,IP地址為10.10.19.170;號(hào)碼103,IP地址為10.10.19.13,它們經(jīng)過軟交換服務(wù)器10.10.19.234進(jìn)行通信。在IP為10.10.19.110主機(jī)上分別運(yùn)行本軟件和Hammer Call Analyzer 1.6,去捕獲一次完整呼叫的流程,捕獲的結(jié)果如圖8所示。從圖8(a)中可以看出本軟件截獲的呼叫流程和圖8(b)一致,證明了本軟件通信信令截獲的正確性。同時(shí)本軟件不但截獲了呼叫SIP信令數(shù)據(jù)包的內(nèi)容和畫出了詳細(xì)的流程圖,而且還畫出通話語音RTP流程圖,因此本軟件對(duì)SIP的通話流程描述得更加詳細(xì),這比較適合實(shí)驗(yàn)教學(xué)的需要。
圖7 測(cè)試環(huán)境網(wǎng)絡(luò)結(jié)構(gòu)圖
圖8 捕獲一次完整呼叫的流程圖
本文實(shí)現(xiàn)的SIP協(xié)議分析軟件不但可以分析出SIP數(shù)據(jù)包的格式和內(nèi)容,而且能夠畫出通信的整體工作流程圖,該軟件不僅為學(xué)生學(xué)習(xí)SIP協(xié)議提供了幫助,還為檢測(cè)軟交換通信故障提供了支持,本軟件已經(jīng)應(yīng)用于多所高校的軟交換實(shí)驗(yàn)教學(xué)中,收到了良好的效果。
(References)
[1]趙學(xué)軍,陸力.軟交換技術(shù)與應(yīng)用[M].北京:人民郵電出版社,2004.
[2]徐培文,謝水珍,楊從保.軟交換與SIP實(shí)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,2007.
[3]殷形麗.高校軟交換試驗(yàn)教學(xué)網(wǎng)組網(wǎng)結(jié)構(gòu)研究[J].貴陽學(xué)院學(xué)報(bào):自然科學(xué)版,2010,5(2):53-55.
[4]趙東風(fēng),于曉磊,李文勛,等.高校通信實(shí)驗(yàn)室軟交換系統(tǒng)實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)科學(xué)與技術(shù),2011,9(5):1-3,8.
[5]張毅,馬丹,唐紅.軟交換實(shí)驗(yàn)系統(tǒng)SIP信令監(jiān)聽軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2010,34(10):74-76,83.
[6]周偉俊.NGN軟交換網(wǎng)絡(luò)信令監(jiān)測(cè)系統(tǒng)的研究和開發(fā)[D].上海:復(fù)旦大學(xué),2008.
[7]馬卉慧,董青,許都.軟交換中高速數(shù)據(jù)獲取與過濾系統(tǒng)的設(shè)計(jì)[J].信息工程大學(xué)學(xué)報(bào),2010,11(5):582-585,604.
[8]王權(quán),張訓(xùn)報(bào),李向.基于Linux系統(tǒng)的數(shù)據(jù)包截獲技術(shù)研究[J].計(jì)算機(jī)與數(shù)字工程,2009,37(4):64-66.
[9]IEIF RFC 3261.SIP:Session Initiation Protocol[S].2002.
[10]IEIF RFC 3550.RTP:Real-Time Transport Protocol[S].2003.
[11]IEIF RFC 2327.SDP:Session Description Protocol[S].2006.
[12]成潔,盧紫毅.Linux窗口程序設(shè)計(jì):Qt4精彩實(shí)例分析[M].北京:清華大學(xué)出版社,2008.