涂繼輝,佘新平,陳永軍
(長江大學 電信學院,湖北 荊州 434023)
軟交換是基于分組網利用程控軟件提供呼叫控制功能和媒體處理相分離的設備和系統,它將呼叫控制功能從媒體網關中分離出來,通過軟件實現基本呼叫控制功能,從而實現呼叫傳輸與呼叫控制的分離,為控制、交換和軟件可編程功能建立分離的平面。會話初始協議(Session Initiation Protocol,SIP)作為軟交換的核心協議之一,具有協議結構簡單、支持多媒體業務的開展、符合互聯網網絡結構等特點,它主要用來建立、修改和終止多媒體會話[1-2]。隨著軟交換技術的日益發展,許多高校的現代交換原理課程中都引入了軟交換理論的學習和實驗[3-4]。因此,在軟交換實驗中設計一套SIP協議的可視化分析軟件配合理論教學,使學生深入理解和掌握SIP工作原理勢在必行。
目前用于教學的SIP協議分析工具主要有兩種類型:一種是只能抓取SIP協議的數據包,并分析數據包的格式和內容,比如Ethereal,這類工具很難讓學生直觀了解到整個信令的工作流程;另外一種是不但可以分析出SIP數據包的格式和內容,還可以畫出整體工作流程圖,比如hammer和文獻[5]中提出的工具,但是這些僅僅給出了SIP信令的流程,沒有給出RTP的通信流程,因此,無法完整觀察到語音通信流程。本文總結了前面提到的SIP協議分析軟件的弊端,提出了一種新的SIP協議分析軟件,該軟件不僅能分析出SIP協議的數據包格式,而且可以畫出一次通話過程中SIP和RTP的流程圖,這為學生更直觀地學習和研究SIP協議通信流程具有重要的實際價值。
軟交換實驗系統是為“現代交換原理”課程開設的實驗平臺,用來讓學生深入學習和了解軟交換中的呼叫信令流程、媒體流程、增值業務及網絡架構。實驗系統整體結構如圖1所示,它由軟交換服務器、交換機、路由器、網關和VOIP電話等組成,包含了呼叫控制、管理、計費、NAT穿越和各種增值業務等功能。整個軟交換通過Web頁面進行配置和管理,操作起來簡單、方便。

圖1 軟交換實驗平臺的體系結構圖
為了讓學生更加直觀地理解軟交換中的呼叫信令流程和媒體流程,實驗平臺上需要一個用于監聽和顯示SIP信令及媒體流的協議分析工具,該工具能對信令的數據包解析、保存、過濾和顯示,并且能夠自動的繪制出通信的流程圖。本文設計的軟件是基于Linux平臺,開發工具為QT4.0。
軟交換的實驗平臺是在局域網的環境下,此環境下只要將主機設置成混雜模式就能監聽到其他主機間通信的數據包;然后根據協議特征從截獲的數據包中提取出SIP和RTP協議的數據包;最后分析SIP和RTP的數據包,畫出相應的流程圖。軟件的總體結構如圖2所示,系統分為網絡數據包截獲模塊、數據包解析模塊、SIP及RTP消息流程顯示模塊。

圖2 軟件整體設計圖
數據包截獲模塊[6-8]主要是對局域網中所有的網絡數據包進行采集,從采集的數據中分析出SIP數據包。正常情況下,網卡的缺省模式是廣播模式和直接模式,它只響應目標地址是本地的MAC地址數據幀和廣播幀,對于其他數據幀不予響應;當網卡工作模式設置在混雜模式下時,對于本局域網上的每一幀都接收。因此為了能夠截獲到局域網中所有的數據包,必須把用于數據包截獲的主機網卡設置為混雜模式。
在本文的設計中,這種對網卡混雜模式的設置是通過原始套接字(raw socket)來實現的,這也有別于通常使用的數據流套接字和數據報套接字。在創建了原始套接字后,為了讓原始套接字能接收所有的數據,還需要通過ioctl()來把網卡設置為混雜模式;完成以上設置就可以開始對網絡數據包進行截獲了,對數據包的接收的方式像流式套接字或數據報套接字方式通過recvfrom()函數來完成。數據包截獲的流程如圖3所示。

