一种移动自组织网络及其组播路由方法_2

文档序号:9790949阅读:来源:国知局
1 ]步骤202、更新自身的连接链表;
[0052] 步骤203、判断自身节点是否在MA报文的邻居链表中,如果自身节点在M报文的邻 居链表中,则执行步骤204;如果自身节点不在M报文的邻居链表中,则执行步骤205;
[0053] 步骤204、标识邻居节点到自身节点为双向链路;
[0054] 步骤205、标识邻居节点到自身节点为单向链路。
[0055] 由于本申请实施例所提供的路由方法只需要在路由层实现,不需要修改物理层 MAC协议,因此可W与802.1IMAC协议的硬件产品兼容,并且本申请实施例的路由实现相对 简单,容易实施;而且,由于网络中各节点只需要与邻居节点通过包括邻居链表的MA报文即 可确定彼此之间是单向链路还是双向链路,无论是在链路建立过程、链路维护过程,还是在 数据传输过程中,各节点都可W实时的确定出彼此间的链路,进而确定网络整体路由。例 如,在链路建立过程中节点A与节点B之间仅存在A^B的单向链路,如果在后续链路维护过 程中,网络拓扑发生变化,A与B之间变为双向链路或者A与B之间存在B^A的回路,则节点 A、节点B可W实时的确定出运种链路变化,从而选择最优的路径进行路由传输。因此,本申 请实施例的路由协议实现非常灵活,即使在拓扑变化较快的Ad hoc网络中也可W适用。
[0056] 实施中,当所述网络中既存在单向链路又存在双向链路时,在确定网络中各节点 之间的路由关系时可W优先选择双向链路路由。
[0057] 具体实施中,由于单向链路的数据传输,会导致报文的应答或确认需要从其他链 路发送得到,实施起来较为麻烦,效率较低。例如,A^B的单向链路,当节点則欠到节点A的报 文后,需要选择其他链路(可能绕很长的一个链路)才能将对A报文的应答或确认发送给节 点A。
[0058] 为了规避单向链路的影响,本申请实施例在单双链路并存的场景中可W尽量适用 双向链路进行数据报文的传输,传输效率更高。
[0059] 实施中,当所述邻居节点到自身节点为单向链路时,所述邻居节点为所述单向链 路的前向节点,所述自身节点为所述单向链路的后向节点,所述方法可W进一步包括:
[0060] 所述单向链路的后向节点启动定时器;
[0061] 如果在定时器超时之前,所述单向链路的后向节点收到由同一核屯、节点发送的、 具有相同M报文序列号且路由均为双向链路的MA报文,则所述单向链路的后向节点根据双 向链路路由更新自身的连接链表,由此确定自身的路由表信息,生成M报文继续转发。
[0062] 具体实施中,如果邻居节点到自身节点为单向链路,那么,所述邻居节点即为所述 单向链路的前向节点,所述自身节点即为所述单向链路的后向节点。此时,所述单向链路的 后向节点可W启动定时器,在一段时间内继续等待更多的MA报文。如果在定时器超时之前, 所述单向链路的后向节点收到了由同一核屯、节点发送的、具有相同MA报文序列号且路由均 为双向链路的MA报文,说明所述单向链路的后向节点与核屯、节点之间还存在其他的双向链 路,此时该节点可W更新连接链表,停止定时器,并根据该双向链路的MA报文生成新的MA 报文继续转发。
[0063] 其中,路由均为双向链路可W理解为核屯、节点到所述单向链路的后向节点经过的 所有节点间的链路均为双向链路。例如,假设核屯、节点为A,所述单向链路的后向节点为D, 途经B、C,核屯、节点A发送的MA报文指示的路由信息为A至化为双向链路、B到C为双向链路、C 到所述单向链路的后向节点D为双向链路。
[0064] 实施中,如果在定时器超时之前,所述单向链路的后向节点未收到由同一核屯、节 点发送的、具有相同序列号且包含双向链路的MA报文,则向所述单向链路的前向节点单跳 广播控制报文UMA报文,所述UMA报文中包括发送节点id、核屯、节点id、目的节点id(即单向 链路的前向节点id)和M报文序列号。
[0065] 具体实施中,如果定时器超时,仍然没有收到由同一核屯、节点发送的、具有相同序 列号且包含双向链路的M报文,说明该节点与核屯、节点之间只有单向链路。此时,该节点可 W启动定时器,生成UMA报文并单跳广播给该节点的单向链路的前向节点(也即该节点的上 面所述的邻居节点)。
[0066] 其中,UMA报文中可W包括发送节点的id、核屯、节点的id、单向链路的前向节点的 id和M报文的序列号。
[0067] uMA报文格式可W如下表所示:
[0069] 实施中,在所述单向链路的后向节点向所述单向链路的前向节点单跳广播UMA报 文之后,所述方法可W进一步包括:所述单向链路的后向节点收到所述单向链路的前向节 点的确认信息后,填充自身邻居链表并标识所述单向链路的前向节点到自身节点为单向链 路,生成M报文并转发;根据定时器超时前是否收到UMA报文确定是否存在所述单向链路的 后向节点到所述单向链路的前向节点的回路。
[0070] 具体实施中,所述单向链路的前向节点在收到UMA报文之后,可W设置连接链表 nexthop表项,nexthop表项也即下一跳的表项,表示转发来自所述单向链路的后向节点的 数据报文,并将UMA报文中的MA报文序列号从ACK链表中移除,向上述节点(也即,所述单向 链路的后向节点)发送UMA报文。此时,所述单向链路的后向节点得知所述单向链路的前向 节点已经收到报文确认信息。故单向链路路由建立。
[0071] 接着,所述单向链路的后向节点填充邻居链表并将单向链路标志的值修改为 true,生成新的MA报文并转发。如果在定时器超时前没有收到UMA报文,则可W认为所述单 向链路的后向节点没有到所述单向链路的前向节点的回路,此后可W不再转发M报文。
[0072] 实施中,如果网络中不存在所述单向链路的后向节点到所述单向链路的前向节点 的回路,所述方法可W进一步包括:
[0073] 所述单向链路的后向节点通过单跳广播方式向所述单向链路的前向节点转发数 据报文;
[0074] 在确认所述数据报文转发失败时,所述单向链路的后向节点将所述数据报文进行 全网广播。
[0075] 具体实施中,如果网络中不存在所述单向链路的后向节点到所述单向链路的前向 节点的回路,那么所述单向链路的后向节点可W通过单跳泛洪方式(也即单跳广播方式)向 所述单向链路的前向节点转发数据报文;所述单向链路的后向节点可W根据所述单向链路 的前向节点转发的数据报文来确定所述单向链路的后向节点发送的数据报文是否成功转 发。
[0076] 如果所述单向链路的后向节点的数据报文确认超时,则所述单向链路的后向节 点可W启动类似Flood协议机制进行数据报文的全网广播。
[0077] 在上述数据转发过程中,如果网络拓扑发生变化,所述单向链路的后向节点获得 了双向链路的路由信息,则可W立即停止单向链路的数据分发,切换成双向链路来转发数 据报文。
[0078] 采用由于单向链路导致了网络分割,现有技术中,传统的路由协议不能支持单向 链路的数据传输。而采用本申请实施例所提供数据传输方法可W支持单向链路的数据传 输,采用上述数据报文的传输机制,可W确保即使在单向链路的情况下也可W进行数据传 输。
[0079] 为了便于本申请的实施,下面W实例进行说明。
[0080] 本申请实施例的设计思路为:提出一种组播路由单向链路检测方法,主动探测网 络传输过程中的单向链路,并在单双链路并存的场景中,尽量使用双向链路进行数据报文 传输,规避单向链路的影响;在仅有单向链路的场景中,利用UMA控制报文向单向路径的前 向节点发送确认报文,由此来判断是否存在网络分割现象;如果存在网络分割,则停止盲目 转发数据报文;如果不存在网络分割,则利用泛洪机制尽可能地保障报文的有效传输。
[0081] 图3示出了本申请实施例中环状单向链路的结构示意图,节点11为核屯、节点,节点 6为组成员节点,节点1为数据发送节点(即,需要向组播组发送数据报文的节点),箭头方向 表示链路的方向,如图所示,可W看出,节点A到节点B为单向链路,节点8到节点4为单向链 路。
[0082] 本申请实施例提供的支持单向链路的组播路由方法,可W包括单向链路检测、路 由建立和数据报文传输=个过程,具体说明如下。
[0083] -、单向链路检测
[0084] 实现单向链路检测的思想为,采用MA报文检测机制。在一跳范围内的节点A向节点 B发送MA报文,MA报文中包含了节点A接收的所有未过期的邻居节点的id,节点則欠到来自节 点A的MA报文后,如果M报文的邻居链表中不包含节点B的id,运表明节点A没有收到过节点 B的MA报文,故而判定A^B是单向链路,同时单向链路后向节点B在其邻居链表中标记与A 节点的关系是单向的。
[0085] 结合图3,对本申请实施例中单向链路检测方法进行如下说明。
[0086] 首先,所有节点运行一段时间后,通过MAC层接收的报文感知邻居节点信息,并将 其记录在邻居节点链表中;
[0087] 节点A填充未过期邻居链表,生成自身的MA报文,节点A-跳广播包含邻居节点链 表信息的M报文;
[0088] 节点B-跳广播包含邻居节点链表信息的MA报文;
[0089] 节点則欠到节点A发送的MA报文后,对比其中的邻居链表,该MA报文中没有自身的 节点i d,则说明从A至化存在单向链路,B节点标示到A节点存在单向链路。
[0090] 二、路由建立
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1