一种会话发起协议域协商消息接收终端的实现方法

文档序号:7954731阅读:154来源:国知局
专利名称:一种会话发起协议域协商消息接收终端的实现方法
技术领域
本发明涉及一种会话发起协议方法,尤其涉及的是一种会话发起协议域协商消息接收终端的实现方法,用于消除并行分叉问题。
背景技术
现有技术中,SIP(Session Initiation Protocol,会话发起协议)是IETF制定的多媒体通信系统框架协议之一,它是一个基于文本的应用层控制协议,独立于底层协议,用于建立、修改和终止IP网上的双方或多方多媒体会话。
SIP协议为实现指示接收方访问指定资源的功能引入REFER方法,REFER方法在RFC 3515中定义,提供了一种指示对方依据所提供的信息向第三方发起会话的机制,用于呼叫偏转等应用中。
一个REFER的简单流程如图1所示,其包括步骤(1)REFER发起方向REFER接收方发送REFER消息,请求接收方访问REFER消息中指示的资源,如发起一个到第三方的呼叫;REFER请求还会隐性创建一个订阅。
(2)REFER接收方接收REFER请求,返回200/202OK;(3)REFER接收方根据事件通知框架,发送一个NOTIFY(通知)消息,携带订阅的资源状态的内容信息;(4)REFER发送方收到NOTIFY消息后,向接收方发送一个200OK响应,表示成功接收了NOTIFY消息。
(5)REFER接收方根据REFER方法中的指示动作,如发起呼叫(INVITE)。这个动作的发生也可能是在向REFER发送方返回200/202OK时。
上述REFER流程中,在没有建立会话的情况下,如果REFER接收方用户多终端(用户有多个注册终端共享一个公有标识),则会在检查和产生分叉(forking)的网络实体上发生分叉。检查和产生分叉的网络实体,后续简称分叉处理实体,在SIP域中可以是REFER接收方代理服务器,当发生并行分叉(并行分叉指分叉处理实体同时把REFER消息发给每个用户终端)时,用户的多个终端中可能有超过一个的终端接受请求返回200/202OK,并根据REFER方法中的指示动作,如发起INVITE,但分叉处理实体只接受从接收终端获得的一个成功响应。由于没有机制使其他终端的成功响应无效,这样就造成了终端响应的操作不可控,并造成网络资源的浪费。
因此,现有技术存在缺陷,而有待于改进和发展。

