一种利用状态机机制实现事务可靠传输的方法

文档序号:7836655阅读:459来源:国知局
专利名称:一种利用状态机机制实现事务可靠传输的方法
技术领域
本发明涉及通信技术领域,尤其涉及一种实现事务在IP网络上可靠传输的方法。
背景技术
在下一代网络中和软交换组网体系结构中,媒体网关控制器(MGC)通过媒体网关控制协议(H.248)来控制媒体网关(MG)。H.248协议是一种主从协议,以媒体网关控制器为主,媒体网关为从,媒体网关控制器负责对和媒体网关相关的呼叫状态进行控制,媒体网关在媒体网关控制器的控制下完成不同网络之间媒体格式的转换,若媒体网关控制器发送的消息不能获得及时响应,可能导致重复发送,将导致对媒体网关执行命令后的状态无法预知。
H.248协议定义的协议消息可以在用户数据报协议(UDP)或传输控制协议(TCP)上传输,当在UDP上进行传输时,可能会发生消息丢失,在TCP上进行传输时,尽管TCP提供了可靠的传输机制,但由于TCP是一种基于流的协议,对于面向事务(Transaction)的H.248协议,消息中的请求事务(Transaction Request)与应答事务(TransactionReply)仍有可能发生丢失,所以H.248协议规定了在IP上传输的要求,保证事务(Transaction)的可靠传输。
目前,H.248协议规定了在IP上传输要求遵循以下机制(一)“至多一次机制”
要求协议实体在内存中保留两个列表,一个用来记录执行完最近所接收的Transaction Request后返回的Transaction Reply,另一个用来记录当前需要处理的Transaction Request,当接收到一个Transaction Request消息时,将接收事务的事务号(Transaction ID)与最近发出的Transaction Reply的事务号(Transaction ID)相比较,如果相同,则不执行接收到的请求事务Transaction Request,仅重复发送Transaction Reply响应消息,如不相同,则将该接收事务Transaction ID与需要处理的Transaction Request列表相比较,如果在列表中查找到Transaction ID相同的事务,则表明此TransactionRequest为重复发送,不必执行。
(二)重传机制发出Transaction Request的协议实体应为所有的Transaction指定一个重传定时器,当定时器超时仍未接收到响应,则应当重复发送该Transaction,当重复多次发送的Transaction仍未得到响应时,发送请求的实体应当采取替代服务或拆除现有连接或即将建立的连接。
(三)三次握手机制Transaction执行过程中,某些Transaction执行可能需要较长的时间,从而可能会导致Transaction执行与重传机制发生冲突,执行时间太长可能导致Transaction的反复重传多次,或者导致重传定时器数值过大而降低传输的效率。如果协议实体预见某一Transaction需要较长的执行时间,则可以先发送一个临时响应消息(Transaction Pending)指示Transaction正在处理;当协议实体接收到重复的TransactionRequest消息,如果该Transaction正在处理,也应当发送TransactionPending消息,接收到Transaction Pending消息的实体应当为该消息对应的Transaction Request消息的重传定时器设定一个不同数值;如果接收到最终的Transaction Reply消息,则应立即向对端实体发送一个确认消息,此后,应使用通常的定时器。对于同一个TransactionRequest,实体在接收到最终的Transaction Reply后,应忽略接收的Transaction Pending消息。
(四)其它长定时器(LONG-TIMER)LONG-TIMER设定的时间应大于一个Transaction的最大持续时间,该时间还应考虑Transaction最多重复次数、重复定时器的最大值以及分组在网络中的最大传输时延。当协议实体发出响应消息后,协议实体应为响应事务的Transaction ID保存一个备份,保存时间为LONG-TIMER设定的时间。如果LONG-TIMER超时,或者已经收到来自对等实体包含“Response Acknowledgement Parameter”参数的响应证实消息,该参数携带了一组“已被确认的Transaction ID范围”参数,则协议实体将检测Transaction Reply列表,丢弃那些Transaction ID包含在上述范围内的Transaction Reply。
以上协议规定的实现Transaction可靠传输的机制复杂,对实现的测试也难以控制。

