用于调度全局信标在体域网中的传输的方法
本申请要求2008年8月11日提交的美国临时申请No.61/087,746的权益。
本发明总体涉及体域网(BAN)中所使用的媒体访问控制(MAC)协议。
体域网(BAN)主要被设计用于永久监视和记录生命体征。如图1所示的示范性BAN包括多个节点120,这些节点典型地是可以被人体穿戴或被植入到人体中的传感器。节点120监视生命体的参数和移动,并通过一无线媒介彼此通信。节点120可以将数据从身体传输到一个或多个节点130,从这些节点130所述数据可以通过局域网(LAN)、广域网(WAN)、蜂窝网络等等实时地被转发到医院、诊所或其他地方。
设计BAN的要求包括节点120和130的能效、可扩展性、集成、干扰抑制、共存性、高质量的服务(QoS)和安全。可以通过最优地控制接收器节点(即,接收数据的节点)在侦听状态与睡眠状态之间的占空比来实现高效的能耗。在睡眠状态中,关闭所述节点的收发器,由此节约能量。可以通过MAC协议来执行占空比调节,其目的是最小化空闲侦听、串音、冲突和控制开销。
在相关领域中,公开了用于短程无线网络的若干个MAC协议。例如,IEEE 802标准委员会已经开发了用于无线局域网和无线个人区域网络的标准族,比如设计用于无线局域网(WLAN)的IEEE 802.11标准和设计用于无线个人区域网络(WPAN)的IEEE 802.15.4标准。
BAN被预期用于生命垂危的医学应用。因此,除了能效之外,可靠性、容错性和QoS是基本要求。同一个BAN或多个BAN内的节点可以由于扭转、转身、步行和奔跑而在范围之内和之外移动。因此,为了达到所述基本要求,BAN对于频繁的拓扑结构和密度变化而言应当是灵活的。所提出的用于WLAN和WPAN的MAC协议不能有效地解决这些问题,从而使得它们不适合用于BAN。
特别地,与上面提及的无线网络形成对比,BAN是高度局部化的网络。典型地,BAN节点的传输范围是3米。考虑到身体上任意两个节点直接的距离小于3米这样的事实,身体上大多数节点将处于彼此直接通信的范围内。然而,在某些情况下,由于身体遮蔽,因而这些节点可能会相对于彼此被隐藏。例如,由于巨大的路径损耗,不能从身体后部的一节点到达身体前部的另一节点。因此,需要多跳通信以便在身体上的任意两个节点之间提供连通性。
由于身体上的各节点的邻近性,时分多址方案是避免消息冲突并提高可靠性的优选的方式。在该方案中,信道访问时间被分成固定的和重复的持续时间轮。因此,时间轮是重复的和固定的持续时间,在此期间节点可以访问介质。网络中的所有节点在全局信标消息的帮助下使它们的时钟每轮同步一次。周期性时钟同步是克服时钟偏移所必需的。轮时间被进一步分成固定持续时隙,其用作介质预留的基本单元。节点预留时隙,在这些时隙期间它们具有访问介质的专有权。为了实现无冲突时隙预留,时隙请求和分配对网络中所有节点而言必须是已知的。
在本发明的优选实施例中,全局信标也被用于交换预留请求,即用于预留节点可以访问介质的时隙。在当前轮的全局信标期间,所有节点交换它们对下一个轮的预留请求。基于在当前轮期间所接收的请求,导出用于下一个轮的无冲突时隙分配。为了确保全局地传播所述预留请求,全局信标的传输的适当顺序是至关重要的。例如,如图2所示,三个节点200-X、200-Y和200-Z被设置在线性拓扑结构中。节点200-X和200-Z相对于彼此被隐藏,但是都在200-Y的传输范围内。
在该拓扑结构中,假设节点200-X传输第一个全局信标,随后是节点200-Y传输的一全局信标,再随后是节点200-Z的全局信标。每个全局信标携带该节点已经在当前轮期间直接或间接接收的预留请求。节点侦听它们的邻居的全局信标以获悉它们的预留请求。在这种情况下,由节点200-X发送的全局信标先于节点200-Y的信标,因此使得节点200-Y能够了解节点200-X用于下一个轮的预留请求。因此,节点200-Y的全局信标也携带节点200-X的预留请求。相似地,由节点200-Z发送的全局信标携带节点200-X和200-Y的预留请求。在该全局信标序列结尾处,节点200-Y和200-Z知道所有这3个节点的预留请求。然而,节点200-X没有接收来自节点200-Z的预留请求。作为另一个示例,假设节点200-Y传输第一个全局信标,随后是节点200-Z,再随后是节点200-X。在这种情况下,节点200-X和200-Z没有接收彼此的预留请求。
对于图2中所示的拓扑结构,需要适当排序的全局信标。例如,节点200-X传输第一个全局信标,随后是节点200-Z的全局信标。随后,节点200-Y通过侦听节点200-X和200-Z的全局信标了解这两个节点的用于下一个轮的预留请求。在这种情况下,除了节点200-X和节点200-Z的预留请求之外,节点200-Y还将它自己的预留请求嵌入在它的全局信标中并且传输所述最后一个全局信标以使得每个节点能够获悉来自所有节点的预留请求。
上文的示例清楚地表明:为了全局地传播预留请求,全局信标的排序不能任意地进行。因此,所期望的是,提供一种用于调度全局信标的传输以高效地传播预留请求的方法。
本发明的某些实施例包括一种用于调度全局信标在体域网(BAN)中的传输的方法。该BAN包括主节点和从属节点,其中主节点以树形拓扑结构设置。该方法包括:在上行周期期间将上行的全局信标(AGB)从树的叶节点传播到根节点,其中AGB至少包括在时间轮期间时隙的预留;由根节点处理AGB以确定时隙占用信息;在下行周期期间将下行的全局信标(DGB)从根节点传播到叶节点(S440),其中DGB至少包括在时间轮期间时隙的预留;以及由除根节点之外的主节点处理DGB以至少更新DGB中所包含的时隙占用信息。
在本说明书的结尾处的权利要求中,特别地指出并清楚地要求保护被视为本发明的主题。本发明的前述和其他特征和优点根据下面结合附图进行的详细描述将是清楚的。
图1是无线体域网的示意图。
图2示出描述用于调度全局信标的任意技术的体域网的线性拓扑结构。
图3A示出在上行周期期间树形拓扑结构中信息传播的方向。
图3B示出在下行周期期间树形拓扑结构中信息传播的方向。
图3C、3D和3E示出在上行和下行周期期间的时间轮、信标组、加入窗和时隙占用。
图3F示出当一个节点离开树时的更新的树形拓扑结构。
图4是用于描述用于调度全局信标的传输的方法的非限制性且示范性图。
图5是用于描述根据本发明的实施例进行的初始化步骤的执行的流程图。
图6是用于描述如根据本发明的实施例实现的在上行周期期间主节点的操作的流程图。
图7是用于描述如根据本发明的实施例实现的上行的全局信标的处理的示范性流程图。
图8是用于描述如根据本发明的实施例实现的在下行周期期间下行的全局信标的传播的流程图。
图9是用于描述如根据本发明的实施例实现的下行的全局信标的处理的流程图。
图10是用于在根节点死亡时执行的过程的实例。
重要的是注意,本发明所公开的实施例仅仅是本文的创新教导的许多有利的用途的一些实例。一般地,本申请的说明书中所做出的陈述并不必然限制任何各项要求保护的发明。而且,一些陈述可以适用于某些发明特征而不适于其他发明特征。一般地,除非另有说明,单数元素不失一般性可以是复数,反之亦然。在附图中,若干视图的相似附图标记表示相似的部分。
本发明的一个实施例提供一种用于全局信标调度的方法,这对于至少在体域网(BAN)中实现同步、介质预留、QoS和容错是必不可少的。该方法实现了动态的且可扩展的的占空比调节,其可以适于达到BAN的等待时间要求和传输条件,由此在没有损害QoS的情况下节约了能量。根据本发明的原理,所述全局信标调度方法在体域网中构造并维持主节点的(逻辑的)树形拓扑结构。在树形拓扑结构中,节点具有父子关系,其中根节点没有父亲,而所有其他节点都恰好有一个父亲。一个节点可以有多个孩子。没有任何孩子的节点是叶节点。
根据本发明的实施例,时间轮310中的预定义的时隙(如图3C所示)被预留用于全局信标周期(GBP)320。主节点侦听全局信标周期并在它们的分配的时隙中发送全局信标以使它们的时钟同步并交换预留请求。全局信标周期被进一步分成两个时间周期:上行周期(AP)322和下行周期(DP)324。在本发明的优选实施例中,时间轮的持续时间明显大于全局信标周期的持续时间,由此最小化了控制开销。
在上行周期期间,信息被传递给祖先(父亲),并且在下行周期期间,信息被传递给后代(孩子)。这进一步在图3A和3B中被示出,图3A和3B分别示出了在上行周期期间和下行周期期间树形拓扑结构中信息传播的方向。节点“A”是根,而节点“B”、“E”和“F”是叶节点。在全局信标周期期间发送其全局信标的所有设备被共同地称为信标组。在该实例中,信标组由设备A、B、C、D、E和F组成。
特别地,在上行周期期间,除了根之外的所有节点在它们各自的时隙中以上行的顺序传输它们的全局信标,即孩子们在它们的父亲之前传输它们的全局信标。孤儿节点是没有发现其父亲的节点。在该周期期间,父亲们侦听它们孩子的全局信标以及孤儿节点的全局信标。基于树形拓扑结构的全局信标传输的上行顺序的实例(图3A中所示的)是F->E->D->C->B->A和B->E->D->F->C->A。
在下行周期期间,全局信标传输的顺序被逆转,即父亲们在它们的孩子之前传输它们的全局信标。在该周期期间,孩子侦听它们的父亲的全局信标。在下行周期期间,叶节点和孤儿不需要传输它们的全局信标。基于树形拓扑结构的全局信标传输的下行顺序的实例(图3B中所示的)是A->B->C->D->E->F和A->C->F->D->E->B。
应当注意,下行顺序是上行顺序的逆,即,如果上行顺序是B->E->D->F->C->A,则下行顺序是A->C->F->D->E->B。由于根在上行周期期间不需要传输它的全局信标并且叶节点在下行周期期间不需要传输它们的全局信标,所以全局信标传输的上行和下行顺序可以包括空时隙。例如,在图3D中,上行顺序是F->E->D->C->B->-_,并且相应的下行顺序是A->_->C->D->_->_,其中“_”指示空时隙。通过省略全局信标传输,这些节点节约了能量。
在上行周期期间,使用上行全局信标(AGB)将预留请求和其他相关信息朝根传播。在上行周期结尾处,根知道所有主节点的完整的全局拓扑结构和预留请求。在下行周期期间,根使用下游全局信标(DGB)将信息分发到所有节点。在下行周期的结尾处,所有主节点接收来自根的请求信息。
应当注意,不需要所有节点都在根的直接通信范围内。信息在上行周期期间从孩子传播到父亲,而在下行周期期间从父亲传播到孩子。在上述实例中,在上行周期期间,节点“D”接收来自节点“E”的上行的全局信标并且将所述信息嵌入到它自己的、要被根“A”接收的上行信息。相似地,在下行周期期间,节点“D”接收来自根“A”的下行的全局信标并且将所述信息嵌入到它自己的要被节点“E”接收的下行信标。应当注意,根“A”和节点“E”在彼此的直接通信范围之外。然而,根“A”通过节点“D”接收来自节点“E”的预留请求,并且节点“E”通过节点“D”接收根响应。所述协议确保了信标组中的所有节点接收所述信息。
首先被加电的节点变成根并在每个轮的根时隙中发送下行的全局信标。随后启动的节点通过在图3D中所描绘的加入窗330内的“加入时隙”中发送它们的AGB来加入现有的信标组。每个新加入的节点被分配给一父亲,并且由此构造所述树。加入窗是预定数量的时隙(加入时隙),其被分配以方便新节点加入现有信标组。信标组中所有的节点侦听加入窗中的加入时隙。当新设备加入信标组并且占用时隙时加入窗左移,并且当设备离开信标组时加入窗右移。当新设备加入信标组时,在上行周期中时隙占用缩小,而在下行周期中时隙占用增长。如果根发生故障或离开信标组,则占用紧邻根时隙的时隙的节点变为根。如图3F所示,节点B在节点A离开信标组之后变为根。在上行周期中,由于设备离开信标组而出现的任何未被占用的时隙由占用前一个时隙的设备来填充。因此,在稳定状态中,如图3E所示,在上行周期中加入时隙与根时隙之间的所有全局信标时隙被占用。当节点离开信标组时,如图3F所示,树被修剪。因此,树是以分布式的方式动态地构造的。
图4示出用于描述用于操作根据本发明的实施例公开的全局信标调度协议(GBSP)的方法的非限制性且示范性图400。在S410中,每个主节点在该节点启动时被初始化。随后,在不同的时间周期期间执行重复的过程。特别地,在S420中,将上行的全局信标(AGB)从叶节点传播到根,并且随后在S430中,由根处理上行的全局信标。在S440中,将下行的全局信标从根传播到所有其他节点。在S450中,由每个不是根的节点处理下行的全局信标。下文中详细描述了所述方法步骤的每一个。
图5示出更详细地描述初始化步骤S410的执行的示范性且非限制性流程图。当节点被加电时,执行初始化步骤S410。在S511中,在单个时间轮期间主节点扫描信标。时间轮是重复的且固定的持续时间,在此期间节点可以访问介质。在步骤S513和S510中,主节点可以在找到用于操作的适当信道之前顺序地扫描多个信道。在S512中,检查在时间轮期间全局信标是否已经被接收。如果没有信标被接收并且信道被确定为良好,则在S514中,主节点声明它自己为根,设置它自己的轮开始时间,并且将状态变量初始化为它们的预定义的值。此后,主节点开始起根的作用,并且在S515中执行进入(proceed to)S440。
如果主节点接收到全局信标,则在步骤S516和S517中,该节点使其RST同步,并且确定信标组成员和当前根。在S518中,所述节点相应地初始化状态变量并侦听直到到达加入时隙。在S519中,加入时隙被定位在全局信标周期的开始处,以允许每轮高达预定数量的节点加入。试图加入现有信标组的节点在S520中随机地挑选所述加入时隙之一并且在该时隙中调度上行的全局信标传输。此后,在S521中,执行继续到S420。
现有信标组的所有主节点侦听加入时隙以发现加入节点。试图加入信标组的节点必须竞争访问所示加入时隙。如果试图加入的节点感测到介质空闲了一段随机时间,则该节点在上行周期期间在随机挑选的加入时隙中传输上行的全局信标。加入节点被认为是孤儿,直到它成功加入为止,此时该节点被根分配为具有父亲。如果节点竞争失败,则它针对另一个加入时隙再次竞争。一旦所述节点在加入时隙中发送其上行的全局信标,则该节点睡眠直到下行周期到来为止,在此期间该节点侦听下行的全局信标。如果节点在下行周期期间发现它自己在根下行全局信标中列出,则该节点试图加入现有信标组是成功的。否则,通过执行步骤S520,节点在连续轮的加入窗期间重复其加入信标组的尝试,直到该节点成功加入或超过了所允许的未成功加入尝试的最大数量。
图6示出用于描述如根据本发明的实施例实现的在上行周期期间主节点的操作的示范性流程图S420。在该上行周期期间,在步S618中所有节点侦听加入时隙和它们的孩子的时隙。特别地,只有在步骤S613、S614和S615中确定了当前时隙是主节点的孩子所拥有的、当前时隙是加入时隙、或topologyDiscovery变量是真,主节点才执行步骤S618。在稳定状态中,topologyDiscovery变量被设置为假并且只要发现了拓扑结构的任何变化它就被设置为真。在S619中,检查是否所述时隙早于节点自己的时隙并晚于加入时隙而发生。节点不需要在上行周期中侦听这些早于加入时隙并晚于它自己的时隙的时隙,如果在S620中确定了在当前时隙期间接收到至少一个上行的全局信标,则在S621中存储所接收的上行的全局信标。上行的全局信标的发射器将其父节点的ID嵌入或将它自己识别为孤儿。这有助于上行的全局信标的接收以丢弃从既不是其孩子又不是孤儿的节点接收的任何上行的全局信标。
如果当前时隙是节点时隙并且该节点不是根(S612和S617),则该节点发送包含从所有其孩子和孤儿节点接收到的信息的上行的全局信标。如果所述节点是根,则执行终止。通过执行步骤S622和S625,主节点在上行周期期间访问所有时隙。
图7示出用于描述如根据本发明的实施例实现的上行的全局信标的处理的示范性流程图S430。该过程由根节点执行,其分析在上行周期期间接收到的上行的全局信标。在S710中,检查是否接收到任何上行的全局信标,并且如果是这样,则执行继续到S711;否则,执行步骤变为S722。在S711中,根节点分析接收到的AGB以确定时隙占用信息并评估当前的父子关系。特别地,根计数连续轮的数量,在所述连续轮期间来自属于信标组的节点的AGB被遗漏。在S712中,对于每个接收到的AGB,递减计数(countdown)变量被重新设置为预定值,例如3。相似地,对于每个被占用的时隙,计数连续轮(在此期间时隙保持未被占用)的数量的递减计数变量也被重新设置为预定值。
如果根下游全局信标对于预定数量的连续轮被遗漏,则占用与根时隙近邻的时隙的节点声明它自己为新节点。然而,可能的是,原始根仍然是活着的并且其信标由于临时干扰而被遗漏。这可能导致一种情形:其中多个节点将它们自己通告为根。在S713中检查这种情况,并且如果多个节点确实被通告为根,则在S705中确定这些根中的哪一个具有最高的等级。具有最高等级的根保持其根地位,而其他节点不被识别为根。节点的等级可以基于节点的MAC ID,这是唯一的、明确的且是利用每个信标通告的。可替代地,节点的等级可以是剩余能量或所占用的全局信标或许多参数组合的函数。
此后,在S714中,确定在信标组中是否存在任何孤儿节点,并且如果存在,则在S715中,根为每个孤儿节点分配一个父亲。在S716中,确定是否新节点加入现有信标组,并且如果是,则在S717中,更新加入窗。在S718中,听到在上行的全局信标中新加入的节点的上行的全局信标的现有节点之一被安排为该新加入的节点的父亲,并且相应地更新树形拓扑结构。
在S719中,检查是否任何节点在下一个轮中大方地离开信标组。主节点可以大方地或静静地离开信标组。在大方离开的情况下,节点通过将所述信息嵌入在其上行的全局信标声明其意图离开信标组,这就告知了根关于节点离开的期望。当节点大方地离开时,在S720中,根将所述节点从树中移除并更新该树,并且离开的节点被从其父亲的孩子列表中清除。此外,在S720中,离开的节点孩子被标记为孤儿并且其时隙被标记为空。如果所述节点不是叶节点,则在S721中,topologyDiscovery变量被设置为真值。
当节点的父亲离开时,这些节点变成孤儿。为了为孤儿节点找到新父亲,剩余节点必须侦听孤儿节点时隙。将topologyDiscovery变量设置为真值使得这些节点侦听所有早于它们自己的时隙并晚于加入时隙的时隙。应当注意,如果根正在离开信标组,则占用下一个时隙的节点变为根。新根从下一个轮开始承担它的责任。
节点可以通过突然停止其全局信标的传输而静静地离开信标组。因此,通过比较当前轮的信标时隙占用信息与信标组的成员资格,根可以发现哪个节点没有传输其上行的全局信标。全局信标可以由于节点的干扰或冲突或静静离开(例如由于电池耗尽)而被遗漏。因此,在S722中,确定信标组中的任何现有节点的上行的全局信标是否被遗漏,并且如果是,则在S723中将topologyDiscovery变量设置为真值并且将任何遗漏的节点和其孩子标记为孤儿。此外,在S724中,遗漏的节点被从信标组中清除,树被修剪,并且该节点的父亲被告知从孩子列表中移除该遗漏的节点。在优选实施例中,只有节点的上行的全局信标针对预定数量的连续轮被遗漏,才执行步骤S724。如果来自完整的信标组的上行的全局信标被接收,则它指示稳定的拓扑结构,并且因此在S725中将topologyDiscovery变量设置为假。静静离开的节点的信标时隙被保留预定数量的轮,直到他被根从信标组中移除。这允许主节点正常运行,即使它在其全局信标周期期间体验到冲突或干扰。
在S726和S727中,检查在上行的周期中第一个占用的时隙与最后一个占用的时隙之间的任何时隙是否保持预定数量的连续轮未被占用,并且如果是,则在S728中,若干节点被调度以将它们的时隙朝根移动以填充空时隙。如果一个节点被调度以将其时隙朝根移动,则其父亲和孩子经由即将来临的移动的下行的全局信标而被告知。当上行周期中第一个占用的时隙变为空时,加入窗被更新以反映该变化。因此,在稳定状态中,在加入时隙与根时隙之间不存在空时隙。在S729中,根构造一外发的下行的全局信标,其包含更新的树信息、时隙占用信息、加入时隙位置、topologyDiscovery变量和移动时隙信息。
如果除根之外的节点遗漏了根下行的全局信标,则它将变量searchingForRoot和topologyDiscovery设置为真。这可能例如是由于拓扑结构的变化以便阻止根下行的全局信标向节点传播而发生的。这使得在S702中所述节点能够分析AGB并且能够在S703中确定是否存在察觉到当前根的任何其他节点。如果是,则在S704中,所述节点将slotReordering变量设置为真值。节点未接收根下行的全局信标但是在信标组中存在接受根下行的信标的其他节点的事实表示:所述节点不再在根的子节点之中。为了纠正该情形,必要的是遗漏了根信标的节点移动其时隙以变为根的子节点。设定的slotReordering变量迫使所述节点在随机挑选的加入时隙中传输其AGB,由此变为根的子节点。
图8示出详细描述如根据本发明的实施例实现的在下行周期期间传播下行的全局信标的示范性流程图S440。下行的周期开始于根在S812发送其下行的全局信标。此外,在S814中,父节点传输要被它们的孩子接收的根下行的全局信标的逐字拷贝。随后,在S815中,根和其他父亲睡眠直到下行周期结束为止。在S816中,(除了根之外的)节点执行检查以确定当前时隙是否是它们的父亲所拥有的,并且如果是,则在S818中侦听它们的父亲的时隙。如果topologyDiscovery变量在步骤817中是真,则在S818中,若干节点也侦听早于它们自己的时隙的若干时隙。在S820中,接收下行的全局信标的(除了根之外的)节点使得它们的时钟与它们的父亲同步并且存储该信息。步骤S821和S819确保了节点在下行周期期间访问所有时隙。
图9示出描述如根据本发明的实施例实现的对下行的全局信标处理的步骤的示范性流程图S450。每个节点(其不是根)处理封装在由根发送的下行的全局信标中的信息。在S911中,检查根下行的全局信标是否被所述节点从其父亲处接收。在从多于一个的根接收到多个下行的全局信标的情况下,在S916中等级最高的根被选择为有效根。随后,在S917中,执行检查以确定根是否包含该节点的信息。在S918中,下行的全局信标中所包含的信息(例如,拓扑结构、时隙占用、父子关系、孤儿节点等等)由所述节点处理。特别地,所述节点更新其父节点ID及其时隙、其孩子们的节点ID和它们的时隙、孤儿节点的状态、topologyDiscovery变量、所述节点的时隙、以及用于维持树形拓扑结构的其他变量。由于所述节点已经在当前轮中接收到来自根的下行的全局信标,所以它将变量searchingForRoot和slotReordering设置为假。而且,countdownToBecomeRoot变量被重新设置为slotDist的值,稍后详细解释该值。
在S911中,检查节点是否没有接收到来自根的下行的全局信标,并且如果是,则在步骤S912中执行另一项检查以确定slotReordering变量值是真还是假。slotReordering变量的真值表示:尽管所述节点没有接收到来自根的下行的全局信标,但是存在接收到根下行的全局信标的其他节点。为了纠正该情形,在S919中,所述节点随机挑选所述加入时隙之一并在上行周期期间在所选的时隙中调度上行的全局信标的传输。另一方面,如果slotReordering变量值是假,则在S913中所述节点将它自己标记为孤儿,countdownToBecomeRoot变量减一,并且searchingForRoot和topologyDiscovery变量被设置为真。countdownToBecomeRoot是全局变量,其被初始化为slotDist的值,该值计算如下:
SlotDist=|根的时隙id-我的时隙id|+1
基于在S914中执行的检查,searchingForRoot和topologyDiscovery变量的值保持为真,只要countdownToBecomeRoot值不等于0。当countdownToBecomeRoot变量达到0时,所述节点变为根并且在S920中searchingForRoot被设置为假。下文中提供了用于操作其中根静静地消失的情况的实例。
图10提供当根死亡时更新树的过程的实例。该实例涉及图3A和3B中所示的树拓扑结构。图3D和3E中示出了信标组、在上行周期和下行周期期间的加入窗和时隙占用。
图10中所提供的表中的第二栏指示基于图3C中所示的时隙占用的每个节点中countdownToBecomeRoot变量的值。在稳定状态(即轮n)中,countdownToBecomeRoot变量被设置为slotDist,对于节点B该值为2,而对于节点C该值为3,等等。根A在轮n中死亡。在轮n+2的结束处,countdownToBecomeRoot变量的值在节点B处达到0,并且节点B变为根。在轮n+3期间,节点B在其下行的全局信标中将它自己通告为根。节点B的下行的全局信标由节点C和D接收,节点C和D将它们的countdownToBecomeRoot变量重新设置为slotDist,如第五栏中所示。在轮n+4结束处,节点E和F也分别从节点D的和C的下行的全局信标中获悉新根B的存在。因此,在轮n+4的结束处,节点E和F也将它们的countdownToBecomeRoot重新设置为slotDist,如最后一栏所示。节点B逐渐获得节点A时隙,随后节点C获得节点B时隙,等等。因此,所有空时隙被逐一填充,这导致图3C中所示的更新的全局信标时隙占用和图3D中所示的更新的拓扑结构。
另一方面,如果节点C在3个连续的轮没有听到根信标(即,节点A和B都已经死亡),则它在轮n+3的结束处承担根的角色。相似地,如果节点D在4个连续的轮没有听到来自根的信标,则在轮n+4结束处节点D声明它自己为根。
由于各个节点能够将它们自己自动声明为根,所以这可能导致其中多个根同时工作的情形。这种请求是通过仅仅允许最高等级的根继续起根的作用并且所有其他根变成普通节点来解决的,如步骤S908、S909和S910所示范的。这表明所提出的协议可以从节点故障(包括根故障)高效地恢复。
应当理解,由于体域网(BAN)的特性的原因,本文所描述的教导对体域网(BAN)非常有吸引力。特别地,体域网(BAN)是高度局部化的网络,其中BAN节点的传输范围是3米。因此,大多数节点在彼此的直接通信范围内。在任何无线网络中,两跳邻域的知识是实施预留并避免隐藏的节点冲突所必不可少的。在体域网(BAN)的情况下,获得两跳邻域知识等同于获得全局知识。因此,收集全局信息不会招致额外的开销。此外,全局知识可以被巧妙地用于优化所述调度算法。可以利用全局知识改进信道的利用和吞吐量。而且,全局拓扑结构的知识消除了对单独的路由层的需求。这导致了在协议开销方面的可观的节省以及最终获得能量节省的存储器占用。
基于树形拓扑结构来排序全局信标传输也适合用于使整个网络同步。在下行周期期间,根使得在深度1处的节点同步,深度1处的节点又使得在深度2处的节点同步,等等。
也应当理解,上述方法也可以用于交换其他类型的信息,所述信息包括但不限于:交通指示图、链路状态、接收信号强度指示器、冬眠模式指示器、信道开关描述符、轮开始时间偏移、多播绑定、安全信息,等等。
前述详细描述已经阐明了本发明可以采用的许多形式中的一些。其意图是:前述详细描述应当被理解为本发明可以采用的的所选形式的说明,而不应当被理解为对本发明的限定的限制。只有权利要求(包括所有等同物)旨在定义本发明的范围。
最优选地,本发明的原理被实现为硬件、固件和软件的任意组合。而且,软件优选地被实现为有形地嵌入在程序存储单元或计算机可读介质上的应用程序。该应用程序可以被上载到包括任何适当的架构的机器并且被该机器执行。优选地,所述机器在具有硬件的计算机平台上实施,所述硬件比如一个或多个中央处理单元(“CPU”)、存储器和输入/输出接口。所述计算机平台也可以包括操作系统和微指令代码。本文所描述的各种过程和功能可以是微代码的一部分或应用程序的一部分或其任何组合,这些过程和功能可以由CPU执行,无论这种计算机或处理器是否被明确地示出。此外,各种其他外围单元可以连接到诸如附加的数据存储单元和打印单元之类的计算机平台。