发明内容
本发明的目的在于提供一种会话发起协议域协商消息接收终端的实现方法,用于消除REFER消息发生分叉时的问题。
本发明的技术方案包括一种会话发起协议域协商消息接收终端的实现方法,其设置一分叉处理实体在指示访问指定资源的请求消息发起方和各终端之间,并包括步骤A、指示访问指定资源的请求消息发起方发送指示访问指定资源的请求消息;B、接收方为多用户终端且发生并行分叉,所述分叉处理实体向各终端发送指示访问指定资源的请求消息请求;C、所述分叉处理实体收集各用户终端的响应,根据预定策略由所述分叉处理实体选择接收指示访问指定资源的请求消息的终端。
所述的方法,其中,还包括只在指示访问指定资源的请求消息接收终端收到分叉处理实体发送的对事件通知消息的成功响应之后,进行指示访问指定资源的请求消息中指示的动作,包括发送会话发起消息。
一种会话发起协议域协商消息接收终端的实现方法,其中,其在指示访问指定资源的请求消息发起方和各终端之间设置一分叉处理实体,并包括在发生并行分叉时,先使用其他请求消息依预定策略选择接收指示访问指定资源的请求消息请求的终端,再把指示访问指定资源的请求消息发送给选定的终端。
所述的方法,其中,所述分叉处理实体与指示访问指定资源的请求消息发送方为不同的网络实体。
所述的方法,其中,还包括所述分叉处理实体同时向各个用户终端发送查询请求消息,并在该请求消息中携带查询终端信息能力的指示,查询终端支持的方法和终端当前的优先级指数的终端能力信息,各终端返回各自的响应,分叉处理实体收集各终端的响应,并把响应的终端列表通过重定向消息发给指示访问指定资源的请求消息发送方,由发送方选择接收指示访问指定资源的请求消息的终端时,并将指示访问指定资源的请求消息发送给选定的终端。
所述的方法,其中,还包括由所述分叉处理实体向各个终端发送查询请求消息,各终端返回各自的响应,分叉处理实体收集各终端的响应根据预定策略选择接收指示访问指定资源的请求消息的终端,并将指示访问指定资源的请求消息发送给选定的终端。
所述的方法,其中,所述分叉处理实体与指示访问指定资源的请求消息发送方为同一个网络实体,并包括步骤A1、所述指示访问指定资源的请求消息发起方/分叉处理实体在发送指示访问指定资源的请求消息之前先向各个终端发送查询请求消息,各终端返回各自的响应;B1、所述指示访问指定资源的请求消息发起方/分叉处理实体分叉处理实体收集各终端的响应,根据预定策略选择接收指示访问指定资源的请求消息的终端,并向该终端发送指示访问指定资源的请求消息请求。
所述的方法,其中,所述预定策略包括所述分叉处理实体同时向各个用户终端发送查询请求消息,并在该请求消息中携带查询终端信息能力的指示,查询终端支持的方法和终端当前的优先级指数的终端能力信息,并选择支持指示访问指定资源的请求消息方法和/或优先级指数较大的终端作为接收终端。
所述的方法,其中,所述预定策略包括所述分叉处理实体同时向各个终端发送查询请求消息,选择第一个成功响应的终端作为接收终端。
所述的方法,其中,所述预定策略包括所述分叉处理实体顺序向各个终端发送查询请求消息,选择第一个返回成功响应的终端作为接收终端。
所述的方法,其中,所述查询终端能力的请求消息为OPTIONS消息。
所述的方法,其中,所述查询终端优先级指数和支持的媒体能力信息的请求通过扩展Terminal-Info头域携带。
所述的方法,其中,所述重定向消息是302 Moved temporarily消息。
本发明所提供的一种会话发起协议域协商消息接收终端的实现方法,通过设置一分叉处理实体,实现了在发生并行分叉的多用户终端情况下的消除终端操作不可控的问题,实现了系统的稳定性。


