使用重复节点的单播消息路由的制作方法

文档序号:14652752发布日期:2018-06-08 22:11阅读:192来源:国知局
使用重复节点的单播消息路由的制作方法

本发明涉及在网格网络中的消息路由,具体地,涉及在使用重复节点的密集的网格网络中的单播消息路由。



背景技术:

随着无线控制应用网络的高级使用,诸如例如但不限于按照ZigBee规范的网格网络,特别是专业的无线照明控制应用,控制命令从源节点到目的地节点的可靠传输构成相应应用的一个重要方面。例如,在大型舞厅、豪华旅馆或电视节目中的重要事件中,打开或关上主灯或一系列灯的命令对于实现预期的表演效果可能是至关重要的。相应的控制命令经由许多中间节点(也称为转发节点)从中央控制节点传递到照明设备内的无线接收节点。特别是在大型网络中,源节点和接收节点之间的路由可能非常长。通过长路径的无线传输的成功率取决于许多因素,诸如RF数据速率、RF干扰、信道条件、单个节点的处理能力。特别是在具有多节点的大而密集的无线网络中,单个节点的可靠性非常差。

从由Taehong Kim等人发表在2014年3月的IEEE Transactions on Parallel and Distributed Systems的第25卷第3期中的“Neighbor Table Based Shortcut Tree Routing in ZigBee Wireless Networks”获知:对于ZigBee技术有不同的树路由方案,其中介绍了快捷树路由。快捷树路由的主要思想是通过使用在ZigBee中的分层寻址方案来计算从任意源到目的地的剩余跳数,并且然后使每个源或中间节点将一个分组以在其邻居表中的最小剩余跳数转发到邻居节点。

从由Gang Ding等人发表在2005年的Sensor and ad hoc Communications and Networks中的“Reliable Broadcast in ZigBee Networks”进一步获知:在ZigBee网络中的广播不是非常有效的;根据该文,提出一种执行转发节点选择算法的修剪广播算法,该算法涉及到在不交换信息的情况下选择一跳邻居来覆盖已知的二跳邻居。

然而,单个节点的影响对于所谓的单播传输是特别重要的,在该单播传输中发送节点寻址单个目的地节点。为了确保数据消息从一个节点到另一个节点的适当的传输,许多网络规范(特别是ZigBee规范)使用重新提交、确认反馈或其组合。在ZigBee规范中,单播传输的可靠性通过两层进行操控。接收数据消息的每个节点都提供相应的要被信令发送到发送节点的确认作为反馈。当沿着传递路径(例如,沿多个中间节点中的一个节点)的传输存在任何传输中断时,没有被发送节点接收到确认的数据分组将被再次发送,直到该数据分组到达下一个节点为止。这种基于丢失确认的重新传输提高了传输的可靠性。另一方面,用于传递数据消息的时间也会增加,因为重试机制基于超时:如果在经历预定的时间间隔后,发送节点未能接收到来自下一个节点的确认,则发送节点将所述消息重发到下一个节点。沿传输路径的所有中间节点都使用该机制,从而导致依赖于每个单个节点的传递条件的单播传递时间是高度可变的。可靠性机制的第二层是来自单播传输的目的地节点的响应反馈。当接收到来自源节点的传输时,目的地节点使用从目的地节点到源节点的反向传递路径将分组或响应发送回源节点。如果在给定的时间段后源节点没有从目标节点接收到响应,则源节点将尝试重发所述消息。此层需要甚至更长的等待时间,因为每个节点可能需要像本文上面所解释的那样发出重试。如果传递路由很长,累积时间间隔上的不确定性可能使得传递时间是不可预测的。因此,目前的ZigBee单播算法性能在低外部RF干扰的简单网络中是良好的,但在较大的网络或在具有例如来自使用不同RF技术的无线移动设备的外部RF干扰的网络中性能显著下降。简单地引用冗余并发传递路径将提高适当数据传输的可靠性。然而,这样的方法将对单播性能产生负面影响。它将降低传输速度,并分配更多的信道容量。



技术实现要素:

因此,本发明的目的是提供一种用来将单播消息从源节点传递到目的地节点的更时间恒定或时间可预测的方法,而同时保持甚至提高从源节点到目的地节点的数据传输的可靠性。

本发明的一个方面,提供了一种用于在无线网络中将消息传送到接收节点的装置,

所述装置包括:

接收器,用于检测从传输节点发送到接收节点的被寻址到目的地节点的消息,

