一种网络设备间的消息传递方法

文档序号:7686478阅读:278来源:国知局
专利名称:一种网络设备间的消息传递方法
技术领域
本发明涉及数据传输领域网络设备间的消息传递方法。
背景技术
在数据传输领域,以消息通知作为交互模式的应用系统越来越 多。在消息传输时,由于双方系统或传输链路的故障,导致消息在 传输过程中丢失而不能及时、可靠的送达。针对这一问题,形成了 各种不同的消息重发机制用于重新发送未成功送达的消息。采用重 发机制,在第一次发送不成功的情况下,能够进行多次的发送尝试, 在很大程度上解决了消息发送不能送达的问题。但对于中长期的通 信故障,由于多次的尝试重发,既浪费发送时间又占用系统资源, 造成了发送效率的低下。当前对于消息重传有很多代表性的方法, 实际系统中使用的最多的是二进制回退算法和轮询扫描方法。
二进制指数回退方法。它首先将时间分片,每个时间片的长度
是t。则在第i次发送失败时,重新发送周期T是在O到(2'-l)*t 之间的一个随机的长度为t的整数倍的时间。二进制指数回退算法 使得当数据传输发生故障时,重试时间间隔呈指数迅速增长。这种 针对随机故障模式设计的重试时间间隔计算方法并不适用于网络 系统间消息通信的常见故障模式,往往会造成故障恢复时间过长。 网络系统间消息通信发生故障的原因 一般是网络繁忙造成传输超 时、网络设备发生故障、应用系统发生故障、计划内停机维护等等。这些故障的发生是随机的,但故障的恢复由于人工发现和维护的介 入,因此不是随机的,而是具有一定的模式。此外,网络上的故障 的恢复需要的时间往往以小时和天来计,而在这段时间内会积累大 量未发出的消息,因此消息队列的维护也是一个很大的问题。
轮询扫描方法为每一个网络设备节点建立重发链表,设置一定 时器每隔一定时间扫描整个队列,对超过重发间隔的请求消息重 发,收到对端响应时,以消息的ID号为关键字遍历整个链表,删 除匹配的请求。同时对首次发送失败的信令采用二进制回退方法进 行处理。
轮询扫描方法得缺点是若请求消息重发链表太长,遍历链表工 作量非常大,在重发定时器到时和收到响应时到遍历整个链表,会
极大的消耗CPU资源。对首次发送失败的回退处理也会引起消息的 累积问题。
因此,建立适用于网络设备间消息保存、管理与重传调度方法, 在系统资源占用和消息通知恢复的及时性之间取得灵活的平衡是
非常迫切和有意义的工作。

发明内容
本发明提供一种新的网络设备间的消息传递方法用于网络设备 间的消息重发,所述方法采用重发数组和链表相结合的办法,能快 速定位重发消息,响应重发请求,目的在于提高设备进行消息重发 的效率,并保证消息传递的准确性。所述网络设备间的消息传递方法,包括以下歩骤
a. 以消息标志ID为数组下标建立重发数组;
b. 产生请求时,以消息标识ID为数组下标将其插入到重发数组中,并发送消息,对于消息标识ID低位相同的请求(即冲突情况),则建立冲突链表;
c. 发送请求消息,同时为发送的消息设立重发定时器,定时器到时仍未收到响应,以对端ID+消息ID为返回值,检索到对端节点ID以消息ID为数组下标的单元,快速定位到重发数组元素,进行请求消息重发,并将发送次数累加,超过设计的最大重发次数阈值,将该消息从重发链表中删除;
d. 收到响应时,根据消息ID直接定位到重发数组中的元素,删
除对应请求消息。
对于歩骤b中所述消息标识ID低位相同的请求是指重发数组大
小不足容纳所有消息的请求,此吋采用冲突链的方式存储消息;在存在冲突链的情况下,采用消息ID和对端通信节点ID在冲突链中定位消息。
采用所述直接数组下标定位重发数组和链表相结合的方法进行网络设备间的消息重发,不需再做链表遍历工作,当数组元素存在冲突链时才遍历冲突链,删除对应请求消息。
因此本发明具有以下益效果
a大大提高网络设备进行消息重发的效率;b实现简单方便,运行时资源消耗低;
c在系统资源占用和消息通知恢复的及时性之间取得灵活的平
衡;
d保证消息的准确传递。


图1重发数组的数据结构图,图2重发处理流程图。
具体实施例方式
1. 首先为每个通信端节点建立重发数组。重发数组用来存放消息的指针,重发数组的数据结构如图l所示。
2. 重发数组以消息的唯一标识符消息ID为数组下标,通过下标,可以直接在重发数组中精确定位消息元素。
3. 重发数组大小可根据硬件总线结构情况来设置。当消息ID为16位时,如果建立的数组大小为65535 (2的16次方)时,即不存在消息ID重复的情况,此时可直接在数组中通过下标定位;如果受限于系统结构,重发数组大小小于65536时,比如256 (2的8次方)时,存在消息ID重复的情况,当出现消息ID冲突的情况时,则需要在冲突单元中建立一个冲突链表。
4. 冲突链表中的元素包含了通信端的节点信息,通过这些信息可以在冲突链表中定位重发的具体消息。
5. 通信节点发送消息的同时,将该消息以消息ID下标存入该节点的重发数组。首先检查重发数组中指针指向是否为空,为空则表明不存在冲突情况,直接将消息指针存入该单元;非空,则表示该单元中己存在一条消息,出现消息冲突情况,此时需要将ID相同的消息存入本单元的冲突链中,重发数组中的该单元元素为该链表的头指针。
6. 为该消息设立重发定时器,定时器设置为最大允许响应时间。
7. 定时器结束前收到回复响应,表示消息传输正常,不需要重发,根据消息ID可直接定位到重发数组的消息单元,从该单元中删除消息。如果该单元存在冲突链表(如果有的话),则需要遍历冲突链表,采用通信对端ID来定位该消息,定位后删除该消息,同时将对应的定时器关闭。
8. 如果定时器超时,表示消息传输失败。根据消息ID可直接定位到重发数组的消息单元,如果没有冲突链,则直接取出消息重新发送,并重新设置定时器。如果存在冲突链,则根据通信对端ID定位消息后,重新发送。
9. 每次重发,将消息的重发次数进行累加,超过设计的阈值后,直接将消息从重发数组中删除。
权利要求
1.一种网络设备间的消息传递方法,所述方法的特征在于包括以下步骤a.以消息标志ID为数组下标建立重发数组;b.产生请求时,以消息标识ID为数组下标将其插入到重发数组中,并发送消息,对于消息标识ID低位相同的请求,则建立冲突链表;c.发送请求消息,同时为发送的消息设立重发定时器,定时器到时仍未收到响应,以对端ID+消息ID为返回值,检索到对端节点ID以消息ID为数组下标的单元,快速定位到重发数组元素,进行请求消息重发,并将发送次数累加,超过设计的最大重发次数阈值,将该消息从重发链表中删除;d.收到响应时,根据消息ID直接定位到重发数组中的元素,删除对应请求消息。
2.如权利要求1所述的网络设备间的消息传递方法,其特征在于-对于歩骤b中所述消息标识ID低位相同的请求是指重发数组大小不足容纳所有消息的请求,此时采用冲突链的方式存储消息;在存在冲突链的情况下,采用消息ID和对端通信节点ID在冲突链中定位消息。
全文摘要
一种网络设备间的消息传递方法,包括以下步骤a.以消息标志ID为数组下标建立重发数组;b.产生请求时,以消息标识ID为数组下标将其插入到重发数组中,并发送消息;c.发送请求消息,同时为发送的消息设立重发定时器,定时器到时仍未收到响应,以对端ID+消息ID为返回值,检索到对端节点ID以消息ID为数组下标的单元,定位到重发数组元素,进行请求消息重发,并将发送次数累加,超过设计的最大重发次数阈值,将该消息从重发链表中删除;d.收到响应时,根据消息ID直接定位到重发数组中的元素,删除对应请求消息。所述方法能大大提高网络设备进行消息重发的效率,在系统资源占用和消息通知恢复的及时性之间取得灵活的平衡,并保证消息传递的准确性。
文档编号H04L1/18GK101651526SQ20081004881
公开日2010年2月17日 申请日期2008年8月14日 优先权日2008年8月14日
发明者刚 卢, 凯 彭, 学 王 申请人:武汉光发科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1