图1为现有技术的REFER流程示意图;图2为本发明方法的第一实施例的流程图;图3为本发明方法的另一实施例的流程图;图4为本发明方法的第三实施例的流程图;图5为本发明方法的第四实施例的流程图;图6为本发明方法的第五实施例的流程图;
图7为本发明方法的第六实施例的流程图。
具体实施例方式
以下结合附图,将对本发明的各较佳实施例进行更为详细的说明。
本发明的会话发起协议域协商消息接收终端的实现方法,可以在REFER接收终端只有收到分叉处理实体发送的对NOTIFY的成功响应之后,才进行REFER中指示的动作,如发送INVITE等,而如果没有收到或收到失败响应时则不进行REFER中指示的动作。该实施例如图2所示,系统中设置一分叉处理实体,REFER发起方通过该分叉处理实体向所述终端1和终端2发送REFER消息,其步骤包括1、REFER发起方发送REFER消息;2~3、接收方用户多终端且发生并行分叉,分叉处理实体向各终端同时发送REFER请求。
4~7、终端1返回成功响应200OK,并发送一个NOTIFY消息,携带订阅的资源状态的内容信息。终端2同样返回成功响应及NOTIFY消息。
8~9、所述分叉处理实体选择接受终端1的响应和NOTIFY,并把该响应和NOTIFY发送给REFER发起方。
10、分叉处理实体向终端1发送200OK。
11、分叉处理实体向终端2发送400Bad Request,取消向该终端的订阅和REFER请求。
12、终端1收到分叉处理实体发送的200OK响应后,进行REFER中指示的动作,如发送INVITE消息。
本发明方法在发生并行分叉时,还可以先使用其他请求消息,如OPTIONS消息,选择接收REFER请求的终端,之后再把REFER消息发送给选中的终端。该实施例方案中包括两种情况,一是分叉处理实体与REFER发送方为不同的网络实体,二是分叉处理实体与REFER发送方为同一个网络实体。
可以理解的是,本发明方法的技术构思中,REFER消息只是指示访问指定资源的请求消息的一个实施例而已,本领域技术人员显然可以采用其他相关的消息来实现该功能。
对于情况一,本发明方法是分叉处理实体在接收REFER消息时,判断接收方多终端且会发生并行分叉,则分叉处理实体向各个终端发送请求消息,各终端返回各自的响应,分叉处理实体收集各终端的响应,根据某种策略选择接收REFER消息的终端;也可以把响应的终端列表通过重定向消息发给REFER发送方,由发送方选择接收REFER消息的终端。
所述分叉处理实体向各终端发送请求消息并选择接收终端可以采用三种方式一是分叉处理实体同时向各个终端发送请求消息,请求消息中携带查询终端信息的指示,查询终端支持的方法和终端当前的优先级指数等终端能力信息,根据某种策略例如选择支持REFER方法和/或优先级指数较大的终端作为接收终端;二是分叉处理实体同时向各个终端发送请求消息,选择第一个成功响应的终端作为接收终端;三是所述分叉处理实体顺序向各个终端发送请求消息,第一个返回成功响应的终端作为接收终端。
具体的说,所述分叉处理实体同时向各个终端发送OPTIONS即能力查询请求,查询终端支持的方法和终端当前的优先级指数,并根据终端返回结果直接选择支持REFER方法且优先级指数较大的终端做为接收REFER消息的终端。
该实施例的流程如图3所示,其包括步骤1、REFER发起方发送REFER消息,消息中携带是否需要分叉处理实体查询终端能力信息的标识。分叉处理实体是否查询终端能力指示通过扩展头域Fork-query或扩展Request-Disposition头域的参数fork-query携带,fork-query参数值为TRUE时表示需要分叉处理实体查询终端能力信息。REFER消息携带的相关参数如下
REFERsipmike@example.comRequest-Dispositionfork-directive=fork;fork-query=True或REFERsipmike@example.comFork-queryfork-query=True2、分叉处理实体向终端1发送OPTIONS请求,查询终端能力信息。查询的信息包括终端支持的终端支持的方法、终端的优先级指数(q值)。OPTIONS消息中携带扩展的Termbinal-Info头域,用来标识请求终端的优先级指数(q-Value=true)。
OPTIONS消息携带的相关参数示例如下Terminal-Infoq-value=true3、分叉处理实体向终端2发送OPTIONS请求,查询其终端能力信息,消息示例同步骤2。
4、终端1返回200OK,携带终端1的信息,包括终端支持的REFER等方法、终端的联系地址mike@pcl.example.com和当前的优先级指数(q值)0.5。
200OK消息中携带的相关参数示例如下Contactmike@pcl.example.com;q=0.5AllowREFER,INVITE,OPTIONS,BYE,CANCEL5、终端1返回200OK,携带终端2的信息,包括终端支持的REFER等方法、终端的联系地址mike@pc2.example.com和当前的优先级指数(q值)0.3。
200OK消息中携带的相关参数示例如下Contactmike@pc2.example.com;q=0.3AllowREFER,INVITE,OPTIONS,BYE,CANCEL6、分叉处理实体选择支持REFER方法、优先级指数大的终端1作为接收REFER消息的终端,把REFER消息发给该终端。REFER消息中的Request URI填写的是终端1的联系地址,相关参数示例如下REFERsipmike@pc l.example.com终端1接收REFER消息之后的处理与现有技术相同,在此不再详细描述。
本发明方法的第二种方式中,所述分叉处理实体同时向各个终端发送OPTIONS查询请求,选择第一个成功响应的终端做为接收REFER消息的终端,具体实施步骤见图4所示,包括步骤1、REFER发起方发送REFER消息。
2~3、分叉处理实体向终端1、终端2同时发送OPTIONS请求。
4、终端1返回200OK,并携带终端的联系地址mike@pcl.example.com。
200OK消息中携带的相关参数示例如下Contactmike@pcl.example.com5、终端2返回200OK,并携带终端的联系地址mike@pc2.example.com。
200OK消息中携带的相关参数示例如下Contactmike@pc2.example.com6、分叉处理实体因为首先收到终端1的反馈,把终端1作为接收REFER消息的终端,把REFER消息发给该终端。REFER消息中的RequestURI填写的是终端1的联系地址,相关参数示例如下REFERsipmike@pcl.example.com本发明方法的第三种方式是,分叉处理实体顺序向各个终端发送查询请求,第一个返回成功响应的终端作为接收终端,分叉处理实体直接发REFER消息发送给该终端。该具体实施步骤参见如图5所示1、REFER发起方发送REFER消息。
2、分叉处理实体向终端1发送OPTIONS请求。
3、终端2返回200OK,并携带终端的联系地址mike@pcl.example.com。
200OK消息中携带的相关参数示例如下Contactmike@pcl.example.com4、分叉处理实体继续向终端2发送OPTIONS请求。
5、终端2返回200OK,并携带终端的联系地址mike@pc2.example.com。
200OK消息中携带的相关参数示例如下Contactmike@pc2.example.com6、分叉处理实体因为终端1成功响应,所以把终端1作为接收REFER消息的终端,把REFER消息发给该终端。REFER消息中的RequestURI填写的是终端1的联系地址,相关参数示例如下REFERsipmike@pcl.example.com本发明方法还可以使分叉处理实体同时或顺序向各个终端发送OPTIONS请求,根据某种策略收集终端响应的结果,例如启动一定时器,在定时器超时前响应的终端做为接收REFER消息的终端,并将响应终端列表通过重定向消息发给REFER发送方,由发送方选择接收REFER消息的终端,该具体实施方式
如图6所示包括步骤1、所述REFER发起方发送REFER消息,消息中携带是否需要分叉处理实体查询终端能力信息的标识;分叉处理实体是否查询终端能力指示通过扩展头域Fork-query或扩展Request-Disposition头域的参数fork-query携带,fork-query参数值为TRUE表示需要分叉处理实体查询终端能力信息。REFER消息携带的相关参数如下REFERsipmike@example.comRequest-Dispositionfbrk-directive=fork;fork-query=True或REFERsipmike@example.comFork-queryfork-query=True2、所述分叉处理实体向终端1发送OPTIONS请求,查询终端信息。
查询的信息包括终端支持的终端支持的方法、终端的优先级指数(q值)。OPTIONS消息中携带扩展的Terminal-Info头域,用来标识请求终端的优先级指数(q-value=true)。
OPTIONS消息携带的相关参数示例如下Terminal-Infoq-value=true3、分叉处理实体向终端2发送OPTIONS请求,查询终端能力信息。消息示例同步骤2。
4、终端1返回200OK,携带终端1的信息,包括终端支持的REFER等方法、终端的联系地址mike@pcl.example.com和当前的优先级指数(q值)0.5。
200OK消息中携带的相关参数示例如下Contactmike@pcl.example.com;q=0.5AllowREFER,INVITE,OPTIONS,BYE,CANCEL5、终端1返回200OK,携带终端2的信息,包括终端支持的REFER等方法、终端的联系地址mike@pc2.example.com和当前的优先级指数(q值)0.3。
200OK消息中携带的相关参数示例如下Contactmike@pc2.example.com;q=0.3AllowREFER,INVITE,OPTIONS,BYE,CANCEL6、分叉处理实体把各终端返回的终端能力信息,通过302重定向消息发给REFER发送方,由REFER发送方选择接收REFER消息的终端。各终端能力信息在302消息中的Contact头域列表中携带。302消息中的相关内容示例如下Contact<sipmike@pcl.example.com>;q=0.5;expires=3600<sipmike@pc2.example.com>;q=0.3;expires=36007、REFER发送方根据收到的接收方终端信息,选择终端1做为接收REFER消息的终端。并把REFER消息直接发给该终端。在REFER消息的Request URI中除了携带接收方的公有用户标识,还通过扩展的contact-addr参数携带终端1的联系地址,分叉处理实体收到REFER消息后,检查联系地址的合法性,之后把REFER消息直接发给终端1。
REFERsipmike@.example.com;contact-addr=”mike@pcl.example.com”对于情况二分叉处理实体与REFER发送方为同一个网络实体时,本发明方法通过REFER发起方/分叉处理实体判断接收方多终端且会发生并行分叉,则在发送REFER之前先向各个终端发送终端能力查询消息,各终端返回各自的响应。REFER发起方/分叉处理实体分叉处理实体收集各终端的响应,根据某种策略选择接收REFER消息的终端,然后向该终端发送REFER请求。
与情况一类似,分叉处理实体向各终端发送请求消息并选择接收终端也可以有三种方式,方式一是分叉处理实体同时向各个终端发送请求消息,请求消息中携带查询终端信息的指示,查询终端支持的方法和终端当前的优先级指数等终端能力信息,根据某种策略选择支持REFER方法和域优先级指数较大的终端作为接收终端;方式二是分叉处理实体同时向各个终端发送请求消息,选择第一个响应的终端作为接收终端;方式三是分叉处理实体顺序向各个终端发送请求消息,第一个返回成功响应的终端作为接收终端。如图7所示给出方式一的实施流程,其他两种方式的实施流程可以参考方式一的实施例以及情况一中的对应实施例得到,在此不再赘述。
图7所示的步骤包括1、分叉处理实体向终端1发送OPTIONS请求,查询终端信息。查询的信息包括终端支持的终端支持的方法、终端的优先级指数(q值)。OPTIONS消息中携带扩展的Terminal-Info头域,用来标识请求终端的优先级指数(q-value=true)。
OPTIONS消息携带的相关参数示例如下Terminal-Infoq-value=tme2、分叉处理实体向终端2发送OPTIONS请求,查询终端能力信息。消息示例同步骤2。
3、终端1返回200OK,携带终端1的信息,包括终端支持的REFER等方法、终端的联系地址mike@pcl.example.com和当前的优先级指数(q值)0.5。
200OK消息中携带的相关参数示例如下Contactmike@pcl.example.com;q=0.5AllowREFER,INVITE,OPTIONS,BYE,CANCEL4、终端1返回200OK,携带终端2的信息,包括终端支持的REFER等方法、终端的联系地址mike@pc2.example.com和当前的优先级指数(q值)0.3。
200OK消息中携带的相关参数示例如下Contactmike@pc2.example.com;q=0.3AllowREFER,INVITE,OPTIONS,BYE,CANCEL5、分叉处理实体选择支持REFER方法、优先级指数大的终端1作为接收REFER消息的终端,把REFER消息发给该终端。REFER消息中的Request URI填写的是终端1的联系地址,相关参数示例如下REFERsipmike@pcl.example.com综上,可以看出,虽然本发明的各实施例给出的是REFER发生并行分叉的应用场景,但是如前所分析,本发明技术方案的关键点之一就是分叉处理实体在发生分叉时可以先通过向各终端发送查询终端信息的请求获得各用户终端的能力信息,之后由分叉处理实体或由最初的请求消息发起方选择接收请求消息的终端,然后把最初的请求消息发送给指定终端。
可以理解的是,对本发明领域的普通技术人员来说,本发明方法所给出的协商请求消息接收终端的方法可以但不仅上述实施例的说明,无须创造性劳动的改变或替换,都应属于本发明所附权利要求的保护范围。
权利要求
1.一种会话发起协议域协商消息接收终端的实现方法,其设置一分叉处理实体在指示访问指定资源的请求消息发起方和各终端之间,并包括步骤A、指示访问指定资源的请求消息发起方发送指示访问指定资源的请求消息;B、接收方为多用户终端且发生并行分叉,所述分叉处理实体向各终端发送指示访问指定资源的请求消息请求;C、所述分叉处理实体收集各用户终端的响应,根据预定策略由所述分叉处理实体选择接收指示访问指定资源的请求消息的终端。
2.根据权利要求1所述的方法,其特征在于,还包括只在指示访问指定资源的请求消息接收终端收到分叉处理实体发送的对事件通知消息的成功响应之后,进行指示访问指定资源的请求消息中指示的动作,包括发送会话发起消息。
3.一种会话发起协议域协商消息接收终端的实现方法,其特征在于,其在指示访问指定资源的请求消息发起方和各终端之间设置一分叉处理实体,并包括在发生并行分叉时,先使用其他请求消息依预定策略选择接收指示访问指定资源的请求消息请求的终端,再把指示访问指定资源的请求消息发送给选定的终端。
4.根据权利要求3所述的方法,其特征在于,所述分叉处理实体与指示访问指定资源的请求消息发送方为不同的网络实体。
5.根据权利要求4所述的方法,其特征在于,还包括所述分叉处理实体同时向各个用户终端发送查询请求消息,并在该请求消息中携带查询终端信息能力的指示,查询终端支持的方法和终端当前的优先级指数的终端能力信息,各终端返回各自的响应,分叉处理实体收集各终端的响应,并把响应的终端列表通过重定向消息发给指示访问指定资源的请求消息发送方,由发送方选择接收指示访问指定资源的请求消息的终端,并将指示访问指定资源的请求消息发送给选定的终端。
6.根据权利要求4所述的方法,其特征在于,还包括由所述分叉处理实体向各个终端发送查询请求消息,各终端返回各自的响应,分叉处理实体收集各终端的响应根据预定策略选择接收指示访问指定资源的请求消息的终端,并将指示访问指定资源的请求消息发送给选定的终端。
7.根据权利要求3所述的方法,其特征在于,所述分叉处理实体与指示访问指定资源的请求消息发送方为同一个网络实体,并包括步骤A1、所述指示访问指定资源的请求消息发起方/分叉处理实体在发送指示访问指定资源的请求消息之前先向各个终端发送查询请求消息,各终端返回各自的响应;B1、所述指示访问指定资源的请求消息发起方/分叉处理实体分叉处理实体收集各终端的响应,根据预定策略选择接收指示访问指定资源的请求消息的终端,并向该终端发送指示访问指定资源的请求消息请求。
8.根据权利要求6或7所述的方法,其特征在于,所述预定策略包括所述分叉处理实体同时向各个用户终端发送查询请求消息,并在该请求消息中携带查询终端信息能力的指示,查询终端支持的方法和终端当前的优先级指数的终端能力信息,并选择支持指示访问指定资源的请求消息方法和/或优先级指数较大的终端作为接收终端。
9.根据权利要求6或7所述的方法,其特征在于,所述预定策略包括所述分叉处理实体同时向各个终端发送查询请求消息,选择第一个成功响应的终端作为接收终端。
10.根据权利要求6或7所述的方法,其特征在于,所述预定策略包括所述分叉处理实体顺序向各个终端发送查询请求消息,选择第一个返回成功响应的终端作为接收终端。
11.根据权利要求5、6或7所述的方法,其特征在于,所述查询请求消息为OPTIONS消息。
12.根据权利要求8所述的方法,其特征在于,所述查询终端优先级指数和支持的媒体能力信息的请求通过扩展Terminal-Info头域携带。
13.根据权利要求5所述的方法,其特征在于,所述重定向消息是302Moved temporarily消息。
全文摘要
本发明公开了一种会话发起协议域协商消息接收终端的实现方法,其设置一分叉处理实体在REFER发起方和各终端之间,并包括步骤REFER发起方发送REFER消息;接收方为多用户终端且发生并行分叉,所述分叉处理实体向各终端发送REFER请求;所述分叉处理实体收集各用户终端的响应,根据预定策略由所述分叉处理实体或发送方选择接收REFER消息的终端。本发明方法通过设置一分叉处理实体,实现了在发生并行分叉的多用户终端情况下的消除终端操作不可控的问题,实现了系统的稳定性。
文档编号H04L12/00GK101026618SQ20061003397
公开日2007年8月29日 申请日期2006年2月22日 优先权日2006年2月22日
发明者赖昊, 王啸 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1