饒鵬
摘要: VOCAL是基于SIP協(xié)議的VoIP開源系統(tǒng)。而Marshal是VOCAL系統(tǒng)SIP消息的中轉(zhuǎn)站,研究Marshal模塊有助于了解VOCAL系統(tǒng)對SIP消息的處理。
關鍵詞:VOCAL; Marshal; SIP; VoIP
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)22-0045-02
Abstract: VOCAL system is an open source VoIP system based on SIP. Marshal server is the transfer station for SIP messages. It helps to understand how the VOCAL system deal with SIP messages by analysis of Marshal server.
Key words: VOCAL; Marshal; SIP; VoIP
1 VOCAL系統(tǒng)
VOCAL(Vovida Open Communication Application Library)系統(tǒng)是一個分布式網(wǎng)絡服務器,由Vovida網(wǎng)絡公司開發(fā)的,用以提供VoIP電話服務的開源代碼。[2]VOCAL系統(tǒng)是基于SIP協(xié)議[1,3]開發(fā)的,它的最新版本VOCAL-1.5.0支持RFC 3261。VOCAL系統(tǒng)源碼可以從http://www.vovida.org/下載。
1.1 VOCAL系統(tǒng)所用的協(xié)議棧
基于SIP的VOCAL系統(tǒng)所使用的協(xié)議棧結(jié)構如圖1所示。媒體傳送層和H.323系統(tǒng)相同,采用PCM 編碼或各種壓縮編碼的話音信號經(jīng)RTP 協(xié)議封裝后在IP網(wǎng)絡上傳送,并用RTCP 監(jiān)測傳送的QoS。任選協(xié)議RSVP 用于資源預留,用以保證傳送的QoS。
1.2 VOCAL系統(tǒng)的拓撲結(jié)構
VOCAL是一個分布式體系結(jié)構,由多個各司其職的服務器組成,有代理服務器(Marshal Server),重定向服務器(Redirect Server),數(shù)據(jù)提供服務器(Provisioning Server),特征服務器(Feature Server),實時記費/賬單服務器(CDR Server),心跳服務器(Heartbeat Server)等。
VOCAL的主要功能模塊有:
1)Marshal Server(MS): Marshal服務器可以看作是所有SIP信息流入VOCAL系統(tǒng)的接口,終端必須通過與MS的連接和交互從而達到會話的初始化。它的功能包括:基本的安全與認證、SIP信息的分流與傳輸、話費信息的記錄與控制。
2)Redirect Server(RS): 重定向服務器負責對所有SIP信息的重定向,注冊和定位。RS中存儲了所有已注冊用戶的連接和特性信息。
3)Call Detail Record Server(CDRS): 會話細節(jié)服務器從MS接收會話信息,轉(zhuǎn)換成標準的會話記錄,并傳送給第三方計費模塊完成計費功能。
4)Feature Server(FS): 特征服務器提供特征服務,如呼叫前移和呼叫限制等功能。
5)Provisioning Server(PS): Provisioning服務器存儲所有系統(tǒng)用戶的信息,和各模塊的初始化系統(tǒng)信息,并在需要的時候向各模塊分發(fā)相關的信息。PS提供一個基于網(wǎng)絡的圖形界面供系統(tǒng)管理員對系統(tǒng)進行配置和管理。
6)Heartbeat Server(HS): 心跳服務器監(jiān)控各模塊間的信息流動,并向系統(tǒng)管理員提供相關的信息。而這些信息將有助于系統(tǒng)管理員判斷各模塊是否正常工作。
2 Marshal Server結(jié)構
Marshal Server是整個VOCAL系統(tǒng)與網(wǎng)絡上別的SIP實體之間交換SIP消息的中轉(zhuǎn)站,它負責接收來自外部SIP實體的消息,對接收到的消息進行分析以后,生成響應消息,同時把原消息轉(zhuǎn)發(fā)給其他服務器或者外部設備,其結(jié)構如圖3所示。
系統(tǒng)中Marshal Server充當?shù)穆毮芪覀兎謩e用三種名稱來稱呼它:User Agent Marshal Server、Inter Network Marshal Server、Gateway Marshal Server,三類Marshal Server之間可以使用TCP/UDP進行傳輸。User Agent連接到User Agent Marshal Server,User Agent Marshal Server收到SIP消息之再完成相應的動作。如果是Register消息,則User Agent Marshal Server從Provisioning Server中取得用戶數(shù)據(jù)對之進行認證,如果用戶合法,則在Redirect Server登記該用戶的Contact項,以便尋址;如果是Invite消息,則User Agent Marshal Server從Redirect Server得到路由,然后把消息轉(zhuǎn)發(fā)給相應的Marshal Server或UA;如果是狀態(tài)信息則把其按Via倒序轉(zhuǎn)發(fā)出去。Heartbeat Server使用來監(jiān)控其他服務器是否正常運行的,如果某服務器進程轉(zhuǎn)入不活動狀態(tài),則Heartbeat 可以重起它。Feature Server可以用來VoIP的增值業(yè)務。Billing Server用來對業(yè)務進行實時計費,同時可以提供帳戶詳細通話清單。軟交換系統(tǒng)內(nèi)部各服務器之間使用TCP進行數(shù)據(jù)傳輸。
3 Marshal Server對SIP消息的處理
由于Marshal Server采用的是無狀態(tài)服務器模型,對SIP事件的處理過程實際上是調(diào)用自己的函數(shù)處理器(Operator)完成,形式如下:代理服務器擁有的Operator 有MrshlOpAck 、MrshlOpBye、MrshlProxyOpCancel 、MrshlOpInvite 、MrshlOptions 、MrshlOpRegister、MrshlOpStatus。前面六個用來處理相應的六個SIP 請求消息,最后一個用來處理響應消息。
Marshal創(chuàng)建兩個線程對SipMsg進行處理,SipThread將從SipStack中獲得的信息,按照其種類包裝成對應的SipEvent,并送到輸出隊列;WorkThread從隊列中獲得消息并區(qū)分消息種類送到相應的函數(shù)來進一步處理;SipThread和WorkThread共用同一存儲空間。
4 總結(jié)
本文介紹了基于SIP協(xié)議的VOCAL系統(tǒng)的協(xié)議棧、拓撲結(jié)構,并詳細分析了VOCAL系統(tǒng)的SIP信息中轉(zhuǎn)站Marshal Server,分析了Marshal Server的結(jié)構以及消息處理機制。
參考文獻:
[1] Network Working Group. RFC 3261 SIP:Session Initiation Protocol, 2002.
[2] VOCAL Users Guide Software Version 1.5.0 Guide Revision 2,2003.
[4] 白建軍, 彭暉, 田敏. SIP揭密 [M]. 北京: 人民郵電出版社, 2003:63-75.