发明内容
本发明所要解决的技术问题是克服现有的实现Transaction可靠传输的机制复杂以及对实现的测试难以控制的不足,提供一种使Transaction可靠传输复杂的逻辑关系变得简单清晰,便于实现和测试的方法。
本发明为解决上述技术问题所采用的技术方案为这种利用状态机机制实现事务可靠传输的方法,其特征在于将协议实体向对端实体发送的请求事务(Transaction Request)保存到请求(Request)队列,将对从对端实体接收到的请求事务(TransactionRequest)所响应的应答事务(Transaction Reply)保存到应答(Response)队列,两个队列中的事务(Transaction)分别根据触发状态变化的事件而完成相应的操作和状态变化,从而利用状态机机制实现对事务(Transaction)的可靠传输。
所述的请求队列中,事务的状态包括状态a请求事务第一次被发送给对端实体;状态b发送给对端实体的请求事务在定时时间内没有收到响应,该请求事务被重发一次或多次;状态c在向对端实体发送请求事务后接收到对端实体对该请求事务的临时响应(Transaction Pending)。
所述的触发请求队列中事务状态变化的事件包括事件a从对端实体接收到对请求事务的响应;事件b从对端实体接收到对请求事务的临时响应;事件c请求事务的重传定时器超时;事件d请求事务达到了最大重传次数。
所述的请求队列中,事务的状态与事件的操作变化为当接收到事件a,当前状态为状态a时将事务从请求队列中丢弃;当接收到事件a,当前状态为状态b时将事务从请求队列中丢弃;当接收到事件a,当前状态为状态c时将事务从请求队列中丢弃,向对端实体发送一个确认消息;当接收到事件b,当前状态为状态a时将事务的重传定时器的值设置为临时响应定时器取值,重传次数置零,事务的状态迁至状态c;当接收到事件b,当前状态为状态b时将事务的重传定时器的值设置为临时响应定时器取值,重传次数置零,事务的状态迁至状态c;当接收到事件b,当前状态为状态c时不操作;当接收到事件c,当前状态为状态a时重新发送一次该事务,重传次数增加,事务的状态迁至状态b;当接收到事件c,当前状态为状态b时重新发送一次该事务,重传次数增加;当接收到事件c,当前状态为状态c时重新发送一次该事务,重传次数增加,将事务的重传定时器重新设置,事务的状态迁至状态b;当接收到事件d,当前状态不会为状态a;当接收到事件d,当前状态为状态b时采取替代服务或拆除现有连接或即将建立的连接;当接收到事件d,当前状态不会为状态c。
所述的应答队列中,事务的状态包括状态A第一次接收到对端实体的请求事务;状态B对接收到的请求事务的响应已发送给对端实体;状态C接收到对端实体对应答事务的确认响应(ResponseAcknowledgement)。
所述的触发应答队列中事务状态变化的事件包括事件A从对端实体接收到请求事务;事件B从对端实体接收到对应答事务的确认响应;事件C向对端实体发送响应的事务号(Transaction ID)保存时间超时。
所述的应答队列中,事务的状态与事件的操作变化为当接收到事件A,当前状态为状态A时发送一个临时响应给对端实体,不执行该请求事务,临时响应重发达到一定次数后将应答事务从应答队列中删除;当接收到事件A,当前状态为状态B时重新发送一次应答事务给对端实体,不执行该请求事务;当接收到事件A,当前状态为状态C时不执行该请求事务;
当接收到事件B,当前状态为状态A时不操作;当接收到事件B,当前状态为状态B时将应答事务从应答队列中删除,仅保存事务号,事务的状态迁至状态C;当接收到事件B,当前状态为状态C时不操作;当接收到事件C,当前状态不会为状态A;当接收到事件C,当前状态为状态B时将应答事务从应答队列中删除,丢弃相应的事务号;当接收到事件C,当前状态为状态C时丢弃相应的事务号。
本发明的有益效果为本发明根据H.248协议规定的机制利用状态机来实现Transaction的可靠传输,利用状态机机制对队列、状态和事件进行设计,与现有的实现方式相比,本发明使Transaction可靠传输复杂的逻辑关系通过状态和事件的设计变得简单清晰,便于实现和测试。
具体实施例方式
下面根据实施方案对本发明作进一步详细说明本发明基于H.248协议对在IP上传输的规定,采用了状态机来实现事务(Transaction)的可靠传输,详细描述如下将协议实体向对等实体发送的请求事务(Transaction Request)保存到一个请求(Request)队列,将对从对等实体接收到的请求事务(Transaction Request)所响应的应答事务(Transaction Reply)保存到一个应答(Response)队列,两个队列中的事务(Transaction)分别根据触发状态变化的事件而完成相应的操作和状态变化,利用状态机机制实现对事务(Transaction)的可靠传输。
Request队列中的Transaction的状态如表1所示
表1

Transaction进入Request队列的条件是第一次向对端实体发送后,初始状态为状态a。
触发以上状态变化的所有可能事件包括表2

当前Request队列中的Transaction根据触发事件的相应操作和状态变化情况如表3所示表3


Response队列中的Transaction的状态如表4所示表4

Transaction进入Response队列的条件是第一次接收到对端实体的Transaction Request,初始状态为状态A,一旦响应了TransactionReply,Response队列中保存的是Transaction Reply,状态迁至状态B,并启动长定时器LONG_TIMER。
触发以上状态变化的所有可能事件如表5所示,包括表5

当前Response队列中的Transaction根据触发事件的相应操作和状态变化情况如表6所示表6

