饶鹏
摘要: VOCAL是基于SIP协议的VoIP开源系统。而Marshal是VOCAL系统SIP消息的中转站,研究Marshal模块有助于了解VOCAL系统对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系统
VOCAL(Vovida Open Communication Application Library)系统是一个分布式网络服务器,由Vovida网络公司开发的,用以提供VoIP电话服务的开源代码。[2]VOCAL系统是基于SIP协议[1,3]开发的,它的最新版本VOCAL-1.5.0支持RFC 3261。VOCAL系统源码可以从http://www.vovida.org/下载。
1.1 VOCAL系统所用的协议栈
基于SIP的VOCAL系统所使用的协议栈结构如图1所示。媒体传送层和H.323系统相同,采用PCM 编码或各种压缩编码的话音信号经RTP 协议封装后在IP网络上传送,并用RTCP 监测传送的QoS。任选协议RSVP 用于资源预留,用以保证传送的QoS。
1.2 VOCAL系统的拓扑结构
VOCAL是一个分布式体系结构,由多个各司其职的服务器组成,有代理服务器(Marshal Server),重定向服务器(Redirect Server),数据提供服务器(Provisioning Server),特征服务器(Feature Server),实时记费/账单服务器(CDR Server),心跳服务器(Heartbeat Server)等。
VOCAL的主要功能模块有:
1)Marshal Server(MS): Marshal服务器可以看作是所有SIP信息流入VOCAL系统的接口,终端必须通过与MS的连接和交互从而达到会话的初始化。它的功能包括:基本的安全与认证、SIP信息的分流与传输、话费信息的记录与控制。
2)Redirect Server(RS): 重定向服务器负责对所有SIP信息的重定向,注册和定位。RS中存储了所有已注册用户的连接和特性信息。
3)Call Detail Record Server(CDRS): 会话细节服务器从MS接收会话信息,转换成标准的会话记录,并传送给第三方计费模块完成计费功能。
4)Feature Server(FS): 特征服务器提供特征服务,如呼叫前移和呼叫限制等功能。
5)Provisioning Server(PS): Provisioning服务器存储所有系统用户的信息,和各模块的初始化系统信息,并在需要的时候向各模块分发相关的信息。PS提供一个基于网络的图形界面供系统管理员对系统进行配置和管理。
6)Heartbeat Server(HS): 心跳服务器监控各模块间的信息流动,并向系统管理员提供相关的信息。而这些信息将有助于系统管理员判断各模块是否正常工作。
2 Marshal Server结构
Marshal Server是整个VOCAL系统与网络上别的SIP实体之间交换SIP消息的中转站,它负责接收来自外部SIP实体的消息,对接收到的消息进行分析以后,生成响应消息,同时把原消息转发给其他服务器或者外部设备,其结构如图3所示。
系统中Marshal Server充当的职能我们分别用三种名称来称呼它: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中取得用户数据对之进行认证,如果用户合法,则在Redirect Server登记该用户的Contact项,以便寻址;如果是Invite消息,则User Agent Marshal Server从Redirect Server得到路由,然后把消息转发给相应的Marshal Server或UA;如果是状态信息则把其按Via倒序转发出去。Heartbeat Server使用来监控其他服务器是否正常运行的,如果某服务器进程转入不活动状态,则Heartbeat 可以重起它。Feature Server可以用来VoIP的增值业务。Billing Server用来对业务进行实时计费,同时可以提供帐户详细通话清单。软交换系统内部各服务器之间使用TCP进行数据传输。
3 Marshal Server对SIP消息的处理
由于Marshal Server采用的是无状态服务器模型,对SIP事件的处理过程实际上是调用自己的函数处理器(Operator)完成,形式如下:代理服务器拥有的Operator 有MrshlOpAck 、MrshlOpBye、MrshlProxyOpCancel 、MrshlOpInvite 、MrshlOptions 、MrshlOpRegister、MrshlOpStatus。前面六个用来处理相应的六个SIP 请求消息,最后一个用来处理响应消息。
Marshal创建两个线程对SipMsg进行处理,SipThread将从SipStack中获得的信息,按照其种类包装成对应的SipEvent,并送到输出队列;WorkThread从队列中获得消息并区分消息种类送到相应的函数来进一步处理;SipThread和WorkThread共用同一存储空间。
4 总结
本文介绍了基于SIP协议的VOCAL系统的协议栈、拓扑结构,并详细分析了VOCAL系统的SIP信息中转站Marshal Server,分析了Marshal Server的结构以及消息处理机制。
参考文献:
[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.