基于SIP的B2BUA服务器设计

时间:2022-08-17 12:28:33

基于SIP的B2BUA服务器设计

【摘要】 Session Initiation Protocol(SIP)是下一代网络的核心控制协议,用于在IP数据网络上建立、改变和结束多媒体会话。SIP服务器作为下一代网络的核心设备,它的实现就显得尤为重要。一种方法是服务器Proxy,它只在SIP交互时保存状态,而不是在整个呼叫中维护状态,这限制了服务器更大范围的应用。另一种方法是背对背的用户(B2BUA,Back-to-Back User Agent)服务器,它在整个呼叫过程中都维护状态。文章从SIP协议的基本原理出发,利用reSIProcate协议栈实现SIP B2BUA服务器并对其做了压力测试。

【关键词】 RFC 3261 SIP B2BUA

一、SIP协议

SIP是2001年推出的IETF标准(RFC 3261),用于在IP数据网络上建立、改变和结束多媒体会话。SIP系统采用C/S模型,定义了服务器和用户。SIP系统的端系统称为用户(User Agent,UA),包含用户客户端(User Agent Client,UAC)和用户服务器(User Agent Server,UAS)。UAC负责呼叫的发出,而UAS负责呼叫的接收。

典型的基于Proxy的呼叫过程为:主叫方向被叫方发出INVITE请求消息,开始建立会话。Proxy接收到这条消息时会回复一条100 Trying告诉主叫方消息正在处理,然后INVITE消息经过Proxy路由转发到被叫方,被叫方回复100 Trying 和180 Ringing响铃,被叫方接听回复200 OK,主叫方回复ACK,会话建立。要结束会话时,其中一方发送BYE消息,另外一方回复200 OK。

二、B2BUA服务器介绍

按照RFC 3261中的定义,B2BUA是一个逻辑实体,它就像UAS一样接收和处理请求。为了决定该如何应答一个请求,B2BUA又像UAC一样工作,并且发出请求。但是它不像Proxy,它维持对话状态,并且参与已经建立的对话中的每一个请求。

B2BUA系统主要由三个逻辑单元组成,两个UA和一个会话控制逻辑单元;逻辑单元之间通过事件进行交互,每一个UA代表着一个状态机,它从终端接收消息,并根据接收到消息的类型和当前UA的状态触发相应事件。而会话控制逻辑单元充当桥梁,它根据自己当前的状态和每个UA之间的状态,在UA之间传递相应事件。因此,本文使用B2BUA实现SIP服务器。

三、B2BUA服务器设计框架

B2BUA服务器总体设计的框架如图1所示,设计结构从上到下分为事务用户层、事务层、传输层。传输层定义服务器如何接收请求和发送应答。事务层处理应用层的重发、匹配请求的应答以及应用层的超时。在事务层之上是事务用户,每次它发送一个请求就创建一个客户事务实例并且和请求一起发送。事务用户可以创建事务也可以取消事务。

服务器架构中的数据库存储本地的用户信息;WebThread对数据库进行配置,包括添加删除用户等;事务层中的TransactionConTroller负责与事务用户层进行交互,TransportSeletor负责跟传输层的交互;事务用户层中的Register处理用户注册消息,B2B模块则是B2BUA服务器设计的核心,它负责处理会话的消息,包括会话的建立会话的拆除等。因此,它的合理设计对服务器的性能有很大的影响,所以B2B模块采用多线程的设计模式,包含两个线程,一个是MyDUMThread,一个是B2BCallThread。这两个线程的同步并发处理实现了服务器优越的性能。

四、服务器性能测试

SIPp是一个测试SIP协议性能的工具软件。它是一个GPL的开放源码软件。首先,SIPp包含了一些基本的用户工作流程(UAC和UAS),并可使用INVITE和BYE建立和释放多个呼叫。统计服务器性能数据,包括:呼叫速率、信号来回的延迟,以及消息统计等。另外,SIPp实现对许多实际的SIP设备的自动测试,如对SIP服务器、B2BUA服务器等设备的测试,检测所开发设备是否达到设计要求,帮助开发人员及时发现设计中存在的问题。

SIP B2BUA的测试环境如图2所示。服务器的PC机硬件配置是:Intel(R) Xeon(R) CPU E3-1240 v2 @ 3.4 GHz、 2.0 GB的内存物理地址扩展、Broadcon NetXtreme Gigabit Ethernet网卡。操作系统采用Ubuntu 12.04。UAC与UAS处理消息的机制是:UAC给服务器发送INVITE,然后会等待服务器回复的180 Ringing和200 OK,当收到200 OK之后,UAC给服务器发送ACK,此时UAC启动2000ms定时器,模拟RTP传输。2000ms之后,UAC给服务器发BYE。当收到服务器回复200 OK,表明一个完整的会话呼叫建立和终止过程就此结束。而UAS是首先等待服务器发过来的INVITE消息,当接收到INVITE消息时,给服务器回复180 Ringing,再回复200 OK。然后继续等待服务器发过来的ACK及BYE消息,收到BYE后给服务器回复200 OK,这样UAS一个完整的呼叫过程建立和结束会话也结束了。最后测得服务器的最大负载是110cps,也就是说服务器可以处理的最大能力是终端每秒钟110个INVITE消息请求。

五、结论

文章从SIP的基本原理出发,说明Proxy只是事务有状态的,因此它不具备很多B2BUA服务器的特性,这对实现服务器增值业务功能非常不利。基于这个原因,文章详细阐述了B2BUA服务器的设计,并对服务器做了测试,证明实现了服务器优越的性能。

参 考 文 献

[1] J.Rosenberg,H.Schulzrinne,G.Canarillo etal,SIP:session Initiation Protocol,RFC 3261,December,2002

[2] 黄永锋,李建庆等. 下一代网络核心控制协议-SIP及其应用[M]. 人民邮电出版社. 2009

[3] Trac.SIP B2BUA[EB/OL].[2012-3-20]. http:///wiki/B2BUADocumentation

上一篇:网络安全技术在大学校园网络安全管理中的应用 下一篇:简论短波宽带全向天线的应用