引 言: 本文所述的基于SIP協議的客戶端,采用ActiveX控件嵌入方式,嵌入企業網站。在客戶使用系統默認瀏覽器安全模式下,客戶機通過ActiveX控件方式,在客戶打開企業網頁時,自動下載到客戶Pc終端,無需客戶安裝軟件。OSIP是使用標準C語言編寫的一個開源SIP協議棧。本設計采用0SIP協議棧并在其基礎上設計出完整的SIP模塊以完成呼叫管理中心客戶端的信令功能。
1 SIP協議
IETF組織于1999年提出了一個在基于IP網絡中實現實時通信的一種信令協議,會話初始協議。其作用在于建立、修改、釋放多媒體會話。在會話過程中,SIP只起到保持會話的作用,而會話本身則不是由SIP來完成的。SIP的請求消息中必須給出描述會話特征的信息。
SIP采用客戶端/服務器的工作方式。SIP網絡包含了兩類組件:用戶代理和網絡服務器。
SIP請求消息是由客戶端發往服務器端的消息。共定義了六個方法名:INVITE、ACK、CANCEL、BYE、REGISTER、OPTIONS。SIP應答消息是由服務器返回客戶端的消息,用以指明進程狀態。
2 OSIP協議棧分析
OSIP是按照RFC3261和RFC2327標準,并使用標準C編寫的一個SIP協議棧,它是一個公開源碼的免費協議棧。OSIP協議棧結構簡單而小巧,它并不提供高層的SIP會話控制的API,它主要提供一些解析SIP俗DP消息的API和事務處理的狀態機。OSIP主要包括三大部分的內容:解析器模塊、狀態機模塊和工具模塊。OSIP狀態機主要分為四種:INVITE客戶端事務、非INVITE客戶端事務、INVITE服務器端事務、非INⅥTE服務器端事務。
3 客戶端的設計
SIP客戶端的功能主要是以下兩個方面:a.SIP客戶端的注冊功能;b.會話的建立、維持和終止功能。客戶端總體包括以下幾個部分:主控模塊、SIP模塊、音頻媒體處理模塊、網絡模塊。其中SIP模塊中包括SIP UA外圍模塊、OSIP協議棧;音頻媒體處理模塊包括音頻設備接口模塊、音頻編碼解碼模塊、RTP、RTCP模塊。
3.1 主控模塊
主控模塊完成了用戶界面的設計,為用戶提供了用戶注冊、發起會話邀請、接收會話邀請和結束會話等操作功能。其中當選擇使用代理服務器后。用戶向對方發起砰叫請求時就會通過此代理服務器進行轉發。此時,用戶僅需要輸入對方的SIP呼叫地址,即可發出呼叫邀請。當接收到呼叫請求時,可以點擊接聽按鈕選擇同意會話。當雙方任意一方點擊掛斷按鈕,便終止了會話,程序回到初始狀態等待下一次會話操作。設計用戶界面時,建立一個對話框類CsipphoneDlg,在此基礎上創建了界面元素call和disconnect按鈕。用戶界面主要基于一個對話框,主要界面元素有按鈕、輸入框、狀態欄等。輸入框可以用來輸入SIP地址。在已經輸入呼叫地址的情況下,可以選中call”按鈕進行呼叫通信,下方的狀態欄會顯示服務器注冊等相應狀態信息。通信時,若有一方想結束對話,可以點擊disconnect”按鈕結束對話。
在主控模塊中完成了對SIP模塊、網絡傳輸模塊、和音頻處理模塊的初始化工作,給各個模塊分配了資源,創建了各模塊的對象,調用相應程序初始化甬數。
3.2 SIP模塊
在OSIP特點分析中,我們提到OSIP結構比較簡單,并不提供SIP消息的上層管理功能,因此我們需要自己設計UA外嗣模塊。UA外圍模塊是以OSIP協議棧為核心的UA級別的模塊,主要負責對OSIP協議棧的管理,接受用戶發出的消息或者指令并將其轉換成相應的事件交由狀態機進行處理。OSIP協議棧和其上層的UA外圍模塊共同組成SIP模塊,完成了SIP會話功能。
UA外圍模塊主要包括四個類:SipUA、SipManager、SipDialog、SipMessage。
SipUA主要封裝了本地uA需要使用的一些必要信息,比如本地uA的標識、本地主機的IP地址、SIP端口等等。在程序初始化的時候創建本地UA實例,對本地UA信息進行管理,同時也調用函數對OSIP協議棧進行初始化。SipUA以通過set-all-callbacks()函數注冊了回調甬數。大部分的回調函數用來使底層狀態機將當前事件執行狀態通知給上層TU,等待TU對其作出處理。利用回調機制可以使底層狀態機同上層Tu協調運作,共同完成事務的處理工作。
SipManager用來管理本地UA上運行的OSIP協議棧。SipManager對象包含一個OSIP核心協議棧的osip—t對象。在OSIP結構分析中我們談到osip-t包含了所有狀態機調用的回調函數,它用來對所有回調甬數進行管理。因此SipManager通過osip-t對象實現了對核心協議棧中完成交互功能的回調甬數的管理。
SipDialog實現了對話的管理工作。它包含了OSIP協議棧中對話塒象dialog-t,其在某一對話開始時對對話的ID、對話的類型、和當前對話的狀態等進行設置。SipDidog類也包含了一系列的事務對象指針,在程序運行時指向當前對話正在處理的事務。
SipMessage主要實現了對話處理、SDP消息處理等具體功能。在對話處理方面,OSIP協議棧已經提供了SIP對話處理的基本機制,UA層在它的基礎上設計了UA級別的對話處理方法。這些塒話處理函數實現了基于對話的UA發送會話請求,產生應答以及對話管理等高層用戶調用功能;為應用程序層操作SIP模塊提供了接口。
3.3 網絡傳輸模塊
Socket是一種基于TCP/IP的網絡編程接口,它采用客戶端,服務器通信模式,客戶端和服務器端通過Socket接幾在剛絡上實現連接和數據交換。它提供了一系列系統調用,使得用戶可以方便的使用TCP和UDP等網絡協議實現通信。由于UDP提供的是無連接、不可靠的數據報傳遞服務,傳輸效率比較高,特別適合于實時性要求高的數據傳輸場合。同時在SIP模塊中SIP信令采取的重傳機制和握手機制,避免了SIP消息數據在傳輸過程中的丟包現象,因此本文采用UDP的數據報模式實現了SIP電話終端中的信令消息和音頻媒體信息的傳輸。
3.4 音頻媒體處理模塊
音頻多媒體通信功能由終端中的音頻設備接口模塊、音視頻編解碼模塊和RTP模塊共同完成,我們把它們合稱為音頻多媒體處理模塊。媒體處理模塊是Windows平臺SIP終端得重要組成部分,它負責原始音頻、視頻數據的采集、編碼和回放等功能。本文音頻處理部分采用Windows提供的底層音頻函數來實現,將G729作為音頻壓縮方案,RTP實時傳輸控制部分采用RTPLIB庫開發實現。
4 總 結
設計了一個基于SIP的在線呼叫管理中心客戶端。基于SIP協議的客戶機采用ActiveX控件嵌入方式,嵌入企業網站。在客戶使用系統默認瀏覽器安全模式下,客戶機通過AetiveX控件方式。在客戶打開企業網頁時,自動下載到客戶PC終端,無需客戶安裝軟件。目前基于SIP協議的客戶端項目還在進行當中,該系統功能還不是十分完善,一些問題沒有解決,還存在許多需要進一步研究的地方。本系統對視頻編解碼格式還不支持,不能實現視頻對話,下一步可以考慮傲視頻語音編碼的項目,通過改進客戶端的媒體庫,增強系統性能。
總之,SIP協議作為一個新興而結合NGN要求的技術極具發展潛力。隨著下一代網絡的到來和3G通信技術的發展,對這一協議的研究會具有越來越重要的現實意義。