专利名称:一种会话发起协议资源事件包获取方法
技术领域:
本发明涉及通信技术领域,尤其涉及一种会话发起协议(SIP)资源事件包获取方法。
背景技术:
SIP(Session Initiation Protocol,即会话发起协议)是IETF(The InternetEngineering Task Force,即Internet工程任务组)制定的多媒体通信系统框架协议之一,它是一个基于文本的应用层控制协议,独立于底层协议,用于建立、修改和终止IP网上的双方或多方多媒体会话。SIP实现了事件通知框架,引入了SUBSCRIBE(订阅)和NOTIFY(通知)方法,SUBSCRIBE方法用于订阅,而NOTIFY方法用于传递一个事件的任何变化的通知。所谓事件通知就是,一个用户或资源向其它资源发起订阅,由于后者有前者感兴趣的事件,之后前者会接收到有关该事件的状态和任何变化的通知。如图1所示为SIP事件订阅处理流程,标准流程如下(1)、Subscriber(订阅者)向Notifier(通知者,即资源的拥有者)发送一个订阅(SUBSCRIBE)消息,请求订阅感兴趣的资源状态;(2)Notifier允许Subscriber订阅,向Subscriber发送一个200 OK响应确认,在Subscriber和Notifier间建立一个订阅的dialog和订阅实例;dialog也就是对话,是通信双方之间的一种SIP关系,它提供了在通信双方之间进行路由和消息排序时所依据的必要的状态信息;(3)Notifier向Subscriber发送一个NOTIFY(通知)消息,在NOTIFY消息的消息体中携带Subscriber订阅的资源状态;
(4)Subscriber收到NOTIFY消息后,向Notifier发送一个200 OK响应,表示成功接收了NOTIFY消息。
由上述订阅的流程可知,标准的订阅流程(见RFC3265),是由Subscriber(对于用户终端来说就是UA)发出订阅请求,Notifier(通常是Event Server,作为订阅服务器)接收Subscriber的订阅请求,并向Subscriber发送NOTIFY消息。订阅会在订阅者和通知者间建立一个订阅的dialog,并且还需要订阅者和通知者创建订阅的实例。
SIP扩展协议RFC3903定义了状态发布机制,定义了客户端向状态代理发布事件状态,这是通过PUBLISH(发布)方法来实现的。状态发布机制与事件订阅机制使用相同定义的Event(事件)消息头和消息包格式来指示事件的状态。不同的是,状态发布机制不需要创建dialog。
本文中的Event Server,即事件服务器,具有订阅服务器功能和事件发布服务器功能,也可单独具有订阅服务器功能,或事件发布服务器功能。
在实际的应用中,用户SIP终端启动时,需要同时向服务器发出多个订阅请求,会在用户端产生多个订阅事务,这样会加大用户终端的负担,延迟启动过程,于是出现了一种将注册和订阅关联的技术方案,该方案在注册消息中携带订阅的事件包列表,在注册的同时进行订阅,不需要用户终端单独的向服务器发送订阅请求,减少终端启动时消息交互的数量,参见IETF的Draft文稿“draft-rosenberg-sipping-reg-sub-00.txt”。
现有的将注册和订阅关联的技术方案有如下三种实现方法1、现有技术一如图2所示,现有技术一的这种技术方案所采用的方法是将注册和订阅关联,通过UA(用户终端)在注册消息中携带一个Subscription(订阅)头域,该头域包括了一个UA希望订阅的事件包的列表。在Registrar(注册服务器)返回的200 OK中携带Subscription头域,指示UA被允许订阅的事件包,并在UA和Registrar间建立一个订阅的dialog。Event Server作为一个事件发布服务器,将资源的最新状态通过PUBLISH方法发布给Registrar。Registrar通过NOTIFY消息将UA订阅的资源状态发送给UA。
如图3所示,该技术方案的实现流程如下步骤(1)-(2)UA通过注册消息携带关联的订阅事件包向Registrar发起注册,Registrar向UA发送一个200 OK响应;步骤(3)-(4)Event Server作为一个事件发布服务器,通过PUBLISH消息将Event Server上维护的资源的最新状态发布给Registrar,Registrar回送一个200 OK响应;步骤(5)-(6)Registrar上需要维护同Event Server相同的资源,并根据资源状态的变化构造NOTIFY消息发送给UA,并且UA与Registrar间需要建立订阅的dialog和订阅实例,UA向Registrar回送一个200 OK响应。
上述现有技术一存在以下缺点(1)Event Server通过发布机制向Registrar通知资源的状态,将会导致多余的资源状态也被发布处理,占用网络带宽和Registrar的处理存储能力,造成资源浪费;(2)UA与Registrar间需要建立和维护订阅的dialog和订阅的实例,但dialog和订阅的实例的建立不符合已有的标准(见RFC3265或图1的流程描述),需要扩展已有的标准的操作方式;2、现有技术二如图4所示,现有技术二实现流程如下步骤(1)-(4)Event Server向Registrar订阅UA的注册事件包;步骤(5)-(6)当UA携带关联的订阅事件包向Registrar注册;步骤(7)-(8)Registrar通过NOTIFY消息通知Event Server UA注册,并在NOTIFY消息中携带UA订阅的相关信息;步骤(9)-(10)Event Server作为订阅服务器直接向UA发送NOTIFY消息,并在UA与Event Server间建立和维护订阅的dialog和订阅的实例。
现有技术二的缺点如下(1)该流程需要在UA与Event Server间建立订阅的dialog和订阅的实例,如果UA关联注册的订阅是多个事件包,UA将与多个Event Server间建立订阅的dialog和订阅的实例,UA在维护订阅dialog和订阅实例的开销比现有技术一还大;(2)、UA与Event Server之间建立的订阅也是不符合已有的标准(见RFC3265或图1的流程描述),需要扩展已有的标准的操作方式。
3、现有技术三现有技术三实现流程如下步骤(1)-(4)Event Server向Registrar订阅UA的注册事件包;步骤(5)-(6)UA携带关联的订阅事件包向Registrar注册;步骤(7)-(8)Registrar通过NOTIFY消息通知Event Server UA注册,并在NOTIFY消息中携带UA订阅的相关信息;步骤(9)-(10)Event Server作为事件发布服务器,通过PUBLISH消息将UA订阅的资源的最新状态发送给Registrar;步骤(11)-(12)Registrar与UA之间建立订阅的dialog和订阅实例,通过NOTIFY消息通知UA。
现有技术三的缺点是UA与Registrar间需要建立和维护订阅的dialog和订阅的实例,且dialog和订阅的实例的建立不符合已有的标准(见RFC3265或图1的流程描述),需要扩展已有的标准的操作方式。
通过上述分析,可以发现现有技术方案存在两个共同的缺点1、在UA与Registrar或Event Server间需要建立订阅关系,维护订阅dialog和订阅实例,增加了UA的开销;2、通过这种关联注册的订阅方式不符合已有的订阅协议的标准,需要扩展已有的标准的操作方式。
发明内容
本发明所要解决的技术问题是克服现有技术在注册的同时进行订阅,需要更改已有的订阅方式,且UA需要维护订阅dialog和订阅实例,UA开销大的缺点,提供一种会话发起协议资源事件包获取方法,减小UA开销,并使操作方式符合标准规定。
本发明为解决上述技术问题所采用的技术方案为这种会话发起协议资源事件包获取方法,包括以下步骤用户终端发起关联发布的注册消息,在注册消息中携带至少一个表示用户终端希望通过发布方式获得资源信息的事件包;注册服务器或事件服务器使用发布方式向所述用户终端发送发布消息,携带所述用户终端注册时希望获取的资源信息的事件包。
可以在所述注册消息中通过头域或消息体携带至少一个表示用户终端希望通过发布方式获得资源信息的事件包。
所述的头域可以为事件头域,或者新扩展一个由所述会话发起协议的注册消息携带的头域,使其能携带至少一个表示用户终端希望通过发布方式获得资源信息的事件包。
所述用户终端向所述的注册服务器发起关联发布的注册消息,所述的注册服务器可以采用订阅方式从事件服务器获取资源信息,注册服务器再使用发布方式向所述用户终端发送发布消息。
所述注册服务器采用订阅方式从事件服务器获取资源信息时,向事件服务器发送订阅消息,事件服务器向所述注册服务器发送通知消息通知所订阅的资源信息,所述的注册服务器再将接收到的通知消息转换成发布消息发送到所述的用户终端。
所述用户终端向所述的注册服务器发起关联发布的注册消息,所述的注册服务器可以将所述注册消息中关联发布的事件包取出,通过通知消息通知提供相关资源服务的事件服务器;事件服务器收到通知消息后,通过发布方式直接将用户终端订阅的资源信息发布给用户终端。
所述事件服务器也可以通过发布方式向所述注册服务器通知资源信息,用户终端发起关联发布的注册请求到所述注册服务器,所述注册服务器通过发布消息将所述用户终端订阅的资源信息发送给该用户终端。
本发明的有益效果为本发明提供了一种会话发起协议资源事件包获取方法,能克服现有技术进行SIP订阅时,需要更改已有的订阅方式,且UA需要维护订阅dialog和订阅实例,UA开销大的缺点,不但减小了UA开销,而且使资源事件包获取操作方式符合标准规定。
本发明使UA与Registrar或Event Server通过PUBLISH机制交互用户订阅的资源,使UA不用建立维护订阅dialog和订阅实例,减轻了UA对大量订阅和dialog状态的维护和管理开销;且Registrar通过向Event Server订阅方式的获取UA需要的资源,该方式使Registrar根据UA需求获取资源,减少了大量不必要的资源的处理和网络带宽的浪费;并且Registrar与Event Server间只需建立一个订阅dialog,节省了Event Server大量的dialog资源的维护和管理的开销。且该方式符合协议,不用修改现有的订阅操作方式。
图1为SIP事件订阅处理流程;图2为现有技术一订阅处理模型示意图;图3为现有技术一订阅处理流程图;图4为现有技术二订阅处理流程图;图5为现有技术三订阅处理流程图;图6为本发明订阅处理方案一模型示意图;图7为本发明订阅处理方案一流程图;图8为本发明订阅处理方案二模型示意图;
图9为本发明订阅处理方案三模型示意图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明本发明提供一种会话发起协议资源事件包获取方法,使UA在注册时获得希望的资源,不需要维护订阅dialog和订阅实例,并且与现有的协议标准相符合。
如图6和图7所示,在本发明的模型中,UA与Registrar的接口采用PUBLISH机制;Registrar通过SUBSCRIBE(订阅)机制从Event Server获取资源状态。而现有技术方案中,UA与Registrar的接口采用SUBSCRIBE(订阅)机制;Event Server通过PUBLISH机制向Registrar发布资源状态,或EventServer直接通过非标准的SUBSCRIBE(订阅)机制向UA通知资源状态,或采用SUBSCRIBE(订阅)机制和PUBLISH机制混合的方式向Registrar提供资源状态。
本发明新扩展一个由SIP的REGISTER消息携带的头域,用于传递UA在注册时希望通过PUBLISH机制获取资源的事件包的列表,比如命名为Pub-Reg,参照SIP协议中Event头域的定义格式,Pub-Reg定义如下Pub-Reg=(″Pub-Reg″)HCOLON(pub-event*(COMMA pub-event))Pub-event =event-type*(SEMI pub-event-param)event-type =event-package*(″.″event-template)event-package =token-nodotevent-template =token-nodottoken-nodot=1*(alphanum/″-″/″!″/″%″/″*″/″_″/″+″/″`″/″/″~″)pub-event-param=pub-aor/generic-parampub-aor=″aor″EQUAL(SIP-URI/SIPS-URI)
其中,Pub-event表示Pub-Reg头域中传递的希望通过PUBLISH机制获取的事件包,它包含了事件包类型event-type和参数pub-event-param,而event-type的定义和Event头域中的完全相同,本发明不再详细解释,pub-event-param包含的pub-aor表示事件包发送的目的AOR(Address-of-Record),generic-param的定义与Event头域中的完全相同,这里不再解释。
可以看出,和Event头域定义不一样的地方是,Pub-Reg头域中可以传递多个资源信息的事件包。当然也可以采用Event头域传递UA在注册时希望通过PUBLISH机制获取资源的事件包,但这样无法传递多个事件包。
同时,作为一种可选的方案,也可以通过注册消息的消息体携带,用于传递UA在注册时希望通过PUBLISH机制获取资源的事件包的列表。携该事件包列表的消息体的编码方式可以采用文本方式或XML或其它已有的方式,本发明的实施例通过XML的编码方式的消息体格式传递事件包的列表来说明,仅突出作为消息体传递事件包的列表的一种方案,并没有穷尽所有可能的编码方式,和不同的格式。
在本实施例中,假设UA关联发布的事件包为UA的好友的呈现事件包,如图7所述,处理流程如下(1)UA在注册消息中携带Pub-Reg头域发起关联发布的注册请求,aor是事件包请求的目的URI,事件包为presence;(2)Registrar收到注册消息后,检查发现注册消息中带有Pub-Reg头域,从中取出相关信息,构造一个SUBSCRIBE请求向Event Server发起订阅;(3)Event Server向Registrar返回200 OK表示订阅成功;(4)Registrar向UA返回200 OK表示注册成功,同时在200 OK中携带Pub-Reg头域,其值是订阅成功的事件包,在此为presence;(5)Event Server向Registrar发送NOTIFY消息通知Registrar订阅的资源状态;
(6)Registrar对Event Server发送200 OK确认接收的NOTIFY消息;(7)Registrar将接收到的NOTIFY消息转换成PUBLISH消息发送到UA;(8)UA对PUBLISH消息回应200 OK表示确认。
如图8所示,本发明也可以采用如下方案(1)UA发送关联发布的注册消息到Registrar;(2)Registrar将注册消息中关联的订阅事件包取出,通过NOTIFY消息分别通知提供相关资源服务的Event Server;Event Server收到NOTIFY消息后,通过PUBLISH方式直接将UA订阅的资源状态发布给UA。
在上述实施例中,也可以采用XML的编码方式通过注册消息的消息体携带,用于传递UA在注册时希望通过PUBLISH机制获取资源的事件包的列表,可以采用如下的格式< xml version=″1.0″encoding=″UTF-8″ >
<pkglist xmlns=″urn:ietf:params:xml:ns:pkg-list″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″>
<eventpkg name=presence>
<aor>
sip:myfriend@pres.com</aor>
</eventpkg>
</pkglist>
如果用户想通过该机制获取多个资源的事件包,见下例< xml version=″1.0″encoding=″UTF-8″ >
<pkglist xmlns=″urn:ietf:params:xml:ns:pkg-list″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″>
<eventpkg name=presence>
<aor>
sip:myfriend@pres.com
</aor>
</eventpkg>
<eventpkg name=presence>
<aor>
sip:example@example.server.com</aor>
</eventpkg>
<eventpkg name=presence.winfo>
<aor>
sip:myfriend@pres.com</aor>
</eventpkg>
</pkglist>
在上述的XML编码方式中,<pkglist>元素是事件包列表的根元素,其下包括多个事件包元素,<eventpkg>元素代表一个事件包,属性“name”表示事件包名,子元素<aor>表示事件包发送的目的AOR(Address-of-Record)。为了支持这种格式的消息体,需增加一个Content-type的类型定义,为“application/pub-eventlist+xml”。
上述实施例中,UA与Registrar或Event Server通过PUBLISH机制交互用户订阅的资源,使UA不用建立维护订阅dialog和订阅实例,减轻了UA对大量订阅和dialog状态的维护和管理开销;且Registrar通过向Event Server订阅方式的获取UA需要的资源,该方式使Registrar根据UA需求获取资源,减少了大量不必要的资源的处理和网络带宽的浪费;并且Registrar与EventServer间只需建立一个订阅dialog,节省了Event Server大量的dialog资源的维护和管理的开销。且该方式符合协议,不用修改现有的订阅操作方式。
上述实施例方案也可以将Event Server与Registrar的接口改为PUBLISH,如图9所示,Event Server通过发布机制向Registrar通知资源的状态;UA发起关联发布的注册请求到Registrar,Registrar通过PUBLISH消息将UA订阅的资源状态发送给UA。但这样与前面的实施例相比,这种方案需要EventServer通过发布机制向Registrar通知资源的状态,将会导致多余的资源状态也被发布处理,占用网络带宽和Registrar的处理存储能力,造成资源浪费。
本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效变化,均包含于本发明的权利范围之内。
权利要求
1.一种会话发起协议资源事件包获取方法,其特征在于,包括以下步骤用户终端发起关联发布的注册消息,在注册消息中携带至少一个表示用户终端希望通过发布方式获得资源信息的事件包;注册服务器或事件服务器使用发布方式向所述用户终端发送发布消息,携带所述用户终端注册时希望获取的资源信息的事件包。
2.根据权利要求1所述的会话发起协议资源事件包获取方法,其特征在于在所述注册消息中通过头域或消息体携带至少一个表示用户终端希望通过发布方式获得资源信息的事件包。
3.根据权利要求2所述的会话发起协议资源事件包获取方法,其特征在于所述的头域为事件头域,或者新扩展一个由所述会话发起协议的注册消息携带的头域,使其能携带至少一个表示用户终端希望通过发布方式获得资源信息的事件包。
4.根据权利要求1、2或3所述的会话发起协议资源事件包获取方法,其特征在于所述用户终端向所述的注册服务器发起关联发布的注册消息,所述的注册服务器采用订阅方式从事件服务器获取资源信息,注册服务器再使用发布方式向所述用户终端发送发布消息。
5.根据权利要求4所述的会话发起协议资源事件包获取方法,其特征在于所述注册服务器采用订阅方式从事件服务器获取资源信息时,向事件服务器发送订阅消息,事件服务器向所述注册服务器发送通知消息通知所订阅的资源信息,所述的注册服务器再将接收到的通知消息转换成发布消息发送到所述的用户终端。
6.根据权利要求1、2或3所述的会话发起协议资源事件包获取方法,其特征在于所述用户终端向所述的注册服务器发起关联发布的注册消息,所述的注册服务器将所述注册消息中关联发布的事件包取出,通过通知消息通知提供相关资源服务的事件服务器;事件服务器收到通知消息后,通过发布方式直接将用户终端订阅的资源信息发布给用户终端。
7.根据权利要求1、2或3所述的会话发起协议资源事件包获取方法,其特征在于所述事件服务器通过发布方式向所述注册服务器通知资源信息,用户终端发起关联发布的注册请求到所述注册服务器,所述注册服务器通过发布消息将所述用户终端订阅的资源信息发送给该用户终端。
全文摘要
一种会话发起协议资源事件包获取方法,用户终端发起关联发布的注册消息,在注册消息中携带至少一个表示用户终端希望通过发布方式获得资源信息的事件包;注册服务器或事件服务器使用发布方式向用户终端发送发布消息,携带用户终端注册时希望获取的资源信息的事件包。可以在注册消息中通过头域或消息体携带所述的事件包。本发明克服了现有技术在注册的同时进行订阅,需要更改已有的订阅方式,且UA需要维护订阅dialog和订阅实例,UA开销大的缺点,使UA不用建立维护订阅dialog和订阅实例,减轻了UA对大量订阅和dialog状态的维护和管理开销,并使操作方式符合标准规定。
文档编号H04L29/06GK1972279SQ20051010184
公开日2007年5月30日 申请日期2005年11月25日 优先权日2005年11月25日
发明者王啸 申请人:华为技术有限公司