存储器存储装置,用于存储规定来自所述装置的邻居中的多个节点中的一个或多个邻居节点的邻居表,

控制器,被适配成确定接收节点是否在装置的邻居表中,

缓存器,用于存储所述消息;

所述接收器还用于检测由来自一个或多个邻居节点的帮助节点对于被寻址到目的地节点的消息的重新传输,

传输器,被配置成在确定接收节点被包括在邻居表中后,在由接收节点检测到所述消息后经历预定的时间间隔后,作为帮助者节点将所述消息重新传输到接收节点,以及当检测到消息的重新传输次数超过预定数量的帮助节点时阻止重新传输,其中预定数量的帮助节点小于邻居节点的量。

因此,只有处在源节点和接收节点的范围中的节点可以重新传输,以避免不在接收节点的范围中的节点造成拥堵。

在本发明的这个方面的第一实施例中,接收器被配置为检测来自接收节点的确认以确认消息,以及传输器被配置为在所述时间间隔内检测到确认后阻止重新传输。

在可以与第一实施例相结合的本发明的这个方面的第二实施例中,所述时间间隔是从一组时间间隔随机选择的。

在可与第一和第二实施例相结合的本发明的这方面的第三实施例中,所述消息包括所述预定数量的帮助节点的指示。

本发明的另一方面,提供了一种用于通过包括多个节点的网格网络进行路由消息的方法,其中,消息从发送节点被发送到接收节点。所述方法包括以下步骤:定义路由表,其指定从源节点通过网格网络到目的地节点的路径,以及定义邻居表,其规定来自发送节点的邻居中的多个节点中的一个或多个邻居节点。如果目的地节点不在发送节点的邻居表中,则由发送节点将消息传输到接收节点,其被适配于按照路由表将消息转发到目的地节点。所述一个或多个邻居节点将所述消息的信息保存在内部存储装置中,以及来自所述一个或多个邻居节点中的预定数量的帮助节点在由接收节点检测到所述消息后经历相应的预定的时间间隔后,重复所述消息,其中帮助节点的数量小于或等于邻居节点的数量。

本发明提供了一种通过使用并行多条路径执行单播的方法,以提高分组传递的可靠性,而同时以稍长的传递时间的代价,在沿路由路径的链路故障的情况下大大减小对于路由发现的必要性,导致低得多的故障率,但具有传递延时的低得多的不确定性。故障率与传递时间之间的平衡可以根据具体应用场景进行适配。

在本发明的一个实施例中,由所述一个或多个帮助节点重复所述消息包括由相应的帮助节点MAC层地址替换发送节点MAC层地址。

在本发明的一个实施例中,每个相应的邻居节点侦听被存储在内部存储装置中的消息,在每次接收到消息时增加消息计数,并且仅在如果消息计数小于预定数量的帮助节点时,在相应的时间间隔之后重复所述消息。

在本发明的一个实施例中,预定数量的帮助节点被包括在消息的分组格式中。所述消息可以在不提供额外的配置消息的情况下轻松地调整预定数量的帮助节点。因此,在故障率与传递时间之间的平衡可以在操作期间动态地适配。

在本发明的一个实施例中,所述预定数量是对于每个相应帮助节点预先配置的。这在网络具有变化的密度或变化的占用率的情形下是有利的,例如,某些节点可以通过设置节点计数为小数值或甚至零而从帮助责任中解脱。而且,消息格式将不一定必须适配于进一步配置预定数量作为附加的参数。

在本发明的一个实施例中,所述一个或多个邻居节点侦听来自接收节点的确认,并且仅在一个或多个邻居未在预定的时间间隔内检测到来自接收节点的确认时,才重复所述消息。在这种操作模式下,帮助节点如果其没有接收到来自接收节点的确认则将仅仅重复所述消息。这样,在消息从源节点到目的地节点的适当传输的情况下,可以减少节点之间的业务量。

在本发明的一个实施例中,发送节点仅仅在如果其没有接收到响应于由源节点传输的消息或响应于由任何邻居节点传输的重复消息而被提供的来自接收节点的确认,才重发所述消息。

在本发明的一个实施例中,在由接收节点接收所述消息之后,所述接收节点充当发送节点,以及沿数据的另一个节点充当接收节点。

在本发明的一个实施例中,发送节点是源节点。

将理解,权利要求1的装置、权利要求5的方法和权利要求14的计算机程序具有类似的和/或相同的优选实施例,具体地,如在附属权利要求中定义的。

