SIP中继路由方法
技术领域
本发明涉及VoIP(IP语音)通信领域的基于SIP(会话初始协议)信令进行会话控制的中继路由技术,尤其涉及中继路由当中的路由冗余和负载均衡的设备及方法。
背景技术
目前已存在的SIP中继路由方法中,并没有一套很好地方案解决SIP中继路由系统中中继网关的负载均衡和路由冗余共存的局面。
如图1所示的SIP中继路由系统中,在A、B两地分别部署有1台SIP服务器和两台以上中继网关,并且每一台中继网关都和本地SIP服务器连接。其中,SIP服务器用来选择路由转发SIP信令,中继网关用来完成两个不同承载网络或不同管理域网络之间的信令和媒体中继。A地或者B地内部之间拨打电话通过SIP服务器本地路由;拨打出局呼叫的电话时,走中继网关路由。
实际使用时,如以上SIP中继路由系统为均衡路由系统,系统中各中继网关身份相等,无法对其进行区分,SIP服务器无法区分上述A、B两地的不同中继网关,从而导致A地的主叫可能通过B地的中继网关发起呼叫;如SIP中继路由系统为优先级路由系统,系统虽然可以根据优先级区分A、B两地的中继网关,但同时也区分了本地内部的冗余中继网关,如果优先级高的中继网关出现故障,由于是优先级路由系统,每次呼叫都会先走优先级高的中继网关,但此时由于中继网关故障,所以检测到故障会有一定的延迟,降低用户感受度。
另外,现有的SIP中继路由方法没有对被叫用户和中继网关的4xx及以上(请求失败)的最终响应码进行区分,从而导致在多个中继网关冗余路由的环境当中,SIP服务器无法区分4xx以上最终响应码是由某个中继网关错误(如资源不足)回复的最终响应,还是被叫用户或用户所在网络的错误(如线路忙)引发的最终响应。由于SIP服务器在收到4xx及以上的请求失败响应消息后不进行区分,全部走下一条次高优先级路由,将会造成在最终用户错误引发的4xx及以上的最终响应流程中,呼叫请求会多次路由到被叫的局面;当4xx及以上的最终响应码是由中继网关回复的时候(非被叫因素引发的错误),如果SIP服务器不走下一条冗余路由,当前呼叫立即失败,从而造成呼损增加,多个中继网关的路由冗余备份也无法呈现。
发明内容
本发明所要解决的技术问题是,首先提供一种实现均衡路由和优先级路由的有效结合的SIP中继路由方法,进一步的,还能有效区分请求失败响应来源,以及提供一种实现该方法的系统。
本发明为解决上述技术问题所采用的技术方案是,SIP中继路由方法,包括以下步骤:
在SIP服务器中,针对不同主叫将中继网关分别设置为负责负载均衡的中继网关或者负责路由冗余的中继网关;
主叫向其所属域的SIP服务器发出呼叫请求消息;
SIP服务器接收呼叫请求消息,首先根据均衡策略计算每一个负责负载均衡的中继网关的q值,其次计算负责路由冗余的中继网关的q值,然后形成路由表;
SIP服务器向所述路由表中由q值的大小确定的最高转发优先级的中继网关转发呼叫请求消息;当转发呼叫请求消息失败,SIP服务器依次切换至次高优先级的中继网关并重新转发呼叫请求消息直至成功;
负责负载均衡的中继网关的q值确定的转发优先级高于负责路由冗余的中继网关的q值确定的转发优先级。
本发明对每次呼叫都根据均衡策略创建独立的路由表,每一个表项赋予不同的优先级,有效结合了均衡路由与优先级路由。采用本发明方法,既能够在一个城市内部的两台中继网关中实现路由负载均衡,又能够在两个城市之间的中继网关中完成路由冗余备份,保证当一座城市的中继网关无法路由呼叫时,能够通过另一座城市完成出局路由呼叫;同时也可以保证城市内部的中继网关之间既负载均衡又路由备份;使得系统的可靠性达到电信级要求。
具体的,路由表中每个中继网关的q值唯一,q值越大,转发优先级越高。
进一步的,SIP服务器向中继网关转发呼叫请求消息,同时启动定时器;如所述中继网关成功转发该呼叫请求消息,则中继网关在发向SIP服务器的响应消息中添加不切换标记;
在定时器超时时间内,如SIP服务器收到了大于100的临时响应消息,或者,收到携带不切换标记的4xx及4xx以上的最终响应消息,SIP服务器向主叫转发接收到的请求失败的最终响应消息;
当启动定时器超时,如SIP服务器未接收到来自中继网关的100临时响应消息;或者,没有收到大于100的临时响应消息就直接收到了4xx及4xx以上的最终响应消息,且该请求失败的最终响应消息中没有携带标记,SIP服务器则切换中继网关,重新转发呼叫请求消息。
现有技术中,临时响应消息用1xx表示,标志了被叫正在处理请求,并且还没有决定最后的应答。1xx临时响应消息具体包括有100(Trying,尝试连接)、180(Ringing,响铃提示)、181(Call is Being Forwarded,呼叫被转发)、182(Queued,呼叫排队等候)、183(Session Progress,会话进度)。大于100的临时响应消息在本发明中表示为非100的其它所有临时响应消息。SIP服务器收到了大于100的临时响应消息则表示当前中继网关成功中继信令至被叫。4xx表示请求失败。5xx表示因设备本身故障而造成的请求失败。
中继网关在成功转发呼叫请求消息后,会在发向SIP服务器的响应消息中添加不切换标记。这样,如果SIP服务器没有收到100Trying的临时响应消息,但收到4xx以上的最终响应消息中没有携带“不切换标记”时,SIP服务器就能判定请求失败的响应消息是由中继网关错误引起,需要切换中继网关,避免出现中继网关的路由冗余备份无法呈现的错误;当SIP服务器收到非100Trying的临时响应消息,无论后续的4xx以上最终相应消息是否携带“不切换标记”时,就能判定请求失败响应消息是由用户或用户所在网络的错误引起,无需切换中继网关,避免呼叫请求会多次路由到被叫。
具体的,所述不切换标记添加至请求失败响应消息的Error-Info头域。
SIP中继路由系统,包括SIP服务器、中继网关;中继网关可设置为负责负载均衡的中继网关、负责路由冗余的中继网关两类;
SIP服务器用于,接收到主叫发出的呼叫请求消息后,首先根据均衡策略计算每一个负责负载均衡的中继网关的q值,其次计算负责路由冗余的中继网关的q值,然后形成路由表;最后向路由表中由q值的大小确定的最高转发优先级的中继网关转发呼叫请求消息;当转发呼叫请求消息失败,SIP服务器依次切换至次高优先级的中继网关并重新转发呼叫请求消息直至成功;
中继网关用于,向被叫转发呼叫请求消息。
进一步的,SIP服务器还用于,向中继网关转发呼叫请求消息的同时启动定时器;在定时器超时时间内,如SIP服务器收到了大于100的临时响应消息,或者,收到携带了不切换标记的4xx及4xx以上的请求失败响应消息,SIP服务器向主叫转发接收到的请求失败响应消息;当定时器超时,如SIP服务器未接收到来自中继网关的100临时响应消息;或者,没有收到大于100的临时响应消息就直接收到了4xx及4xx以上的请求失败响应消息,且该请求失败响应消息中没有携带标记,SIP服务器则切换中继网关,重新转发呼叫请求消息;
中继网关还用于,当中继网关成功转发呼叫请求消息后,在发向SIP服务器的响应消息中添加不切换标记。
本发明的有益效果是,将均衡路由和优先级路由有效结合,极大的提升了系统的稳定性和可靠性;进一步的,有效区分请求失败响应来源,避免SIP服务器作出不适当的处理。
附图说明
图1为实施例网络拓扑示意图;
图2为实施例的路由转发流程图。
具体实施方式
如图1所示,A地主叫1(IP电话)所在的承载网络是IP网,通过其所属的SIP域的SIP服务器向其它网络如PSTN(公用交换电话)网的被叫用户2发起呼叫;中继网关用来中继主叫所属网络和被叫所属网络的信令和媒体。在主叫所属网络和被叫所属网络之间,存在多个中继网关。将两个不同网络之间的中继网关做了行为区分,其中一部分中继网关负责呼叫的负载均衡;而另一部分中继网关作为前面中继网关的路由冗余。如图1中的中继网关群A、中继网关群B,每一个中继网关群中均有多个中继网关。对A地用户主1叫来讲,可设置中继网关群A中的所有中继网关用于负载均衡,中继网关群B中的所有中继网关用于路由冗余。A地的SIP服务器负责路由策略和路由选择。
当主叫1通过其所在的SIP网络向所属其它网络的被叫用户2发起呼叫时,首先将呼叫的INVITE(呼叫请求)消息发送到主叫所属SIP域的A地的SIP服务器,SIP服务器再根据路由策略路由转发到可用中继网关。最后通过可用的中继网关,完成两个不同网络用户之间的呼叫建立。
如图2所示,主叫1向被叫2发起呼叫请求消息,SIP服务器的路由转发流程如下:
1、SIP服务器根据拨号策略匹配到路由规则;
2、SIP服务器对每个路由规则下面的中继网关进行了两类区分设置,一类是负责负载均衡的中继网关,另一类是负责路由冗余的中继网关;
3、每种类型的中继网关可有多个,SIP服务器首先根据均衡策略计算各负责负载均衡的中继网关的q值,每个中继网关的q值都必须唯一;其次计算负责路由冗余的所有中继网关的q值,负责路由冗余的所有中继网关的q值确定的最高转发优先级必须低于负责均衡中继网关中的q值确定的最低转发优先级,且每个中继网关的转发优先级依次递减,形成自上而下的,q值唯一的中继网关列表;
4、SIP服务器将上述中继网关列表作为消息路由转发尝试的路由表,根据该路由表,SIP服务器向由q值确定的最高的转发优先级的负责负载均衡的中继网关转发INVITE消息,同时启动定时4秒定时器;中继网关根据是否成功转发呼叫建立信令到网络2,决定是否在发向SIP服务器的响应消息里携带“不切换标记”,如成功,则在SIP服务器的响应消息中携带“不切换标记”,否则,不携带“不切换标记”;当前系统采用不切换标记为设置响应消息的Error-Info头域的值为e1-trunk-available;
如果4秒定时器超时而SIP服务器没有收到来自中继网关的100Trying临时响应消息;或者SIP服务器没有收到大于100Trying的临时响应消息,直接收到了4xx以上响应消息,但消息里面没有携带“不切换标记”,表示该最终响应消息非由被叫所在的网络2的错误原因引起,而是由中继网关自身错误原因引发,SIP服务器则向下一个由q值确定的次高转发优先级的中继网关转发SIP消息,直到某个中继网关成功中转信令到被叫所在的网络2的被叫或全部中继网关路由失败,当全部中继网关路由失败时,则转发最终响应消息至主叫;
一旦SIP服务器收到了非100Trying的临时响应消息,则认为当前中继网关成功中继信令到被叫;或者,当发向SIP服务器的响应消息里未携带“不切换标记”,用于告知SIP服务器,该最终响应是由被叫所在网络2的错误原因引发,此时,SIP服务器不再向表项中其他中继网关中转消息,而是转发最终响应消息至主叫。需要注意的是,只要SIP服务器收到非100Trying的临时响应消息,无论后续的4xx以上响应消息是否携带“不切换标记”,都不切换到下一个中继网关。这样做的好处是避免网络2的被叫收到来自网络1的同一呼叫的多次请求。