基于SIP的视频会议系统模型、协议栈及相关扩展的研究
A层向上层提供网络通信功能,直接与网络层交互。A层将SIP消息通过UDP数据报发送出去,并将收到的UDP数据报上报至B层。
B层把c层传下来的内部消息格式转换成符合SIP规范的消息,并对A层传上来的UDP数据包进行词法分析,以生成内部SIP消息格式。B层根据C层的指示,采用指数衰减方式对SIP消息进行重传,以保证SIP消息的可靠性。
c层分为Client和Server,分别支持D层的客户方和各种服务器。其状态处理器向本层和D层提供接口,维护SIP消息的状态。c层还负责基于UDP传输时SIP消息的重传管理,包括过滤收到的重传SIP消息和指示B层对发出的SIP消息进行重传。
D层包含有用户代理和多种SIP服务器,对SIP请求消息和相应的响应消息进行语义处理。用户代理包括UAC和UAS,完成用户的全双工呼叫功能;代理服务器同时具备客户方和服务器方的能力,负责对用户呼叫的代理;重定向服务器负责对用户呼叫的重定向;注册服务器负责提供用户位置的登记功能。D层向上面的应用层提供灵活、方便的接口。
E层为各种应用程序(包括会议电话、基于IP网的VPN业务、接入智能网的点击拨号业务等)利用D层提供的接口来使用SIP服务。E层不属于SIP协议栈的范畴。
上述层次结构中,各层之间可并发执行,提供SIP协议栈的第一级并发机制。在两层之间接口不变的情况下,任何一层的修改都不会影响相邻层的软件,有效支持了SIP协议的可扩展性。由于C层和B层屏蔽了底层传输协议的使用情况,D层和E层不需了解具体的传输协议,使SIP协议栈易于使用多种传输协议。
此外,D层提供了丰富的接口,作为通信核心,可支持各种不同的应用程序。A、B、C层可以被不同的SIP实体(用户代理,各种服务器)重用,重用颗粒由传统的类重用扩大为软件构件的重用,大大缩小了软件开发周期。
因此开发一个良好的SIP协议栈不是一件容易的事情,需要做大量的工作,从头做起,需要很多时间。
因此,在现有的协议栈的基础上,进行一定的修改,以更适应视频会议系统的需要,是个明智的选择。考虑现有的协议栈,很自然的就会想起各种SIP开源协议栈。
开源SIP协议栈
(1)OPAL
OPAL是Open Phone Abstraction Library,是Openh323的下一个版本,它仍然使用了Openh323的体系结构,并在其基础上进行扩展,同时实现了SIP、H.323,但在音频和视频的编码和传输部分有较大改动。OPAL初衷设计是包含任何电话通信协议,所以其底层进行了高度的抽象化,所以也能够很容易的支持MGCP、PSTN和将来会出现的协议。不过由于Openh323的最后一个版本还在开发中,所以原本6月发布的OPAL也被推迟,现有的OPAL还非常不完善,BUG也非常多,不过以Openh323的开发班底,让OPAL十分优秀是可能的。
(2)VOCAL
VOCAL是vovida.org开发的SIP系统,VOCAL应该是目前功能最完善,使用者最多的开源SIP协议栈了。它不只包括了协议栈,还包括了H.323与SIP转换网关,对SIP的各种Server的功能支持也非常完善。不过很可惜,不支持Windows平台,而且自从vovida被CISCO收购以后就停止了开发,最后的版本是2003年4月的1.5.0。
(3)sipX
sipX是一个SIP系统,由SIPFoundry开发。sipx是从reSIProcate分离出来的,sipX除了