将理解,本发明的优选实施例也可以是从属权利要求或以上的实施例与相应独立权利要求的任何组合。

参照下文描述的实施例,本发明的这些和其它方面将是显而易见的并且被阐明。

附图说明

在图中:

图1示出了在按照现有技术的ZigBee网格网络中的单播消息传递。

图2示出了仅仅具有基本元件的ZigBee分组格式。

图3示出了仅仅具有基本元件的ZigBee路由表条目格式。

图4示出了仅仅具有基本元件的ZigBee邻居表条目格式。

图5示出了具有确认的ZigBee MAC层数据传输。

图6示出了用于“众播(crowdcast)”的分组格式。

图7示出了“众播”传递路径。

具体实施方式

现在在ZigBee通信网络的上下文中示范性描述实施例。然而,本领域的技术人员将认识到,所提出的应用将与具有类似拓扑的任何其他网络一起工作。消息、分组和数据传递或路由都可互换地使用。它们全部都应被理解为沿预定路径的数据传输。

当前实施的ZigBee标准提供了一种单播算法,用于经由如图1所描绘的多个中间节点将消息从源节点传递到目的地节点。

在源节点1发起用于向目的地节点2发送消息的单播命令之前,网络内的每个节点通过被编程或在自学习算法内而准备它的邻居表,其中每个节点将以固定的间隔(例如15秒)发送指示链路状态的消息。如果邻居表还剩余有空条目,那么从邻居节点接收这样的消息的每个节点将发送节点添加到它的邻居表中。在非常密集的网络中,邻居表可能有一个上限。为了保持所述表的更新,节点在没有接收到其链路状态消息的情况下(例如接连3次)从邻居表中被删除。可以利用任何其他自学习算法来检测发送节点的传输范围内的其他节点,以生成邻居表。

源节点1执行用于目的地节点1的路由发现。对于目的地节点2创建相应的路由表。在源节点执行路由发现期间,目的地节点2将执行对应的路由发现,以便为源节点1创建相应的路由表,其可以是对称的或非对称的返回路径。在对称返回路径的情况下,用于路由发现所需的时间应该是对于两个设备相同的,在非对称返回路径的情况下,用于路由发现所需的时间对于相应的设备可能是不同的。在确定路由路径时,沿着路径的所有中间节点3a、3b、3c 将创建用于源节点和目的地节点(两个方向)的相应的路由表。如果由源节点1发起单播传输,则源节点将通过搜索用于目的地地址(例如目的地设备2的网络地址或其他唯一标识符)的邻居表和路由表,来查找路由路径。如果在邻居表中找到目的地地址,则不需要中间节点转发(一个或多个)消息分组。如果消息传递需要中间节点3a、3b、3c来将消息转发到目的地节点2,则所述(一个或多个)分组将沿着路由路径被发送(4)到第一中间节点3a,从这里,它将沿路由路径被转发(6)到下一中间节点3b等等。每个节点3a、3b、3c等将检验是否有来自下一节点3b、3c等的任何确认(5, 7),其指示分组传递的适当的接收。用于通过确认进行ZigBee的MAC层数据传输的机制在图5中示出。

如果没有接收到确认,则发送节点1、3a、3b、3c将重试发送分组。如果重试次数超过预定的次数,发送节点将假设传递路径损坏。它可能试图修复剩余的传递路径,例如通过发起路由发现,或者如果路径不可修复,则选择停止发送。在后一种情况下,整个单播将停止。

图2示出了通用的ZigBee分组格式。分组目的地地址(例如,目的地节点2的网络地址)被使用于单播算法,以便从路由表定位路由路径。图3示出了有在本上下文中相关的最小条目的路由表。“下一跳”的地址指示沿路由路径的下一个中间节点发送消息到相应的目的地地址。

图4示出了被包括在节点中的邻居表的本上下文中的相关的最小条目。当目的地节点的网络地址被包括在邻居表中时,将不使用路由表。单播分组将被直接传递到目的地节点。

如果分组沿着路由路径被成功地转发到最后的节点,即目的地节点2,则目的地节点将形成应答分组或响应8。这个响应将通过使用如上面描述的相同机制以反向路由路径(对称情况)或以不同的路由路径(非对称情况)被传递到源节点2。

如果源节点在预定超时以后还没有接收到响应分组(或者是因为任何中间节点停止转发,或者是目的地节点未能响应),则源节点将假定单播失败,或者可以重试整个过程或者放弃。

当前的ZigBee单播算法的故障率可以计算如下:

Fu = 2×(n + 1)x(FP + FA)/ r(公式1)

其中Fu是单播的总故障率,n是沿路由路径的中间节点的数量,FP是分组转发的平均故障率,而FA是确认的平均故障率,和r是分组发送的重试次数。

从公式1可以看出,单播故障率与中间节点数n成比例。沿着路由路径的节点越多,故障率越高。在具有许多节点的大或密集的网络中,长的传递路径是不可避免的。较高的重试次数r可以降低故障率。然而,一旦路由路径中间出现永久性故障(例如坏掉或丢失的中间节点),这将导致总传递时间的增大。

当前的ZigBee单播算法的总传递时间可以计算如下:

Tu = 2×(n + 1)x((TP + TA)x r + TR x d)(公式2)

其中Tu是单播的总传递时间,n是沿路由路径的中间节点的数量,TP 是分组转发的平均发送时间,TA是用于确认的平均时间,TR 是一旦检测到沿路由路径的中断用于路由发现的平均时间,r是分组发送中的重试次数,并且d是对于一个节点的路由发现的平均次数。

从公式2可以看出,单播传递时间与中间节点的数量n成比例,并且也与重试次数r成比例,在传递路径中的节点越多和/或重试次数越多,则传递时间越长。在有许多节点的大型或密集网络中,路由发现时间在网络带宽消耗或时间花费方面是极其昂贵的。应尽可能避免路由发现,因为它会造成传递延迟的高得多的不确定性。

在按照本发明的实施例中,如图6所描绘的,将两个参数添加到被使用于在网格网络中消息传递的分组格式。一个是“众节点计数”参数,其规定用于修改的单播消息路由的帮助节点数量,并且一个是“算法类型”,其定义应该操作这些帮助节点的模式。替换地,所述众节点计数可以在试运行期间或甚至在操作期间对于在网络中的每个节点进行预配置。以下描述将集中于如上所述的单播消息路由的增量。

图7示出了沿多个中间节点30a、30b、30c从源节点10到目的地节点20的单播路由路径。多个邻居节点40a、40b、40c、40d、40e、40f是对于源节点、目的地节点和对于在单播传递路径中的每个节点被确定的。从源节点10发起在按照图6的新的分组格式中的单播命令,以及分组沿路由路径被传递到第一中间节点30a。分组还被发送节点的邻居节点40a、40b和40c偷听到,并且被存储在内部存储装置。此外,每个邻居节点40a、40b和40c将内部消息计数设置为零。在经历预定的时间段后,邻居节点40a确定该消息计数是否小于在按照新格式的接收到的消息中定义的众节点计数。假设众节点计数为2,则为零的消息计数更小,使得邻居节点40a通过用它自己的网络地址替换源地址–源节点10的网络地址-而重复消息,并且将消息发送到第一中间节点30a。这个重复的消息也被邻居节点40b和40c偷听到,这使得它们的内部的单个消息计数增加1。在经历另一个预定的时间段后,邻居节点40b确定该消息计数是否小于在按照新格式的接收到的消息中定义的众节点计数。为2的众节点计数大于邻居节点40b的内部消息计数,使得邻居节点40b也将通过用其自己的网络地址替换源地址-源节点10的网络地址-而重复消息,并且发送消息到第一中间节点30a,有效地形成另一个路由路径,或并行传递。再次地,邻居节点侦听重复的消息,并将它们的内部众节点计数增加1。邻居节点40c现在确定众节点计数等于它的内部消息计数,并且因此避免重复消息。因此,有效地,邻居节点40a和40b在传递原始的单播消息到第一中间节点30a时成为源节点20的帮助节点。

在本实施例的示例中,为了决定参加到所述众播,邻居节点可以检验目的地节点是否被包括在其邻居表中。如果目的地节点未被包括在其邻居表中,则传输器可以阻止传输。替换地,邻居节点可以选择高值的预定的时间段,以允许更好定位的邻居节点首先进行重新传输。

按照上述的方法,帮助节点重复该消息,而不管来自第一中间节点的确认的接收。这对应于被称为“重复”的、并且由被添加到分组格式的第二参数定义的第一算法类型。此参数不是强制性的,但可能有助于平衡在可靠性和传递时间之间的折衷。通过设置被加到第二模式的分组格式的第二参数,例如“重发”,消息的重复可能只能在来自第一中间节点的邻居节点没有接收到确认的情形下被执行,以避免不必要的业务量。

