一种消息处理过程中动态调整时间参数的方法
技术领域
本发明涉及通信领域消息处理网络自适应的实现方法,具体地说,涉及通信领域中一种消息处理过程中动态调整时间参数的方法。
背景技术
在国际标准化组织ITU-T制定的H.248协议中,针对消息丢失的可能,规定了消息发送方的消息重发机制及消息接收方的“最多一次”处理机制。为了实现消息的重发和“最多一次”功能,需要涉及到两个主要的时间参数:一是事务重传时间,记为RESEND-TIMER;而重传次数计为RESEND-NUM,其可以通过手动进行配置。请求消息的发送方发出请求消息后,如超过事务重传时间仍没有收到应答就要重传该请求消息;二是事务超时时间(与H.248协议标准统一,记为LONG-TIMER),应答消息发送方发出应答后,超过此时间可以认为接收方已经收到应答,把应答消息从本地释放。图1是应答消息丢失情况下造成请求消息重传时消息收发双方的处理过程,包括以下步骤:
101,消息发送方向消息接收方发送请求消息,并启动重传定时器,定时时间记为RESEND-TIMER;
102,消息接收方收到请求消息后,将其放入请求队列,并开始处理该请求消息;
103,如在RESEND-TIMER到前,消息发送方没有收到应答消息,则在RESEND-TIMER到后,消息发送方重新发送请求消息;
104,消息接收方收到请求消息后发现请求队列已有该条消息,则丢弃重传的请求消息或者回复临时响应;
105,消息接收方处理完请求消息后,释放请求队列,并向消息发送方发送应答消息,且将应答消息保存到应答队列,同时启动超时定时器,将超时 时间设置为LONG-TIMER;
106,应答消息因为网络原因或者其它原因丢失;
107,如在RESEND-TIMER到前,消息发送方没有收到应答消息,则在RESEND-TIMER到后,消息发送方重新发送请求消息;
108,消息接收方收到请求后发现已经应答过,则重新回复应答消息给消息发送方;
109,应答消息因为网络原因或者其它原因丢失;
110,如在RESEND-TIMER到前,消息发送方没有收到应答消息,则在RESEND-TIMER到后,消息发送方发现重传次数已经达到预设的最大值,则放弃发送该请求消息;
111,LONG-TIMER超时,消息接收方释放应答队列。
理论上为了保证消息的正确处理,RESEND-TIMER的取值应该是接收方处理消息的时间与网络上消息在收发双方来回传送的时间之和。LONG-TIMER的取值应该是稍大于RESEND-TIMER与RESEND-NUM的乘积。而且收发双方的取值应该是一致的。
在ITU-T制定的H.248协议规范中,并没有对上述两个时间参数的取值方法进行规定,仅提供了建议的参数值或者取值方法,但是因为UDP(用户数据报协议)传输时建议的指数补偿算法较为复杂,而且不适用于TCP(传输控制协议)传输。所以当前的实际应用中,上述两个时间参数的取值主要有两种方法:
方法一,设定固定的时间值,在软件研发编码阶段把时间参数固定下来,所以该值对使用者而言是不可见也不可修改的;
方法二,手动配置固定时间值,在MGC或者MG的配置界面上配置固定参数值,使用过程中使用者可以根据需要重新配置不同的值。
在上述方法一中,因为时间值是不可变的,所以如果取值过小,一旦网络负荷增加或者网络环境变坏导致网络时延增大,就会造成消息重传或者超时,进而影响呼叫等业务;如果取值过大,在重发消息的处理或者心跳检测过程中,会降低传输的效率或者状态监测的及时性。
在上述方法二中,可以人为地根据网络环境配置时间值,但是一旦配置以后,性质就会变得与方法一相同,而且使用者也很难把握对当前的网络状况应配置什么值合适。
所以,现有的消息重发和“最多一次”功能的实现过程中,不管采用上述方法中的哪一种,都不能同时兼顾传输效率与实时性,不能根据实际的网络情况自适应调整RESEND-TIMER、LONG-TIMER的值。而且收发双方的时间参数值是独立的,不能保证消息接收方在释放应答消息后不会再收到相同的请求消息。
发明内容
本发明要解决的技术问题是提供一种消息处理过程中动态调整时间参数的方法,根据网络环境以及负荷情况,及时调整时间参数RESEND-TIMER与LONG-TIMER的值,并使消息收发双方的取值统一。
为解决上述问题,本发明提供了一种消息处理过程中动态调整时间参数的方法,应用于包括一控制方和被控方的网络,适用于注册后被控方主动请求进行时间参数更新的情况,包括以下步骤:
a、将事务重传次数配置在所述控制方;
b、所述被控方欲调整时间参数时,其向所述控制方发送当前时间T1;
c、所述控制方根据收到所述T1时的当前时间T2与所述T1的差值,计算出事务重传时间和事务超时时间,并将所述事务重传时间连同所述事务重传次数一起发送给所述被控方;其中,所述T1和T2采用统一的基准时间,所述事务重传时间等于所述差值的两倍与所述控制方处理消息所用时间的和,所述事务超时时间等于所述事务重传时间加上n后与所述事务重传次数的乘积,n≥1;
d、所述被控方收到后,根据所述事务重传时间和事务重传次数计算出事务重传超时时间。
进一步地,所述统一的基准时间为国际标准时间。
进一步地,所述控制方和被控方分别为网关控制器和网关。
进一步地,步骤b中,所述控制方和所述被控方首次通信时,所述被控方通过注册请求消息携带所述T1;步骤c中,所述主控方通过注册应答消息向所述被控方发送所述事务重传时间及事务重传次数。
进一步地,步骤b中,所述被控方通过所述注册请求消息中的注册参数TimeStamp携带所述T1;步骤c中,所述主控方通过所述注册应答消息中root包的参数normalMGCExecutionTime携带所述事务重传时间,通过所述root包的参数MGCOriginatedPendingLimit携带所述事务重传次数。
进一步地,每隔一固定时间间隔,重新执行步骤b~步骤d。
进一步地,步骤d之后,当配置在所述控制方的事务重传次数发生改变时,还包括以下步骤:
e、所述控制方根据所述事务重传次数和事务重传时间计算重新计算所述事务超时时间,并将所述事务重传次数发送给所述被控方;
f、所述被控方收到后,重新计算所述事务重传超时时间。
为解决上述问题,本发明还提供了一种消息处理过程中动态调整时间参数的方法,应用于包括一控制方和被控方的网络,适用于注册后被控方主动请求进行时间参数更新的情况,包括以下步骤:
a、将事务重传次数配置在所述控制方;
b、所述被控方向所述控制方发送当前时间T1;
c、所述控制方根据收到所述T1时的当前时间T2与所述T1的差值,计算出事务重传时间和事务超时时间,并将所述事务重传时间连同所述事务重传次数一起发送给所述被控方;其中,所述T1和T2采用统一的基准时间,所述事务重传时间等于所述差值的两倍与所述控制方处理消息所用时间的和,所述事务超时时间等于所述事务重传时间加上n后与所述事务重传次数的乘积,n≥1;
d、所述被控方收到后,根据所述事务重传时间和事务重传次数计算出事务超时时间;
e、当所述控制方欲重新调整时间参数时,其向所述被控方发送一非呼叫相关消息,并记录下发送消息时的当前时间T3;
f、所述被控方向所述控制方回复一响应;所述控制方收到后,根据收到所述响应的当前时间T4与所述T3的差值,计算出事务重传时间和事务超时时间,并将所述事务重传时间连同所述事务重传次数一起发送给所述被控方;
g、所述被控方收到后,根据所述事务重传时间和事务重传次数计算出事务重传超时时间。
进一步地,所述统一的基准时间为国际标准时间。
进一步地,所述控制方和被控方分别为网关控制器和网关。
进一步地,步骤b中,所述被控方通过注册请求消息携带所述T1;步骤c中,所述主控方通过注册应答消息向所述网关发送所述事务重传时间及事务重传次数。
进一步地,步骤b中,所述网关通过所述注册请求消息中的注册参数TimeStamp携带所述T1;步骤c中,所述网关控制器通过所述注册应答消息中root包的参数normalMGCExecutionTime携带所述事务重传时间,通过所述root包的参数MGCOriginatedPendingLimit携带所述事务重传次数。
进一步地,每隔一固定时间间隔,重新执行步骤e~步骤g。
进一步地,步骤d之后,当配置在所述控制方的事务重传次数发生改变时,还包括以下步骤:
A、所述控制方根据所述事务重传次数和事务重传时间计算重新计算所述事务超时时间,并将所述事务重传次数发送给所述被控方;
B、所述被控方收到后,重新计算所述事务重传超时时间。
与现有技术相比,由于本发明可以根据用户需求实时更新LONG-TIMER、RESEND-TIMER的值、并且统一了控制方和被控方的取值,所以在收发双方消息处理网络自适应的同时,减少了二者处理的差异性,提高了灵活性与兼容性。
附图说明
图1为现有技术中消息收发双方在应答消息丢失情况下的处理流程图;
图2为本发明实施例中消息处理过程中动态调整时间参数的方法。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
本发明提供的一种消息处理过程中动态调整时间参数的方法,应用于包括一控制方和被控方的网络,该方法适用于注册后被控方主动请求进行时间参数更新的情况,包括以下步骤:
a、将事务重传次数配置在所述控制方;
b、所述被控方欲调整时间参数时,其向所述控制方发送当前时间T1;
c、所述控制方根据收到所述T1时的当前时间T2与所述T1的差值,计算出事务重传时间和事务超时时间,并将所述事务重传时间连同所述事务重传次数一起发送给所述被控方;其中,所述T1和T2采用统一的基准时间,所述事务重传时间等于所述差值的两倍与所述控制方处理消息所用时间的和,所述事务超时时间等于所述事务重传时间加上n后与所述事务重传次数的乘积,n≥1;
d、所述被控方收到后,根据所述事务重传时间和事务重传次数计算出事务超时时间。
其中,所述统一的基准时间为国际标准时间,所述控制方和被控方分别为网关控制器和网关。
其中,控制方和被控方首次通信时,在步骤b中,所述网关通过注册请求消息携带所述T1;步骤c中,所述网关控制器通过注册应答消息向所述网关发送所述事务重传时间及事务重传次数。
其中,步骤b中,所述网关通过所述注册请求消息中的注册参数TimeStamp携带所述T1;步骤c中,所述网关控制器通过所述注册应答消息中root包的参数normalMGCExecutionTime携带所述事务重传时间,通过所述root包的参数MGCOriginatedPendingLimit携带所述事务重传次数。
其中,每隔一固定时间间隔,重新执行步骤b~步骤d。
其中,步骤d之后,当配置在所述控制方的事务重传次数发生改变时,还包括以下步骤:
e、所述控制方根据所述事务重传次数和事务重传时间计算重新计算所述事务超时时间,并将所述事务重传次数发送给所述被控方;
f、所述被控方收到后,重新计算所述事务重传超时时间。
本发明还提供了一种消息处理过程中动态调整时间参数的方法,应用于包括一控制方和被控方的网络,该方法适用于注册后控制方主动进行时间参数更新的情况,包括以下步骤:
a、将事务重传次数配置在所述控制方;
b、所述被控方向所述控制方发送当前时间T1;
c、所述控制方根据收到所述T1时的当前时间T2与所述T1的差值,计算出事务重传时间和事务超时时间,并将所述事务重传时间连同所述事务重传次数一起发送给所述被控方;其中,所述T1和T2采用统一的基准时间,所述事务重传时间等于所述差值的两倍与所述控制方处理消息所用时间的和,所述事务超时时间等于所述事务重传时间加上n后与所述事务重传次数的乘积,n≥1;
d、所述被控方收到后,根据所述事务重传时间和事务重传次数计算出事务超时时间;
e、当所述控制方欲重新调整时间参数时,其向所述被控方发送一非呼叫相关消息,并记录下发送消息时的当前时间T3;
f、所述被控方向所述控制方回复一响应;所述控制方收到后,根据收到所述响应的当前时间T4与所述T3的差值,计算出事务重传时间和事务超时时间,并将所述事务重传时间连同所述事务重传次数一起发送给所述被控方;
g、所述被控方收到后,根据所述事务重传时间和事务重传次数计算出事务超时时间。
其中,所述统一的基准时间为国际标准时间。
其中,所述控制方和被控方分别为网关控制器和网关。
其中,步骤b中,所述网关通过注册请求消息携带所述T1;步骤c中, 所述网关控制器通过注册应答消息向所述网关发送所述事务重传时间及事务重传次数。
其中,步骤b中,所述网关通过所述注册请求消息中的注册参数TimeStamp携带所述T1;步骤c中,所述网关控制器通过所述注册应答消息中root包的参数normalMGCExecutionTime携带所述事务重传时间,通过所述root包的参数MGCOriginatedPendingLimit携带所述事务重传次数。
其中,每隔一固定时间间隔,重新执行步骤e~步骤g。
其中,步骤d之后,当配置在所述控制方的事务重传次数发生改变时,还包括以下步骤:
A、所述控制方根据所述事务重传次数和事务重传时间计算重新计算所述事务超时时间,并将所述事务重传次数发送给所述被控方;
B、所述被控方收到后,重新计算所述事务重传超时时间。
下面一本发明的一个具体实例来进一步说明本发明。
图2是MGC、MG实体双方动态调整时间参数LONG-TIMER和RESEND-TIMER的处理过程,具体包括以下步骤:
201,MG向MGC发送注册请求消息,消息中通过参数TimeStamp携带当前国际标准时间;
202,MGC收到MG的注册请求,根据当前的国际标准时间与TimeStamp中的时间差以及消息处理的经验时间值计算RESEND-TIMER的值;
203,MGC根据计算出的RESEND-TIMER与配置的RESEND-NUM的取值,计算LONG-TIMER(RESEND-TIMER*(RESEND-NUM+1)),并通过root/normalMGCExecutionTime、root/MGCOriginatedPendingLimit在注册应答消息中携带RESEND-TIMER与RESEND-NUM;
204,MG根据注册应答消息中的normalMGCExecutionTime、MGCOriginatedPendingLimit赋值本地的RESEND-TIMER与RESEND-NUM,并计算出LONG-TIMER;
205,重新计算时间值的时间到后,MGC主动发起AV审计消息(也可以是其它非呼叫相关消息),并记录消息发出的国际标准时间;
206,MG发送AV应答消息;
207,MGC收到AV应答消息后,根据AV请求的时间与收到应答的时间差以及消息处理的经验时间重新计算RESEND-TIMER;
相对于呼叫相关消息,在所有的248消息中,单纯的AV消息(或者其他非呼叫相关消息)处理用时基本上是非常非常少的,所以将这部分时间累加在消息收发需要的时间中,虽然有一定误差,但是这部分误差还是可以接受的。而且原本计算时间的时候就涉及到一个消息处理的经验值,这个经验值一般都是取一条呼叫消息最多需要的时间,所以单独AV处理的时间相对于这个经验值也是很小的。
208,若重新计算的RESEND-TIMER与原来不同(与原来相同不需要进行更新),则重新计算LONG-TIMER,并通过AV请求消息的root包携带新的时间值给MG;如果相同,则不再发送AV消息,执行步骤205;
209,MG收到带有root包的AV消息时重新计算更新本地的RESEND-TIMER、LONG-TIMER;
210,MG发送AV应答消息。
在上述处理过程中,因为MG注册时还没有获取到时间参数值,重传时间RESEND-TIMER可以取H.248规范建议的4秒。另外因为RESEND-NUM是在MGC上配置的,所以当该配置更改时,如果对应MG已经注册,MGC要更新本地的LONG-TIMER,并通过AV请求消息的MGCOriginatedPendingLimit通知MG,MG收到带有MGCOriginatedPendingLimit的AV请求消息时,要重新计算赋值本地的LONG-TIMER、RESEND-NUM。
综上所述,采用本发明方法,应用于H.248协议消息的处理,可以使得MGC、MG的时间参数统一并且可以根据网络环境动态调整时间值。提高了 消息处理的兼容性与灵活性。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。