圖3 數據包截獲流程圖
此模塊的主要功能是從截獲的數據包中分析出SIP[9]和 RTP[10]的數據包,為后面的通信流程的繪制做準備。由于SIP和RTP協議處于網絡中的應用層,要解析出SIP和RTP的數據包,首先要對截獲的數據包分別去掉數據鏈路層、網絡層和傳輸層的包頭,然后根據SIP協議特征和RTP協議所在端口解析出對應的數據包。SIP協議的特征是起始行的前7個字符為“SIP/2.0”,根據這個標志就可以解析出SIP協議的數據包。SIP數據包解析的流程圖如圖4所示。
SIP協議在通信中一般帶有SDP協議,SDP實際上是用來描述多媒體會話通告、多媒體會話邀請和其他形式的多媒體會話初始化的協議。SDP為SIP協議在通信過程中協商通信雙方媒體流的端口、編碼和會話信息起到了重要作用。一般在SIP信令通信完成的最后一個應答消息200OK中的SDP協議部分給出通信雙發協商的RTP端口[11](見圖5)。RTP通信的端口為18314。RTP數據包就可以根據這個端口進行監聽,然后得到RTP的數據包。

圖4 SIP數據包解析流程圖

圖5 SIP應答消息200OK的數據包
此模塊的主要功能是把截獲到的SIP數據包[12]和RTP數據包通過流程圖的形式顯示出來。SIP和RTP數據包被截獲后,存放在QList的鏈表模板類中,然后根據保存的SIP數據包和RTP數據包的源/目的IP地址、源/目的端口號、消息內容和截獲時間等參數來繪制流程圖。繪制SIP及RTP通信的信令流程圖如圖6所示:當有SIP消息到來時判斷此SIP消息的IP地址是否已經存在,如果存在,則不生成新的地址欄豎線,根據SIP消息是請求消息還是應答消息來區分SIP信令流程的位置和方向;如果不存在,則生成新的地址欄豎線,然后根據SIP消息是請求消息還是應答消息來區分SIP信令流程的位置和方向。在RTP消息的端口處監聽,當RTP消息到來時,根據RTP的端口來繪制RTP的信令流程圖。
由于這些信令是實時到來的,因此,圖像的繪制也要求具有實時性,如果采用一般的實時繪圖方式,即繪制一次,刷新一次屏幕的方式,會引起整個圖像的閃爍,所以在用QT繪制圖像時應該采用雙緩沖技術,即在內存中創建一個與屏幕繪圖區域一致的對象,先將圖形繪制到內存中的這個對象上,再一次性將這個對象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度,并且避免圖像的閃爍。

圖6 繪制SIP及RTP通信的信令流程圖
系統的測試環境如圖7所示。2個SIP的軟電話分別為:號碼104,IP地址為10.10.19.170;號碼103,IP地址為10.10.19.13,它們經過軟交換服務器10.10.19.234進行通信。在IP為10.10.19.110主機上分別運行本軟件和Hammer Call Analyzer 1.6,去捕獲一次完整呼叫的流程,捕獲的結果如圖8所示。從圖8(a)中可以看出本軟件截獲的呼叫流程和圖8(b)一致,證明了本軟件通信信令截獲的正確性。同時本軟件不但截獲了呼叫SIP信令數據包的內容和畫出了詳細的流程圖,而且還畫出通話語音RTP流程圖,因此本軟件對SIP的通話流程描述得更加詳細,這比較適合實驗教學的需要。

圖7 測試環境網絡結構圖

圖8 捕獲一次完整呼叫的流程圖
本文實現的SIP協議分析軟件不但可以分析出SIP數據包的格式和內容,而且能夠畫出通信的整體工作流程圖,該軟件不僅為學生學習SIP協議提供了幫助,還為檢測軟交換通信故障提供了支持,本軟件已經應用于多所高校的軟交換實驗教學中,收到了良好的效果。
(References)
[1]趙學軍,陸力.軟交換技術與應用[M].北京:人民郵電出版社,2004.
[2]徐培文,謝水珍,楊從保.軟交換與SIP實用技術[M].北京:機械工業出版社,2007.
[3]殷形麗.高校軟交換試驗教學網組網結構研究[J].貴陽學院學報:自然科學版,2010,5(2):53-55.
[4]趙東風,于曉磊,李文勛,等.高校通信實驗室軟交換系統實驗設計[J].實驗科學與技術,2011,9(5):1-3,8.
[5]張毅,馬丹,唐紅.軟交換實驗系統SIP信令監聽軟件的設計與實現[J].電視技術,2010,34(10):74-76,83.
[6]周偉俊.NGN軟交換網絡信令監測系統的研究和開發[D].上海:復旦大學,2008.
[7]馬卉慧,董青,許都.軟交換中高速數據獲取與過濾系統的設計[J].信息工程大學學報,2010,11(5):582-585,604.
[8]王權,張訓報,李向.基于Linux系統的數據包截獲技術研究[J].計算機與數字工程,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窗口程序設計:Qt4精彩實例分析[M].北京:清華大學出版社,2008.