通常,如果来自源节点20的分组被第一中间节点30a接收,则来自第一中间节点30a的确认分组60被发送到源节点20。这个确认分组也被发送节点(90)的邻居节点40a和40b偷听到。因此,邻居节点40a和40b可以确定原始的分组是否已成功地传递。

在分组沿路由路径被成功地转发到第一中间节点30a后,这个中间节点30a将重复以上程序,以将分组沿路由路径传递到下一个中间节点30b。

如图2所示的,来自通用的ZigBee分组格式的分组目的地地址被使用于分组传递算法,以从路由表定位路由路径,如图3所描绘的。在新的分组格式中,如图6所示的新的参数众节点计数被使用来控制有多少邻居节点将参与“众转发”,换句话说,有多少邻居节点将用作为帮助节点。这个参数可以根据网格网络的密度和大小来选择。可以设置另一可选参数来确定其中帮助节点应重复或转发分组的模式,例如,它们是否应根据“众节点计数”进行重复,或另外检验是否已收到确认。再次地,可靠性和冗余级别之间的折衷必须根据具体的应用而作出。

取决于哪个节点首先反应,帮助节点的选择可以是随机的。选择可根据以下步骤执行:

a.所有节点都将侦听网格网络内的传输;

b.只有当接收到的分组的源MAC层地址处在节点的邻居表中时,该节点才被认为是用于发送节点的邻居,并且然后才将分组保存在内部存储装置中;

c.对于每个邻居节点启动随机等待时间;

d.在等待时间段的相应超时之后,每个邻居节点重复所偷听到的分组,并且源MAC层地址由当前设备MAC层地址替换;

e.同时,所有的邻居节点都在侦听和计数同一个分组;

f.如果同一个分组被听见“众节点计数”的次数,则所有的邻居节点将停止重复这个分组。

对于一般的ZigBee单播发送节点20,如果它没有接收到来自接收节点的响应,则将重试发送分组。如果重试次数超过预定的次数,则发送节点将假设路由路径被损坏。它可能开始修复剩余的路由路径,例如启动路由发现,或者如果路径不可修复,则选择停止发送。在后一种情况下,整个单播将停止。如果分组被转发到路由路径中的最后的节点,即目的地节点20,则目的地节点将生成一个应答分组作为响应,并且这个响应将通过使用相同的机制使用用于传递的帮助节点以相反的路由方向使用相同的路径(对称)或者不同的路径(不对称)被传递到源节点。如果因为任何的中间节点停止转发或者目标节点无法响应而造成源节点在预定时间内没有接收到响应,则源节点将假设单播失败,并且重试整个过程或者放弃。

上述的修改的单播算法(众播)的故障率可以计算如下:

FC(m,a)= 2×(n + 1)x(FPA + FA)/ r/(m + 1)(公式3)

其中FC是众播的总故障率,m是“众节点计数”,或最大的参与帮助节点,a是“众算法类型”,n是参与转发的中间节点的数量,FPA 是如果a是类型“重发(仅如果没有接收到确认才重复)”则具有校正的分组转发的平均故障率,而FA是确认的平均故障率,以及r是在分组发送中重试的次数。

从公式3中可以看出,如果在重复所述消息时有任何邻居节点参与,则故障率降低。

修改的单播(众播)算法的总传递时间可以计算如下:

Tc(m,a)= 2×(n + 1)x((TPA + TA)x r + TR x d)公式4

其中Tc是众播的总传递时间,m是“众节点计数”,或最大参与的帮助节点,a是“众算法类型”,n为参与转发的中间节点的数量,TPA是如果a是类型“重发”则具有校正的分组转发的平均发送时间,TA是用于确认的平均时间,TR是一旦在路由路径的中部有中断用于路由发现的平均时间,r是在分组发送中的重试次数,并且d是对于一个节点的路由发现的平均数。

从公式4中可以看出,如果有任何邻居节点参与重复消息,则修改的单播传递时间增加。

在模式“重复”或“重发(仅如果没有收到确认则重复)”中是否使用众播算法可以根据具体的应用需要被决定,从而平衡一方面对于可靠度并且另一方面对于执行时间的需要。在“重复”模式中有越多的节点,分组传输将越可靠。另一方面,“重发”模式计及“RF多径干扰”问题,其中一个路径可能会受到干扰,以及无法适当地传输消息,但从帮助节点到接收节点的替换的路径可能不受干扰影响,从而适当地传递消息,从而提高在射频干扰下的可靠性。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1