本发明的上述方案,利用状态机机制对队列、状态和事件进行设计,与现有的实现方式相比,使事务Transaction可靠传输复杂的逻辑关系变得简单清晰,便于实现和测试。
权利要求
1.一种利用状态机机制实现事务可靠传输的方法,其特征在于将协议实体向对端实体发送的请求事务(Transaction Request)保存到请求(Request)队列,将对从对端实体接收到的请求事务(Transaction Request)所响应的应答事务(Transaction Reply)保存到应答(Response)队列,两个队列中的事务(Transaction)分别根据触发状态变化的事件而完成相应的操作和状态变化,从而利用状态机机制实现对事务(Transaction)的可靠传输。
2.根据权利要求1所述的利用状态机机制实现事务可靠传输的方法,其特征在于所述的请求队列中,事务的状态包括状态a请求事务第一次被发送给对端实体;状态b发送给对端实体的请求事务在定时时间内没有收到响应,该请求事务被重发一次或多次;状态c在向对端实体发送请求事务后接收到对端实体对该请求事务的临时响应(Transaction Pending)。
3.根据权利要求2所述的利用状态机机制实现事务可靠传输的方法,其特征在于所述的触发请求队列中事务状态变化的事件包括事件a从对端实体接收到对请求事务的响应;事件b从对端实体接收到对请求事务的临时响应;事件c请求事务的重传定时器超时;事件d请求事务达到了最大重传次数。
4.根据权利要求3所述的利用状态机机制实现事务可靠传输的方法,其特征在于所述的请求队列中,事务的状态与事件的操作变化为当接收到事件a,当前状态为状态a时将事务从请求队列中丢弃;当接收到事件a,当前状态为状态b时将事务从请求队列中丢弃;当接收到事件a,当前状态为状态c时将事务从请求队列中丢弃,向对端实体发送一个确认消息;当接收到事件b,当前状态为状态a时将事务的重传定时器的值设置为临时响应定时器取值,重传次数置零,事务的状态迁至状态c;当接收到事件b,当前状态为状态b时将事务的重传定时器的值设置为临时响应定时器取值,重传次数置零,事务的状态迁至状态c;当接收到事件b,当前状态为状态c时不操作;当接收到事件c,当前状态为状态a时重新发送一次该事务,重传次数增加,事务的状态迁至状态b;当接收到事件c,当前状态为状态b时重新发送一次该事务,重传次数增加;当接收到事件c,当前状态为状态c时重新发送一次该事务,重传次数增加,将事务的重传定时器重新设置,事务的状态迁至状态b;当接收到事件d,当前状态不会为状态a;当接收到事件d,当前状态为状态b时采取替代服务或拆除现有连接或即将建立的连接;当接收到事件d,当前状态不会为状态c。
5.根据权利要求1、2、3或4所述的利用状态机机制实现事务可靠传输的方法,其特征在于所述的应答队列中,事务的状态包括状态A第一次接收到对端实体的请求事务;状态B对接收到的请求事务的响应已发送给对端实体;状态C接收到对端实体对应答事务的确认响应(ResponseAcknowledgement)。
6.根据权利要求5所述的利用状态机机制实现事务可靠传输的方法,其特征在于所述的触发应答队列中事务状态变化的事件包括事件A从对端实体接收到请求事务;事件B从对端实体接收到对应答事务的确认响应;事件C向对端实体发送响应的事务号(Transaction ID)保存时间超时。
7.根据权利要求6所述的利用状态机机制实现事务可靠传输的方法,其特征在于所述的应答队列中,事务的状态与事件的操作变化为当接收到事件A,当前状态为状态A时发送一个临时响应给对端实体,不执行该请求事务,临时响应重发达到一定次数后将应答事务从应答队列中删除;当接收到事件A,当前状态为状态B时重新发送一次应答事务给对端实体,不执行该请求事务;当接收到事件A,当前状态为状态C时不执行该请求事务;当接收到事件B,当前状态为状态A时不操作;当接收到事件B,当前状态为状态B时将应答事务从应答队列中删除,仅保存事务号,事务的状态迁至状态C;当接收到事件B,当前状态为状态C时不操作;当接收到事件C,当前状态不会为状态A;当接收到事件C,当前状态为状态B时将应答事务从应答队列中删除,丢弃相应的事务号;当接收到事件C,当前状态为状态C时丢弃相应的事务号。
全文摘要
一种涉及通信技术领域的实现事务可靠传输的方法,其特征在于将协议实体向对端实体发送的请求事务Transaction Request保存到请求Request队列,将对从对端实体接收到的请求事务Transaction Request所响应的应答事务Transaction Reply保存到应答Response队列,两个队列中的事务Transaction分别根据触发状态变化的事件而完成相应的操作和状态变化,从而利用状态机机制实现对事务Transaction的可靠传输。本发明克服现有的实现Transaction可靠传输的机制复杂以及对实现的测试难以控制的不足,提供一种使Transaction可靠传输复杂的逻辑关系变得简单清晰,便于实现和测试的方法。
文档编号H04L12/26GK1499802SQ0214836
公开日2004年5月26日 申请日期2002年11月11日 优先权日2002年11月11日
发明者赵瑞, 瑞 赵 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1