CN105553854B - 一种基于移动自组织网络的系统及其组播路由方法 - Google Patents
一种基于移动自组织网络的系统及其组播路由方法 Download PDFInfo
- Publication number
- CN105553854B CN105553854B CN201510975947.9A CN201510975947A CN105553854B CN 105553854 B CN105553854 B CN 105553854B CN 201510975947 A CN201510975947 A CN 201510975947A CN 105553854 B CN105553854 B CN 105553854B
- Authority
- CN
- China
- Prior art keywords
- node
- way link
- message
- link
- way
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/24—Connectivity information management, e.g. connectivity discovery or connectivity update
- H04W40/248—Connectivity information update
Abstract
本申请提供了一种基于移动自组织网络的系统及其组播路由方法,包括步骤:网络中的节点向各自的邻居节点发送自身的MA报文,所述MA报文中包括节点自身的邻居链表;所述邻居链表预先存储有发送过报文给自身的邻居节点的标识id;各节点在收到邻居节点发送的MA报文后,根据所述邻居节点发送的MA报文的邻居链表中是否存在自身节点标识id,确定自身节点与邻居节点之间的链路状态;其中,所述链路状态包括单向链路和双向链路;根据每个节点与其邻居节点之间的链路状态,确定网络中各节点之间的路由关系。本申请实施例所提供的技术方案可以适用于拓扑变化较快的Ad Hoc无线网络。
Description
技术领域
本申请涉及移动自组织网络技术领域,尤其涉及一种基于移动自组织网络的系统及其组播路由方法。
背景技术
现有的移动自组织网络(Ad Hoc网络)路由协议一般是预先假定所有链路为双向链路,即,节点A在节点B的通信范围内,同时节点B也在节点A的通信范围内。然而,在实际场景中存在大量的非双向链路,也可以称为单向链路,即,节点A在节点B的通信范围内,但节点B却不在节点A的通信范围内。
目前,国内外对单向链路的研究主要是从路由层、媒介访问控制MAC(MediaAccess Control)层和中间层进行改进,且大多数解决方案都是假设单向链路一直存在,并且相当长时间内链路状态不会发生变化。然而,在Ad Hoc网络环境中,所有节点都可能以任意速度向任意方向移动,单向链路的存在是随机的。
现有技术不足在于:
现有的单向链路方案不适合存在单向链路场景的、拓扑变化的Ad Hoc无线网络。
发明内容
本申请实施例提出了一种基于移动自组织网络的系统及其组播路由方法,以解决现有技术中单向链路方案不适合存在单向链路场景的、拓扑变化的Ad Hoc无线网络的技术问题。
本申请实施例提供了一种移动自组织网络的组播路由方法,包括如下步骤:
网络中每个节点向邻居节点发送自身的MA报文,所述MA报文中包括节点自身的邻居链表;
待收到邻居节点发送的MA报文后,根据所述邻居节点发送的MA报文的邻居链表中是否存在自身节点标识id,确定自身节点与邻居节点之间的链路状态;其中,所述链路状态包括单向链路和双向链路;
根据每个节点与邻居节点之间的链路状态,确定网络中各节点之间的路由关系。
本申请实施例提供了一种基于移动自组织网络的系统,所述网络中包括若干节点,每个节点可以包括:
发送模块,用于向邻居节点发送自身的MA报文,所述MA报文中包括节点自身的邻居链表;所述邻居链表预先存储有发送过报文给自身的邻居节点的标识id;
链路确定模块,用于在收到邻居节点发送的MA报文后,根据所述邻居节点发送的MA报文的邻居链表中是否存在自身节点标识id,确定自身节点与邻居节点之间的链路状态;其中,所述链路状态包括单向链路和双向链路;
路由确定模块,用于根据各节点与其邻居节点之间的链路状态,确定节点自身与网络中其他节点之间的路由关系。
有益效果如下:
本申请实施例所提供的基于移动自组织网络的系统及其组播路由方法,网络中每个节点向各自的邻居节点发送自身的MA报文,所述MA报文中包括自身的邻居链表;各节点在收到邻居节点发送的MA报文后,根据该报文的邻居链表中是否存在自身节点id来确定自身与邻居节点的链路状态;最终可以根据每个节点与其邻居节点之间的链路状态,确定网络路由。由于本申请实施例中节点之间可以通过传输包括自身邻居链表的MA报文,即可确定节点间的链路是双向的还是单向的,从而可以实现无论是在链路建立或维护过程,还是在数据传输过程中,都可以很快的实时确定出网络中各节点间的路由关系,因此,本申请实施例所提供的技术方案可以适用于存在单向链路场景的、拓扑变化较快的Ad hoc网络。
附图说明
下面将参照附图描述本申请的具体实施例,其中:
图1示出了本申请实施例中移动自组织网络的组播路由方法实施的流程示意图;
图2示出了本申请实施例中单向链路检测过程的示意图;
图3示出了本申请实施例中环状单向链路的结构示意图;
图4示出了本申请实施例中组播路由过程的整体示意图;
图5示出了本申请实施例中基于移动自组织网络的系统内每个节点的结构示意图。
具体实施方式
为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
发明人在发明过程中注意到:
在Ad Hoc网络的实际场景中,存在大量的单向链路。Ganesan等提出在节点能量相同且没有外部无线电源的情况下,无线自组网中15%的传输链路是单向的。DeCouto等证明在室内部署移动节点,大约30%的传输链路存在单向性。J.Zhao等在实验过程中发现,超过10%的传输链路是单向的。K.Jain等说明了在实际部署中,存在有大量单向、非均衡路径。
Ad Hoc网络中产生单向链路的主要原因是受到信号传输不对称的严重制约。其表现在以下几方面:
1)无线收发装置通信能力的差异产生单向链路,如学习过程中,平板电脑与智能手机的传输能力、传输范围和天线增益的差异;
2)在能量相同的情况下,周围信号的干扰影响了报文接收,导致单向链路的形成;
3)还有其他不可预见因素,如障碍物、天气状况等都可能影响信号传播。
国内外对单向链路的研究主要是从路由层、MAC层和中间层进行改进的,如IETF的UDLR工作组就致力于解决路由中的单向链路问题。目前,单向链路检测机制有Hello报文机制、MAC层CTS/ACK机制、利用GPS确定节点位置信息然后计算两点间的欧几里德距离等方法。
支持单向链路的路由协议可能存在以下优点;
(1)由单向链路形成的网络分割区域之间仍能保障通信;
(2)相当比例的单向链路的跳数要大大少于双向链路的跳数;
(3)包含单向链路的路径稳定性高、连通性好,而且不会增加网络拥塞。
但是,单向链路的维护代价在多数情况下可能会高于利用单向链路所带来的好处。而且大多数解决方案都是假设单向链路一直存在并且在相当长时间内链路状态不会发生变化。在Ad Hoc网络环境中,所有节点都可以以任何速度向任何方向移动,单向链路的存在是随机的。因此,这些单向链路方案并不适合拓扑变化的Ad Hoc网络。
另外,大部分单向链路解决方案都是为单播路由协议设定的,针对组播路由协议的单向链路问题研究较少。
如何来设计支持单向链路的组播路由协议来适应平衡单向链路的利用和维护代价之间的关系,并支持Ad Hoc网络场景需求是有意义的。
基于此,本申请实施例提出了一种移动自组织网络及其组播路由方法,下面进行说明。
图1示出了本申请实施例中移动自组织网络的组播路由方法,如图所示,所述移动自组织网络的组播路由方法可以包括如下步骤:
步骤101、网络中的节点向各自的邻居节点发送自身的多播控制(MA,MulticastAnnouncement)报文,所述MA报文中包括节点自身的邻居链表;
步骤102、各节点在收到邻居节点发送的MA报文后,根据所述邻居节点发送的MA报文的邻居链表中是否存在自身节点标识id,确定自身节点与邻居节点之间的链路状态;其中,所述链路状态包括单向链路和双向链路;
步骤103、根据每个节点与其邻居节点之间的链路状态,确定网络中各节点之间的路由关系。
现有技术中,基于网格结构的组播路由协议(PUMA,Protocol for UnifiedMulticasting through Announcement)使用单一的控制消息实现所有的功能,即多播控制包MA,通过这个报文,节点可以选择核心节点、通知节点加入或离开这个组网等,并维持该组网。
具体实施中,MA报文可以包括消息类型、发送节点的id、目的节点的id、目的节点的序号、单向链路标示和邻居链表,其中,邻居链表为可以发送数据给自身的邻居节点的列表,通常可以包括未过期的邻居节点。
MA报文格式可以如下表所示:
消息类型 |
发送节点ID |
目的节点ID |
MA报文序列号 |
单向链路标示 |
邻居链表 |
网络中的节点收到其邻居节点发送的MA报文,说明邻居节点到自身节点有链路,然后在收到邻居节点的MA报文后,可以将自身的节点id与邻居链表进行匹配,如果在邻居链表中存在自身的节点id,即可以确定自身到该邻居节点也存在链路,也即,自身与邻居节点之间为双向链路;如果在邻居链表中没有自身的节点id,则说明自身到该邻居节点不存在链路,也即,自身与邻居节点之间为单向链路。
通过上述过程,每个相邻的节点之间可以确定出彼此之间的链路状态,根据每个节点与其邻居节点之间的链路状态,可以最终确定出网络中所有节点之间的路由关系,进而还可以确定出网络中是仅存在单向链路、或仅存在双向链路,还是既存在单向链路又存在双向链路等。
图2示出了本申请实施例中单向链路检测过程的示意图,如图所示,可以包括如下步骤:
步骤201、收到邻居节点发送的MA报文;
步骤202、更新自身的连接链表;
步骤203、判断自身节点是否在MA报文的邻居链表中,如果自身节点在MA报文的邻居链表中,则执行步骤204;如果自身节点不在MA报文的邻居链表中,则执行步骤205;
步骤204、标识邻居节点到自身节点为双向链路;
步骤205、标识邻居节点到自身节点为单向链路。
由于本申请实施例所提供的路由方法只需要在路由层实现,不需要修改物理层MAC协议,因此可以与802.11MAC协议的硬件产品兼容,并且本申请实施例的路由实现相对简单,容易实施;而且,由于网络中各节点只需要与邻居节点通过包括邻居链表的MA报文即可确定彼此之间是单向链路还是双向链路,无论是在链路建立过程、链路维护过程,还是在数据传输过程中,各节点都可以实时的确定出彼此间的链路,进而确定网络整体路由。例如,在链路建立过程中节点A与节点B之间仅存在A→B的单向链路,如果在后续链路维护过程中,网络拓扑发生变化,A与B之间变为双向链路或者A与B之间存在B→A的回路,则节点A、节点B可以实时的确定出这种链路变化,从而选择最优的路径进行路由传输。因此,本申请实施例的路由协议实现非常灵活,即使在拓扑变化较快的Ad hoc网络中也可以适用。
实施中,当所述网络中既存在单向链路又存在双向链路时,在确定网络中各节点之间的路由关系时可以优先选择双向链路路由。
具体实施中,由于单向链路的数据传输,会导致报文的应答或确认需要从其他链路发送得到,实施起来较为麻烦,效率较低。例如,A→B的单向链路,当节点B收到节点A的报文后,需要选择其他链路(可能绕很长的一个链路)才能将对A报文的应答或确认发送给节点A。
为了规避单向链路的影响,本申请实施例在单双链路并存的场景中可以尽量适用双向链路进行数据报文的传输,传输效率更高。
实施中,当所述邻居节点到自身节点为单向链路时,所述邻居节点为所述单向链路的前向节点,所述自身节点为所述单向链路的后向节点,所述方法可以进一步包括:
所述单向链路的后向节点启动定时器;
如果在定时器超时之前,所述单向链路的后向节点收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文,则所述单向链路的后向节点根据双向链路路由更新自身的连接链表,由此确定自身的路由表信息,生成MA报文继续转发。
具体实施中,如果邻居节点到自身节点为单向链路,那么,所述邻居节点即为所述单向链路的前向节点,所述自身节点即为所述单向链路的后向节点。此时,所述单向链路的后向节点可以启动定时器,在一段时间内继续等待更多的MA报文。如果在定时器超时之前,所述单向链路的后向节点收到了由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文,说明所述单向链路的后向节点与核心节点之间还存在其他的双向链路,此时该节点可以更新连接链表,停止定时器,并根据该双向链路的MA报文生成新的MA报文继续转发。
其中,路由均为双向链路可以理解为核心节点到所述单向链路的后向节点经过的所有节点间的链路均为双向链路。例如,假设核心节点为A,所述单向链路的后向节点为D,途经B、C,核心节点A发送的MA报文指示的路由信息为A到B为双向链路、B到C为双向链路、C到所述单向链路的后向节点D为双向链路。
实施中,如果在定时器超时之前,所述单向链路的后向节点未收到由同一核心节点发送的、具有相同序列号且包含双向链路的MA报文,则向所述单向链路的前向节点单跳广播控制报文uMA报文,所述uMA报文中包括发送节点id、核心节点id、目的节点id(即单向链路的前向节点id)和MA报文序列号。
具体实施中,如果定时器超时,仍然没有收到由同一核心节点发送的、具有相同序列号且包含双向链路的MA报文,说明该节点与核心节点之间只有单向链路。此时,该节点可以启动定时器,生成uMA报文并单跳广播给该节点的单向链路的前向节点(也即该节点的上面所述的邻居节点)。
其中,uMA报文中可以包括发送节点的id、核心节点的id、单向链路的前向节点的id和MA报文的序列号。
uMA报文格式可以如下表所示:
消息类型 |
发送节点ID |
核心节点ID |
目的节点ID |
MA报文序列号 |
实施中,在所述单向链路的后向节点向所述单向链路的前向节点单跳广播uMA报文之后,所述方法可以进一步包括:所述单向链路的后向节点收到所述单向链路的前向节点的确认信息后,填充自身邻居链表并标识所述单向链路的前向节点到自身节点为单向链路,生成MA报文并转发;根据定时器超时前是否收到uMA报文确定是否存在所述单向链路的后向节点到所述单向链路的前向节点的回路。
具体实施中,所述单向链路的前向节点在收到uMA报文之后,可以设置连接链表nexthop表项,nexthop表项也即下一跳的表项,表示转发来自所述单向链路的后向节点的数据报文,并将uMA报文中的MA报文序列号从ACK链表中移除,向上述节点(也即,所述单向链路的后向节点)发送uMA报文。此时,所述单向链路的后向节点得知所述单向链路的前向节点已经收到报文确认信息。故单向链路路由建立。
接着,所述单向链路的后向节点填充邻居链表并将单向链路标志的值修改为true,生成新的MA报文并转发。如果在定时器超时前没有收到uMA报文,则可以认为所述单向链路的后向节点没有到所述单向链路的前向节点的回路,此后可以不再转发MA报文。
实施中,如果网络中不存在所述单向链路的后向节点到所述单向链路的前向节点的回路,所述方法可以进一步包括:
所述单向链路的后向节点通过单跳广播方式向所述单向链路的前向节点转发数据报文;
在确认所述数据报文转发失败时,所述单向链路的后向节点将所述数据报文进行全网广播。
具体实施中,如果网络中不存在所述单向链路的后向节点到所述单向链路的前向节点的回路,那么所述单向链路的后向节点可以通过单跳泛洪方式(也即单跳广播方式)向所述单向链路的前向节点转发数据报文;所述单向链路的后向节点可以根据所述单向链路的前向节点转发的数据报文来确定所述单向链路的后向节点发送的数据报文是否成功转发。
如果所述单向链路的后向节点的数据报文确认超时,则所述单向链路的后向节点可以启动类似Flood协议机制进行数据报文广播。
在上述数据转发过程中,如果网络拓扑发生变化,所述单向链路的后向节点获得了双向链路的路由信息,则可以立即停止单向链路的数据分发,切换成双向链路来转发数据报文。
采用由于单向链路导致了网络分割,现有技术中,传统的路由协议不能支持单向链路的数据传输。而采用本申请实施例所提供数据传输方法可以支持单向链路的数据传输,采用上述数据报文的传输机制,可以确保即使在单向链路的情况下也可以进行数据传输。
为了便于本申请的实施,下面以实例进行说明。
本申请实施例的设计思路为:提出一种组播路由单向链路检测方法,主动探测网络传输过程中的单向链路,并在单双链路并存的场景中,尽量使用双向链路进行数据报文传输,规避单向链路的影响;在仅有单向链路的场景中,利用uMA控制报文向单向路径的前向节点发送确认报文,由此来判断是否存在网络分割现象;如果存在网络分割,则停止盲目转发数据报文;如果不存在网络分割,则利用泛洪机制尽可能地保障报文的有效传输。
图3示出了本申请实施例中环状单向链路的结构示意图,节点11为核心节点,节点6为组成员节点,节点1为数据发送节点(即,需要向组播组发送数据报文的节点),箭头方向表示链路的方向,如图所示,可以看出,节点A到节点B为单向链路,节点8到节点4为单向链路。
本申请实施例提供的支持单向链路的组播路由方法,可以包括单向链路检测、路由建立和数据报文传输三个过程,具体说明如下。
一、单向链路检测
实现单向链路检测的思想为,采用MA报文检测机制。在一跳范围内的节点A向节点B发送MA报文,MA报文中包含了节点A接收的所有未过期的邻居节点的id,节点B收到来自节点A的MA报文后,如果MA报文的邻居链表中不包含节点B的id,这表明节点A没有收到过节点B的MA报文,故而判定A→B是单向链路,同时单向链路后向节点B在其邻居链表中标记与A节点的关系是单向的。
结合图3,对本申请实施例中单向链路检测方法进行如下说明。
首先,所有节点运行一段时间后,通过MAC层接收的报文感知邻居节点信息,并将其记录在邻居节点链表中;
节点A填充未过期邻居链表,生成自身的MA报文,节点A一跳广播包含邻居节点链表信息的MA报文;
节点B一跳广播包含邻居节点链表信息的MA报文;
节点B收到节点A发送的MA报文后,对比其中的邻居链表,该MA报文中没有自身的节点id,则说明从A到B存在单向链路,B节点标示到A节点存在单向链路。
二、路由建立
当网络中没有检测到单向链路时,核心节点发送MA控制报文,接收节点更新连接链表,然后根据收到的MA报文生成自身的MA报文继续转发。
当网络中存在单向链路A→B(如图3所示)时,节点B收到节点A的MA报文后,节点B更新连接链表,将节点A的id与节点B的邻居链表中选项进行匹配得知节点A、B之间是单向链路,那么节点B启动定时器等待更多MA报文。
如果定时器超时之前,节点B收到同一核心节点发送的、具有相同序列号的、只包含双向链路的MA报文,则更新连接链表,停止定时器。节点B利用双向链路的MA报文生成新MA报文继续转发。
否则,定时器等待超时,仍没有收到同一核心节点发送、相同序列号的双向MA报文。此时说明节点B与核心节点之间只有单向链路,故节点B启动定时器生成并向节点A单跳广播控制报文uMA(报文可以包括发送节点id,核心节点id、单向链路的前向节点id和MA报文序列号)。中间节点收到uMA后,向节点A单跳广播转发uMA。节点A收到uMA报文后,节点A设置连接链表nexthop表项,表示转发来自节点B的数据报文,且将uMA中的MA报文序列号从ACK链表中移除,然后向节点B发送uMA。此时,节点B得知单向链路前向节点A已经收到报文确认信息,故单向链路A→B路由建立。节点B接着生成新的MA报文(填充报文邻居链表而且单向链路标志为true),继续转发MA报文。如果在定时器超时前节点B没有收到uMA报文,则认为节点B没有到节点A的回路,不再转发MA报文。
结合图3,本申请实施例对路由建立过程进行说明如下。
(1)核心节点11周期性发送MA报文;
(2)节点A收到核心节点的MA报文,设置连接链表,填充未过期邻居链表,更新组播结构的邻父节点及组播组状态表,生成自身的MA报文继续转发;
(3)节点B收到节点A的MA报文,查找邻居链表中没有自身节点,启动定时器等待;
(4)在规定时间内,节点B没有收到其他不存在单向链路的MA报文,停止等待,也即,通过单向链路检测过程获知A与B之间的链表存在单向链路后,生成uMA报文向节点A广播;
(5)节点A收到uMA报文,设置转发链表,修改路由表,表示单向路由(表示转发到节点B的数据报文),并向节点B转发uMA报文;
(6)节点B收到来自自身的uMA报文,说明单向链路建立成功,设置连接链表,填充未过期邻居链表,生成自身的MA报文继续转发;否则,也即,节点B在规定时间内未收到来自节点A的uMA报文,则认为节点B与节点A之间没有回路,说明网络分割(也即,网络分割为以A为发送起点的子网络和以B为发送起点的子网络),后续停止转发MA报文;也即,当网络中节点B不能经中间节点路由到节点A时,节点B后续就不必再转发MA报文给节点A。
至此,包含环状单向链路(极端情况)的组播组路由构建成功。
具体实施中,更新连接链表可以按优先次序对链表的表项进行排序,排序规则可以为:
序列号相同而且是双向链路的情况下,跳数少的表项排前面;
序列号相同的情况下,双向链路排单向链路表项前面;
序列号相同的情况下,按到达时间先后排序单向链路表项。
最优的连接链表选项就是连接链表中最靠前的连接链表选项。也就是说,一般情况下,节点收到包含单向链路的MA报文后,启动定时器等待更多MA报文,如果接收到双向MA报文则尽量选择双向链路路由,如果没有任何双向链路MA报文则选择最先收到的单向链路路由。
由于存在环状单向链路的网络,核心节点MA传输路径上的单向链路后向节点B,每次收到来自核心节点的MA报文,都要使用uMA向单向链路前向节点A发送确认信息。因此,节点B需要加入/退出组播组,均需要向节点A发送加入组播组加入/退出控制报文uMA。节点A收到控制报文后,加入和退出组播组的其他操作均与PUMA算法相同。
为了降低算法复杂度,单向链路后向节点B可以不直接参与核心节点选举过程,即在核心节点选举时,尽量避免单向链路节点。
三、数据报文传输机制
当节点到核心节点为双向链路时,组播网外的数据传输采用单跳广播方式,组播网内的数据传输采用广播方式。
如果网络中各节点与核心节点之间仅在A、B之间存在单向链路(A->B),那么节点B采取单跳泛洪方式向节点A转发数据,节点A收到数据报文后,继续向核心节点转发数据报文。节点B收到节点A转发的数据报文来确认数据报文是否成功转发。如果节点B数据报文确认超时,节点B则可以启动类似FLOOD协议机制进行数据报文广播。
在数据转发过程中,如果节点获得双向链路路由信息,则即可停止单向链路数据分发,切换成双向链路转发数据报文。
结合图3,本申请实施例对数据传输过程进行说明如下。
(1)节点1向组播组发送数据报文;
(2)节点7收到节点1的数据报文,继续单跳转发;
(3)节点9收到节点7的数据报文,继续单跳转发;
(4)节点B收到节点9的数据报文,广播数据报文;
(5)节点5、8、4、3、A收到节点B的广播数据报文,继续单跳转发;
(6)核心节点11收到广播数据报文,沿着组播结构向组播组传输数据报文;
(7)组成员节点6收到来自核心节点11的数据报文。
至此,包含环状单向链路(极端情况)的数据报文组播传输成功。
图4示出了本申请实施例中组播路由过程的整体示意图,如图所示,可以包括如下步骤:
步骤401、接收邻居节点的MA报文;
步骤402、更新自身的连接链表;
步骤403、判断MA报文的原节点是否为单向链路的前向节点,如果是则执行步骤404;如果不是,则执行步骤405;
步骤404、将邻居链表单向标示为true,执行步骤406;
步骤405、判断单向路由标示是否为true,如果是,执行步骤406,如果不是,执行步骤407;
步骤406、判断定时器是否启动,如果定时器已启动则等待定时器超时,如果定时器尚未启动,则先启动定时器然后再等待定时器超时,在定时器超时后,执行步骤408;
步骤407、如果定时器已启动则停止定时器,执行步骤409;
步骤408、发送uMA报文,并判断是否收到前向节点反馈的uMA报文,如果收到,则执行步骤409,如果没有收到则执行步骤410;
步骤409、选择最优路径发送MA报文,结束;
步骤410、不发送MA报文,结束。
由此,采用本申请实施例所提供的方案,具有如下优点;
(1)由于本申请实施例所提供的方法是在路由层工作,不需要修改MAC协议,故能与802.11MAC协议的硬件产品兼容;
(2)支持单向链路数据传输,特别解决了传统路由协议不能支持的单向链路而造成的网络分割问题;
(3)路由实现简单,算法复杂度为O(n)。
(4)路由协议实现灵活,一旦出现双向链路路由,在链路建立、维护以及数据转发过程中,将自动替换单向链路路由,适用于拓扑变化较快的网络。
基于同一发明构思,本申请实施例中还提供了一种移动自组织网络,所述网络中可以包括若干节点,下面进行说明。
图5示出了本申请实施例中基于移动自组织网络的系统内每个节点的结构示意图,如图所示,每个节点可以包括:
发送模块501,用于向邻居节点发送自身的MA报文,所述MA报文中包括节点自身的邻居链表;所述邻居链表预先存储有发送过报文给自身的邻居节点的标识id;
链路确定模块502,用于在收到邻居节点发送的MA报文后,根据所述邻居节点发送的MA报文的邻居链表中是否存在自身节点标识id,确定自身节点与邻居节点之间的链路状态;其中,所述链路状态包括单向链路和双向链路;
路由确定模块503,用于根据各节点与其邻居节点之间的链路状态,确定节点自身与网络中其他节点之间的路由关系。
实施中,所述路由确定模块具体可以用于根据各节点与其邻居节点之间的链路状态,按照优先选择双向链路路由的原则确定节点自身与网络中其他节点之间的路由关系。
实施中,当所述网络存在单向链路时,所述单向链路的后向节点可以包括:
定时器启动模块,用于启动定时器;
判断模块,用于判断在定时器超时之前,所述单向链路的后向节点是否收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文;
处理模块,用于在定时器超时之前,所述单向链路的后向节点收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文时,根据所述双向链路路由更新自身的连接链表,生成MA报文继续转发。
实施中,所述处理模块可以进一步用于在定时器超时之前,所述单向链路的后向节点未收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文时,向所述单向链路的前向节点单跳广播控制报文uMA报文,所述uMA报文包括发送节点id、核心节点id、单向链路的前向节点id和MA报文序列号。
实施中,所述处理模块可以进一步用于向所述单向链路的前向节点单跳广播uMA报文之后,如果收到所述单向链路的前向节点的确认信息,填充自身邻居链表并标识所述单向链路的前向节点到自身节点为单向链路,生成MA报文并转发;根据是否收到所述单向链路的前向节点发送的uMA报文确定网络中是否存在所述单向链路的后向节点到所述单向链路的前向节点的回路。
实施中,当所述网络存在一条单向链路和至少一条双向链路时,所述单向链路的后向节点可以包括:
广播模块,用于通过单跳广播方式向所述单向链路的前向节点转发数据报文;并在确认所述数据报文转发失败时,将所述数据报文进行广播。
为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
Claims (10)
1.一种移动自组织网络的组播路由方法,其特征在于,包括如下步骤:
网络中的节点向各自的邻居节点发送自身的多播控制MA报文,所述MA报文中包含节点自身的邻居链表;所述邻居链表预先存储有发送过报文给自身的邻居节点的标识id;
各节点在收到邻居节点发送的MA报文后,根据所述邻居节点发送的MA报文的邻居链表中是否存在自身节点标识id,确定自身节点与邻居节点之间的链路状态;其中,所述链路状态包括单向链路和双向链路;
根据每个节点与其邻居节点之间的链路状态,确定网络中各节点之间的路由关系;
当所述邻居节点到自身节点为单向链路时,所述邻居节点为所述单向链路的前向节点,所述自身节点为所述单向链路的后向节点,进一步包括:
所述单向链路的后向节点启动定时器;
如果在定时器超时之前,所述单向链路的后向节点收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文,则所述单向链路的后向节点根据所述双向链路路由更新自身的连接链表,生成MA报文继续转发,其中,路由均为双向链路理解为核心节点到所述单向链路的后向节点经过的所有节点间的链路均为双向链路。
2.如权利要求1所述的方法,其特征在于,当所述网络中既存在单向链路又存在双向链路时,在确定网络中各节点之间的路由关系时优先选择双向链路路由。
3.如权利要求1所述的方法,其特征在于,如果在定时器超时之前,所述单向链路的后向节点未收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文,则向所述单向链路的前向节点单跳广播控制报文uMA报文,所述uMA报文包括发送节点id、核心节点id、单向链路的前向节点id和MA报文序列号,其中,路由均为双向链路理解为核心节点到所述单向链路的后向节点经过的所有节点间的链路均为双向链路。
4.如权利要求3所述的方法,其特征在于,在所述单向链路的后向节点向所述单向链路的前向节点单跳广播uMA报文之后,进一步包括:所述单向链路的后向节点收到所述单向链路的前向节点的确认信息后,填充自身邻居链表并标识所述单向链路的前向节点到自身节点为单向链路,生成MA报文并转发;根据是否收到所述单向链路的前向节点发送的uMA报文确定网络中是否存在所述单向链路的后向节点到所述单向链路的前向节点的回路。
5.如权利要求1所述的方法,其特征在于,如果网络中仅包括单向链路,进一步包括:
所述单向链路的后向节点通过单跳广播方式向所述单向链路的前向节点转发数据报文;
在确认所述数据报文转发失败时,所述单向链路的后向节点将所述数据报文进行全网广播。
6.一种基于移动自组织网络的系统,所述网络中包括若干节点,其特征在于,每个节点包括:
发送模块,用于向邻居节点发送自身的多播控制MA报文,所述MA报文中包括节点自身的邻居链表;所述邻居链表预先存储有发送过报文给自身的邻居节点的标识id;
链路确定模块,用于在收到邻居节点发送的MA报文后,根据所述邻居节点发送的MA报文的邻居链表中是否存在自身节点标识id,确定自身节点与邻居节点之间的链路状态;其中,所述链路状态包括单向链路和双向链路;
路由确定模块,用于根据各节点与其邻居节点之间的链路状态,确定节点自身与网络中其他节点之间的路由关系;
当所述网络存在单向链路时,所述单向链路的后向节点包括:
定时器启动模块,用于启动定时器;
判断模块,用于判断在定时器超时之前,所述单向链路的后向节点是否收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文;
处理模块,用于在定时器超时之前,所述单向链路的后向节点收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文时,根据所述双向链路路由更新自身的连接链表,生成MA报文继续转发,其中,路由均为双向链路理解为核心节点到所述单向链路的后向节点经过的所有节点间的链路均为双向链路。
7.如权利要求6所述的系统,其特征在于,所述路由确定模块具体用于根据各节点与其邻居节点之间的链路状态,按照优先选择双向链路路由的原则确定节点自身与网络中其他节点之间的路由关系。
8.如权利要求6所述的系统,其特征在于,所述处理模块进一步用于在定时器超时之前,所述单向链路的后向节点未收到由同一核心节点发送的、具有相同MA报文序列号且路由均为双向链路的MA报文时,向所述单向链路的前向节点单跳广播控制报文uMA报文,所述uMA报文包括发送节点id、核心节点id、单向链路的前向节点id和MA报文序列号,其中,路由均为双向链路理解为核心节点到所述单向链路的后向节点经过的所有节点间的链路均为双向链路。
9.如权利要求8所述的系统,其特征在于,所述处理模块进一步用于向所述单向链路的前向节点单跳广播uMA报文之后,如果收到所述单向链路的前向节点的确认信息,填充自身邻居链表并标识所述单向链路的前向节点到自身节点为单向链路,生成MA报文并转发;根据是否收到所述单向链路的前向节点发送的uMA报文确定网络中是否存在所述单向链路的后向节点到所述单向链路的前向节点的回路。
10.如权利要求6所述的系统,其特征在于,当所述网络仅存在单向链路时,所述单向链路的后向节点包括:
广播模块,用于通过单跳广播方式向所述单向链路的前向节点转发数据报文;并在确认所述数据报文转发失败后,将所述数据报文进行全网广播。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510975947.9A CN105553854B (zh) | 2015-12-21 | 2015-12-21 | 一种基于移动自组织网络的系统及其组播路由方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510975947.9A CN105553854B (zh) | 2015-12-21 | 2015-12-21 | 一种基于移动自组织网络的系统及其组播路由方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105553854A CN105553854A (zh) | 2016-05-04 |
CN105553854B true CN105553854B (zh) | 2019-04-30 |
Family
ID=55832792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510975947.9A Active CN105553854B (zh) | 2015-12-21 | 2015-12-21 | 一种基于移动自组织网络的系统及其组播路由方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105553854B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110662258B (zh) * | 2019-10-09 | 2023-08-18 | 湖南基石通信技术有限公司 | 一种报文的转发方法、装置及介质 |
CN112738733B (zh) * | 2020-12-17 | 2021-12-31 | 湖南智领通信科技有限公司 | 一种基于物理层协议的无线网格网络组网方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056341A (zh) * | 2007-06-07 | 2007-10-17 | 杭州华三通信技术有限公司 | 单向链路的自动关闭方法和自动恢复方法及其装置 |
CN102333010A (zh) * | 2011-10-10 | 2012-01-25 | 中兴通讯股份有限公司 | 单向链路检测保护的方法及系统 |
CN102333011A (zh) * | 2011-10-17 | 2012-01-25 | 中兴通讯股份有限公司 | 单向链路检测方法及装置 |
CN102938920A (zh) * | 2012-11-21 | 2013-02-20 | 山东大学 | 一种基于认知的Ad Hoc网络移动组播路由方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9160553B2 (en) * | 2013-11-27 | 2015-10-13 | Architecture Technology Corporation | Adaptive multicast network communications |
-
2015
- 2015-12-21 CN CN201510975947.9A patent/CN105553854B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056341A (zh) * | 2007-06-07 | 2007-10-17 | 杭州华三通信技术有限公司 | 单向链路的自动关闭方法和自动恢复方法及其装置 |
CN102333010A (zh) * | 2011-10-10 | 2012-01-25 | 中兴通讯股份有限公司 | 单向链路检测保护的方法及系统 |
CN102333011A (zh) * | 2011-10-17 | 2012-01-25 | 中兴通讯股份有限公司 | 单向链路检测方法及装置 |
CN102938920A (zh) * | 2012-11-21 | 2013-02-20 | 山东大学 | 一种基于认知的Ad Hoc网络移动组播路由方法 |
Non-Patent Citations (2)
Title |
---|
"A Link-Layer Tunneling Mechanism for Unidirectional Links";duros.et;《Network Working Group Request for Comments:3077 Category:standards Track》;20010331;正文1-25页 |
"移动自组网的单向链路优化路由算法AODVUD";邱静怡,许骏,许德兴,何庆;《小型微型计算机系统》;20100215;206-210 |
Also Published As
Publication number | Publication date |
---|---|
CN105553854A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100591029C (zh) | 一种基于分区树的多跳无线自组织网络构建方法 | |
EP2652905B1 (en) | Increased communication opportunities with low-contact nodes in a computer network | |
CN101883048B (zh) | 多维网络的路由方法 | |
US20170164264A1 (en) | Communication control method and mobile terminal | |
US20130121335A1 (en) | Dynamic multicast mode selection in a communication network | |
CN105308871A (zh) | 利用不同的跳频调度快速重路由 | |
US20160150501A1 (en) | Network discovery in low-power and lossy networks | |
Faheem et al. | Dynamic sink location update scope control mechanism for mobile sink wireless sensor networks | |
CN110324877A (zh) | 基于伺服骨干网与Vikor多标准决策的中继机器人路由方法 | |
CN105873169A (zh) | 一种无线自组网通信方法 | |
CN113572691B (zh) | 一种基于时间脉冲源的混合路由协议的实现方法 | |
CN101820661A (zh) | 移动无线多跳网络中结合机会转发的随机行走路由方法 | |
CN101867973B (zh) | 多维网络及其数据传输方法 | |
CN102143561A (zh) | 无线自组织网络中基于位置的数据包转发方法 | |
Bhangwar et al. | On routing protocols for high performance | |
CN105553854B (zh) | 一种基于移动自组织网络的系统及其组播路由方法 | |
CN103391595A (zh) | 基于跨层链路状态反馈的矿井应急救援无线网状网路由方法 | |
JP5868551B2 (ja) | 無線通信システム及び無線通信方法 | |
Del-Valle-Soto et al. | An efficient multi-parent hierarchical routing protocol for WSNs | |
CN102083164A (zh) | 基于能量感知的无线传感器网络机会路由方法 | |
CN103874159A (zh) | 无线传感器网络 | |
CN102428690A (zh) | 在分段网络中分配网络地址以用于通信的方法 | |
CN105072586A (zh) | 嵌入式无线自组织网络中对广播消息的转发的管理方法 | |
CN103929789A (zh) | 基于主动路由算法的manet网络主控节点的自动选择方法 | |
CN102088751B (zh) | 基于梯度的无线传感器网络拓扑维护方法和分组转发方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |