基于SIP的视频会议系统模型、协议栈及相关扩展的研究
如一个SIP请求的目的由它的方法来定义,通过检查它的方法就能知道它的目的,标题头和参数给出了关于请求的更多信息,但请求的一般目的不会被任何标题头的内容所改变。因此需要一个新的功能扩展时,不要尝试改变一个已存在方法的语义。
6.2 视频会议中的SIP扩展
多媒体会议系统中传输的信息流包含音频、视频、数据和控制信息,会议系统主要包含两个部分内容:(1)使得参与者可以加入或者离开会议,如SIP这样的信令协议可以支持这样的操作;(2)会议控制,其中包括会议管理(如创建、修改和删除会议)、用户管理(增加和删除会议参与者,修改他们的属性)和底层管理。SIP本身为适应分组网的特性,在设计上是为分布式IP体系结构服务的,具有分布式的组网功能,其分布式控制方式使得系统能组建任意规模的网络,但这也使得会议控制更加困难,特别在保证会议参加者的一致性方面。最初SIP提出是可以用于多方会议中,但在文献中主要还是针对于点到点形式的,从SIP的呼叫流程也可以看出,因此目前已经有对于SIP在会议系统中的研究,一般是通过扩展来达到的,对于SIP消息的扩展可以通过增加某个SIP消息内的字段,也可以增加另外一种消息,为了支持将SIP应用于多媒体会议中,已经提出了几种针对多方会议的SIP扩展方法,这些方法都是将用户状态保留在单个会议服务器中,在会议规模较大时,中心会议服务器的负载也会较大。本文提出的大型视频会议系统模型,中心会议控制服务器,不保存用户状态,而是保留多个代理服务器的信息,转由多个代理服务器来保存用户状态,由SIP代理服务器之间的协调来实现成员的一致性,以满足多SIP方会议扩展性的要求。
对于这样的系统模型,需要扩展SIP,本文提出如下的一种SIP扩展解决方案:从对协议的分析可知,标准方法是没有实现对SIP于成员变化事件的响应,在文献[30]中提出了使用CONF的方法来通告用户状态,用来更新一个Proxy中的成员状态,但是对于多个Proxy之间的如何传递各自的状态成员没有定义,因此采用原来的方法是不够的,必须对其进行扩展,本文定义了一种新的AGENT方法用来实现在Proxy之间传递各自的状态成员,若有成员加入或离开,对于域中则采用SUBSCRIBE/NOTIFY方法,对于域间则采用AGENT的扩展方法,下面分别讨论这两种扩展方法。
6.2.1 SUBSCRIBE/NOTIFY扩展的应用
网络中的一些实体可以订阅网络中某些资源或呼叫的状态信息,当那些被订阅的资源的状态发生改变时,负责这一资源的网络实体将向订阅者发送通告,通报当前资源状态的变化情况。为实现这一机制,IETF的SIP工作组对SIP进行了扩充,提出了RFC 3265。这个文档中定义了预订(SUBSCRIBE)和通知(NOTIFY)两种扩展方法。
预订消息指预订者向他所感兴趣的远方节点T终端请求发送其状态以及及时地获得更新。一般是,预订请求应该包含一个“生存时间”头,这一消息头指定了预订的期限。为了在到期后仍能使预订有效,预订者需要间隔地发送新的预订请求。当然,这是在同一个SIP会话中。预定请求只有被200应答代码应答时才表明预订成功,随即会有通知消息,来通知预订端当前被请求端的状态。以后当预定的终端资源状态有变化时,也会发送通知消息。
事件包是通告者向订阅者发送的一组资源的状态信息。RFC 3265中给出了抽象的事件包模板定义,对应具体妲务可定义相应的事件包类型, 例如:在席事件包、对话事件包等,这些事件包可使用不同的语法并具有各自的语义。这种框架赋予会话启动协议事件通告机制极大的生命力和灵活性,有助于快速提供新的业务。
因此,在视频会议中,可以利用事件包,将视频会议中的各种需要在域中通讯的事件,分类为不同的事件包,这样就可以方便处理事件。
典型的会话启动协议事件通告机制流程如下图6-l所示: