背景技术
RR-ALOHA(Reliable Reserved ALOHA,可靠预留ALOHA)算法是一种基于TDMA(Time Division Multiple Access,时分复用接入)的接入和资源分配机制,资源分配基于帧结构以slot(时隙)为单位。每N个slot构成一帧(记为Frame),每个帧中的slot的编号为0~N-1,在帧之间循环往复。每个slot中只允许一个节点进行发送,即节点之间为TDMA模式。当节点占用一个时隙后,将周期性发送固定信息组织结构的FI(Frame Information,帧信息),FI中携带本节点直接感知到的时隙占用状态,即本节点一跳(One hop,OH)范围内的节点对前一帧中的时隙的使用情况,且每个节点会在FI中指示一帧中各个slot的占用状态。每个节点通过监听其周围节点发送的FI,获取与该节点相距两跳范围内的每个节点的时隙占用状态(即时隙分配情况),从而实现覆盖范围不相交的一跳簇间的时隙重用。
FI是一个由N个时隙状态信息组成的向量,又称FI信息,其中,N为一帧中包含的时隙数。FI的结构示意图如图3所示,具体包括:时隙占用状态子域、STI(Source Temporary Identifier,节点临时标识)子域和优先级子域。
在任意一个时隙中,时隙占用状态子域承载了该任意一个时隙的时隙占用状态信息,指示该任意一个时隙是否已被占用。
在任意一个时隙中,STI子域中承载了占用该任意一个时隙的节点的STI。
在任意一个时隙中,优先级子域中承载了占用该任意一个时隙的节点在该 任意一个时隙发送的数据对应的优先级状态;其中,时隙占用状态信息的大小为1bit(比特)、STI的大小为8bit、占用时隙的节点在该时隙发送的数据对应的优先级状态的大小为2bit。
在每一帧中,节点都必须通过本节点的发送时隙(即本节点的占用时隙)发送FI,并根据获取的邻节点的FI和本节点的信道使用情况(即本节点的时隙占用状态)即时更新本地的时隙占用状态向量(表),并将更新后的时隙占用状态在本节点发送的FI中体现出来。
每个节点在占用时隙发送的FI只根据本节点直接在对应的时隙监听到的FI来发送FI,而不是根据监听到的FI中包括的内容来发送FI。例如,节点A监听到节点B在时隙5发送FI,节点B发送的FI中指示,节点C在时隙3发送FI,则节点A发送的FI中包括节点B占用时隙5,而不包括节点C占用时隙3。
每个OH簇内的所有节点都在簇内享有全连通(即在每个OH簇内的任意一节点可知道该OH簇内的所有节点的时隙占用状态)。分属于不同簇的节点如果不属于所有簇共同子集将不能直接通信(即在每个OH簇内的节点,若该节点不属于与另一簇的共同子集,则无法知道另一簇的节点的时隙占用状态)。在RR-ALOHA算法中,新的节点加入网络时,必须获取一个时隙,即需要执行信道占用流程,占用一个时隙,当该新的节点成功占用一个时隙之后,还需要对该时隙执行信道维护过程。
下面结合图1和图2举例说明节点执行的信道占用流程。
假设节点第一次申请占用一个slot(时隙),其流程图参见图1所示:
步骤101:节点在开始接入过程后的一帧内,监听信道占用情况。
节点在开始接入过程后的一帧内,监听的该帧中的所有slot。
在节点监听该帧中的slot时,节点接收OH簇内其他节点发送的FI。若OH簇内任意一个其他节点发送的FI指示对应的slot X的时隙占用状态为忙,则节点将本地的时隙状态向量(表)中的slot X对应标记为RESERVED(已占 用),否则标记为AVAILABLE(可用的)。
节点将在该帧内接收到的所有FI信息分别进行解析处理,并根据上述方式判断各个slot的时隙占用状态。
步骤102:节点从监听的帧内的时隙中,选择一个空闲时隙(即availableslot)。
当某一个slot在节点本地的时隙状态向量(表)中记录的时隙占用状态为AVAILABLE,则认为该slot为空闲slot(即空闲时隙)。
由于在节点监听的一帧内可能有一个或多个空闲slot,也可能没有空闲slot,因此,若节点监听的一帧内存在多个空闲slot,则从中随机选择一个空闲slot,若节点监听的一帧内没有空闲slot,则返回步骤101,继续监听下一帧。
步骤103:节点判断是否到达步骤102中选定的空闲slot。
假设步骤102中选定的空闲slot为slot p,则在slot p到达前,持续监听各个slot,基本的RR-RLOHA算法中并未明确是否在slot p到达之前,持续做slot p是否仍然空闲的判断。
步骤104:节点在slot p发送FI。
按照如下规则填写FI中的各个field(域);
针对与FI中本节点的发送时隙对应的field中,填写的时隙占用状态为BUSY(可以在对应的时隙占用状态子域中填写1),且在STI子域中填写本节点的STI,在优先级子域中填写本节点在发送时隙发送的数据的优先级信息;
针对除本节点的发送时隙外的其他slot对应的field,如果在某一slot成功接收并解析了某一节点发送的FI,则将该slot的时隙占用状态标记为BUSY(可以在对应该slot的时隙占用状态子域中填写1),并在该slot的STI子域中填写对应节点的STI,在该slot的优先级子域中填写该节点发送数据的优先级信息;
如果在某一slot没有接收到FI,或者在某一slot接收到FI后无法解析(例如在某一slot接收到了由多个节点发送的FI),则将该slot标记为FREE(可以在对应该slot的时隙占用状态子域中填写0)。
节点在按照上述规则填写完毕FI中的各个field后,发送该FI。
步骤105:监听反馈,确认本节点本次申请占用时隙是否成功。
如果本节点在发送FI后,在接收到的所有FI中,本节点的发送时隙均被本节点占用(即在接收到的所有FI中,本节点的发送时隙的时隙占用状态均被标记为忙,且对应的STI与本节点相同),则认为本次FI发送成功,否则认为本次FI发送失败。在实际应用中,可以通过逻辑与操作实现这一过程。
节点从slot p+1开始监听一帧,如果在该帧内的所有反馈的FI中都指示slotp被该节点占用,则该节点在下一帧中继续在slot p发送FI信息;如果在从slotp+1开始的一帧内接收到的所有反馈的FI中,存在至少一个FI指示slot p的时隙占用状态为FREE,或/和,存在至少一个FI指示slot p的时隙占用状态为BUSY(忙)且slot p对应的STI与本节点不同,则认为本节点在slot p发送FI失败,即认为本节点申请占用slot p的时隙失败,返回步骤102。
节点进行信道维护(即对本节点占用的时隙进行维护)的过程如下:
在基本的RR-ALOHA中,节点在本节点占用的时隙周期性地发送FI,已通过节点间的FI交互对信道的时隙占用状况进行维护。节点如果不主动放弃本节点占用的时隙,则可以一直使用本节点占用的时隙进行数据传输。然而如果网络结构发生变化,节点则需要根据在接收时隙接收到的反馈FI持续检测本节点占用的时隙是否与其他节点占用的时隙发生了碰撞。若多个节点占用的时隙发生了碰撞,则所有占用该时隙的节点都需要释放该时隙,并重新发起接入过程,预约信道。
在RR-ALOHA机制下,节点占用的时隙发生碰撞存在以下两种情况:
1)节点自身占用的时隙发生碰撞
存在一个或多个帧信息指示本时隙被与本节点的STI不同的其他节点占用,或存在一个或多个帧信息指示本时隙未被占用(时隙占用状态为FREE),则确定该时隙发生碰撞。
2)非节点自身占用的时隙发生碰撞
对于任一非节点自身占用的时隙,出现了两个及以上的帧信息指示该时隙被两个及以上节点(即:STI不同)占用,则确定该时隙发生碰撞。
若节点检测出某一时隙发生碰撞,则将在本节点的发送时隙向占用该时隙的节点发送包含反馈信息的FI,指示该时隙发生碰撞,对占用该时隙的节点进行负反馈;若节点检测出某一时隙未发生碰撞,则将在本节点的发送时隙向占用该时隙的节点发送包含反馈信息的FI,指示该时隙未发生碰撞,对占用该时隙的节点进行正反馈。
下面结合图2举例说明节点执行信道占用和信道维护的过程。图2中,假设每一帧中包含6个slot,节点从slot 2开始接入过程,其后的一帧内持续监听,根据开始接入后的一帧内监听结果选择slot 4作为本节点的发送时隙,然后继续监听2个slot,在到达slot 4时开始发送本节点的FI,在发送本节点的FI后的N-1个field(域)中(即在slot 5、slot 0、slot 2和slot 3中)获取其它节点针对本节点维护的时隙的反馈信息,判断节点在slot 5、slot 0、slot 2和slot3中获取的其他节点针对本节点维护的时隙的反馈信息是否为正反馈:若是,则在之后的帧中持续获取其他节点针对本节点维护的时隙的反馈信息,并判断是否为正反馈,否则,返回选择空闲slot作为本节点的发送时隙这一操作。
基本RR-ALOHA算法中除了基本的时序关系外,还包含了3个关键技术点:1)发送时隙的选择;2)节点对发送时隙的处理,3)节点对接收时隙的处理。
节点对接收时隙处理的具体行为包括三个阶段:首先是监听阶段,其次是监听反馈阶段,最后是信道维护过程中的节点对接收时隙的处理。节点根据在每一个接收时隙上接收到的FI信息来判断本节点是否接入(或者维护)信道成功,即判断本节点占用的时隙是否为空闲,并且更新本节点内部的时隙状态向量(表)。
节点只有在监听反馈过程(即信道维护过程)中接收到的所有FI中针对本节点占用的时隙(假设为slot p)的反馈信息都是正反馈时,才判定本节点 接入(或者维护)信道成功。
若节点接收到的FI都指示slot p被本节点占用,即接收到的FI中对应slotp的时隙占用状态信息为BUSY(时隙占用状态子域中为1),并且STI子域中的STI与本节点的STI相同,则判定本节点接受到的是正反馈。
若节点接收到的FI中存在至少一个FI指示slot p空闲或/和指示slot p被其他节点占用,即节点接收到至少一个FI中的时隙占用状态信息为FREE(时隙占用状态子域中为0),或/和,节点接收到至少一个FI中的时隙占用状态为BUSY,且STI子域中的STI与本节点的STI不同,则判定本节点接收到的是负反馈。
由于在使用基本的RR-ALOHA算法进行节点间的通信时,节点之间周期性发送FI,以便各个节点了解网络拓扑结构,对别的节点占用资源的情况进行反馈以及对本节点占用资源的情况进行确认。由此可见,基本的RR-ALOUHA算法适用于静态网络或者网络拓扑结构变化很小的网络,但是在实际的车载通信系统中,由于车辆的高速移动性(超车、相向车辆靠近等行为时有发生),并且车辆中的节点行为也时有变化(例如,开机、关机、打开网络连接、关闭网络连接等行为),因此,车载通信系统的网络拓扑结构并不稳定,也不是静态的,而是一直发生变化的,例如,出现簇合并、簇中节点的加入或离开等情况。
在相对位置改变导致新节点之前监听到的节点离开本簇,或者,之前监听到的节点关机的情况,接入(或维护)信道的节点将接收不到来自该已离开(或已关机)的节点的任何反馈信息。在相对位置改变导致新节点加入的情况下,新节点的针对该接入(或维护)信道的节点占用的时隙发送的反馈信息可能为空。上述几种情况下,该接入(或维护)节点根据基本的RR-ALOHA的反馈规则判定接收到了负反馈,尽管这些负反馈都是由于非碰撞而导致的,但是,该接入(或维护)节点仍然会重新开始信道接入过程。
例如,假设节点A的占用时隙为slot 3,节点B的占用时隙为slot 2。在当 前帧的slot 1以及之前的任意时刻,节点A和节点B相互间都无法监听彼此。
在当前帧的slot 2,节点A监听到了节点B的FI(即接收到了节点B发送的FI),此时节点B发送的FI中对slot 2的指示为空(即节点B指示slot 2没有被任何节点占用)。尽管此时slot 2实际上并没有发生时隙的碰撞,slot 2只有节点A一个节点占用,但是,按照基本RR-ALOHA规则,节点A就判定此时接收到的FI中携带了针对slot 2的负反馈,并判定信道维护失败,需要重新开始信道接入。
又例如,如果节点A在离开原簇之前,获取到的时隙占用状态情况中表明slot1被节点D占用。在网络拓扑结构变化后,节点A离开节点D所在的簇,进入节点B所在的簇,此时,节点A发送的FI中仍然携带“slot 1被节点D占用”的信息,根据基本RR-ALOHA算法,节点A的一跳邻节点(例如,节点B)都将不选择节点D的占用时隙(slot1)。实际上,在节点A离开原簇,进入到节点B所在的簇后,slot 1并没有被节点A的一跳簇内的任何节点占用。显然,现有技术存在节点的时隙复用率较低,系统资源利用率过低的问题。
故而在这种网络拓扑结构动态变化的AD HOC(自组网)系统中,如果仍然按照基本RR-ALOHA算法对接收到的FI进行处理,节点将会在出现非碰撞导致的负反馈时,重新开始信道接入过程,进而引发AD HOC系统中的节点的业务中断率过高的问题。
综上所述,在网络拓扑结构动态变化的AD HOC中,节点不能够正确地获取到邻节点的时隙占用状态,因此,在接收到FI时,很容易重新开始信道接入,而节点频繁地重复信道接入过程,就会引发业务中断率过高的问题。
具体实施方式
本发明实施例设计了一种AD HOC系统中的FI接收处理方法,在该方法中,节点在当前帧周期内对本节点的发送时隙和时隙状态表(向量)进行维护时,需要结合接收到的FI中的信息和临时时隙状态表(向量)中存储的上一帧的信息,在确定接收到的FI对本节点的发送时隙的负反馈是由于非碰撞导致的时候,不再重新选择发送时隙,进而避免了重新开始信道接入过程造成的节点的业务中断率过高的问题。
本发明实施例中,将时隙没有发生碰撞时接收到的负反馈(即,非碰撞导致的负反馈),称为假负反馈。
下面结合附图说明本发明的优选实施例。
时隙状态向量(表)是节点内部对各个时隙占用状态的指示。时隙状态向量(表)的结构如图4所示,由N个时隙信息单元构成,每个时隙状态单元分别对应一个时隙,其中,N为一个帧周期中的时隙数目。每个时隙信息单元分别指示对应时隙的占用状态信息,每个时隙信息单元中包含时隙占用状态子单元、STI子单元和优先级子单元。在任意一个时隙对应的时隙信息单元中,时隙占用状态子单元用于指示该任意一个时隙的占用状态,STI子单元用于指示占用该任意一个时隙的节点的临时标识,优先级子单元用于指示占用该任意一个时隙的业务优先级。
临时时隙状态向量(表)的定义为:节点在每个帧周期内的本节点的发送时隙到达时,发送FI之前,备份当前的时隙状态向量(表)。临时时隙状态向量(表)的基本结构与时隙状态向量(表)一致。
本发明实施例设计的AD HOC系统中的FI接受处理方法流程图如图5所示。假设接收到FI的节点为第一节点,发送该FI的节点为第二节点。
步骤501:第一节点在每个帧周期中的发送时隙到达时,在发送FI之前,将对应该发送时隙维护的时隙状态向量(表)中记录的信息拷贝至对应该发送时隙维护的临时时隙状态向量(表)中。
第一节点维护的时隙状态向量(表)与临时时隙状态向量(表)是一一对应的。
当第一节点在每个帧周期中有多个发送时隙时:
若第一节点对应每个发送时隙维护一个时隙状态向量(表),则对应维护每个发送时隙维护一个临时时隙状态向量(表);
若第一节点对应多个发送时隙维护的时隙状态向量(表)是同一个,则对应维护一个临时时隙状态向量(表)。
步骤502:第一节点在发送FI之后到下一帧中该发送时隙到达前,根据接收到的FI以及维护的临时时隙状态向量(表)更新相应的时隙状态向量(表)。
第一节点在发送FI之后到下一帧中该发送时隙到达前,每当接收到FI的时候,都需要根据接收到的FI以及对应该发送时隙维护的临时时隙状态向量(表)更新相应的时隙状态向量(表)。
下面举例说明在第一节点在一个帧周期内有N个发送时隙时的情况,其中,N为正整数,并且一般小于帧周期内的时隙个数。
针对第一节点的第N个发送时隙:
第一节点在每个帧周期中第N个发送时隙到达时,在发送FI之前,将对应第N个发送时隙维护的时隙状态向量中记录的信息拷贝至对应第N个发送时隙维护的临时时隙状态向量中。在发送FI之后到下一帧中第N个发送时隙 到达之前,根据接收到的FI以及对应第N个发送时隙维护的临时时隙状态向量更新对应第N个发送时隙维护的时隙状态向量。
由于时隙状态向量(表)中每一个时隙信息单元对应一个时隙,因此,时隙信息向量(表)的更新是针对每一个时隙依次进行的,其处理过程如下:
当第一节点没有接收到FI时,等效于接收到正反馈,此时,维护本节点内部的时隙状态向量(表)的内容不变,当第一节点在时隙X收到一条FI时,第一节点需要综合接收到的FI中每一个时隙对应的时隙信息域和本节点内部的临时时隙状态向量(表)中对应时隙X的时隙信息单元,更新本节点内部的时隙状态向量(表)中对应上述每一个时隙的时隙信息单元。具体地,更新时隙信息单元的过程可分为如下三种方式。
第一种方式,第一节点将接收到该FI的时隙的占用状态更新为被第二节点占用。
第二种方式,第一节点根据接收到的FI以及本节点内部的临时时隙状态向量(表)判断本第一节点的发送时隙是否发生碰撞,若是,将该发送时隙的占用状态更新为空,否则,不改变该发送时隙的占用状态。
具体地,第一节点在根据接收到的FI确定针对该发送时隙的反馈信息是负反馈时,根据第一节点对应该发送时隙维护的临时时隙状态向量(表),判断第二节点是否是第一节点维护的节点,若是,判定该发送时隙发生碰撞,否则,判定该发送时隙没有发生碰撞。
在实际应用中,第一节点根据对应发送时隙维护的临时时隙状态向量判断第二节点是否是本第一节点维护的节点的过程为:
判断接收到该FI的时隙在上述临时时隙状态向量中对应的时隙信息单元中的STI子单元的值与第二节点的STI是否相同,若是,则确定第二节点是本第一节点维护的节点;否则,确定第二节点不是第一节点维护的节点。
在第一节点判定该发送时隙发生碰撞后,将重新开始信道接入过程,重置对应该发送时隙维护的时隙状态向量(表)和临时时隙状态向量(表)。
这样,节点在每次接收到存在针对本节点的发送时隙的负反馈的FI时,结合针对该发送时隙维护的临时时隙状态向量中存储的上一帧的信息,判断该负反馈是否是由于非碰撞(例如,簇内出现新加入的节点)导致的,能够在很大程度上避免了节点在接收到非碰撞导致的负反馈时,重新选择发送时隙,进而避免了节点过多地接入网络的情况发生,降低了业务的中断率。
第三种方式,第一节点根据本节点内部的临时时隙状态向量(表)判断第二节点是否是本第一节点维护的节点,若是,根据接收到的FI更新其它时隙的占用状态,否则,不改变其它时隙的占用状态,其中,其它时隙,是时隙状态向量(表)中,除了第一节点当前接收到FI的时隙和第一节点的发送时隙之外的其它时隙。
在第一节点针对任意一个时隙更新其对应的时隙状态单元时:
若第一节点确认该任意一个时隙已被占用,则将对应的时隙信息单元中的时隙占用状态子单元的内容设置为已占用(可以将该时隙占用子单元的值设置为1),并将对应的的STI子单元的内容设置为占用该时隙的节点的STI值;
若第一节点确认该任意一个时隙未被占用,则将对应的时隙信息单元中的各项信息均设置为空(可以将时隙信息单元中的各个子单元的值都设置为0)。
针对任意一条FI,将接收到该FI的节点称为接收节点(即上述第一节点),将发送该FI的节点称为发送节点(即上述第二节点),除接收节点和发送节点之外的节点称为其他节点。
下面结合基本RR-ALOHA算法说明接收节点在接收到FI时,更新本接收节点内部的时隙状态向量(表)中当前时隙对应的时隙信息单元的过程。
1)如果当前更新的时隙为接收节点占用的时隙(即接收节点的发送时隙)对应的时隙信息单元,接收节点在依据基本RR-ALOHA算法对本节点占用的时隙进行判断之后,根据临时时隙状态信息向量(表)中发送节点针对本接收节点的发送时隙的反馈增加一次判断,获取本接收节点占用的时隙的最终反馈。
在这种情况下,若接收节点根据基本RR-ALOHA算法判定发送节点对本接收节点占用的时隙的反馈为正反馈,则仍然维护本次接收到的是正反馈的结果;若接收节点根据基本RR-ALOHA算法判定发送节点对接收节点占用的时隙的反馈为负反馈,则需要根据临时时隙状态向量(表)进行二次判定(即根据临时时隙状态向量(表)确定该发送节点是否是在上一帧中的同一时隙发送了FI),也就是判断该发送节点是否是本接收节点上一帧维护的节点:若是,则判定该反馈为真正的负反馈,否则认为是假负反馈(即由于非碰撞导致的负反馈),忽略该负反馈。
2)如果当前更新的时隙既非接收节点的发送时隙,也不是发送节点发送FI的时隙(即当前更新的时隙不是当前发送时隙)对应的时隙信息单元。
接收节点在根据接收到的FI进行时隙信息单元更新之前,需要先检查临时时隙状态向量(表)中的信息:如果根据临时时隙状态向量(表)中的信息确定该FI的发送节点是本接收节点上一帧维护的节点,则按照现有RR-ALOHA接收处理更新规则来处理,否则,可以忽略此FI中此时隙的信息。
3)如果当前更新的时隙时发送节点发送该FI的时隙(即该发送节点的占用时隙,也就是接收节点接收到该FI的时隙)对应的时隙信息单元:
接收节点更新时隙状态表中接收节点接收到该FI的时隙对应的时隙状态单元的STI子单元,将该STI子单元的值更新为该发送节点的STI,即此时隙之后,该发送节点为本接收节点的维护节点。
本实施例中,接收节点更新时隙状态向量(表)时,被更新的时隙可以分成三类:接收节点的发送时隙、其他时隙(既非接收节点的发送时隙也非发送节点占用的时隙)、发送节点占用的时隙即接收到当前FI的时隙。
下面分别说明更新这三类时隙时的具体过程。
(1)在接收节点更新时隙状态向量(表)中本接收节点的发送时隙对应的时隙信息单元时:
在接收节点确定当前接收到的FI中对应于本接收节点占用的时隙的时隙 信息域中的时隙占用状态子域中的信息为空闲(即时隙占用状态子域中的值为0)时:
如果临时时隙状态向量(表)中当前更新的时隙对应的时隙信息单元中的STI子单元的值与发送节点的STI不同,接收节点就可以判定该发送节点不是本接收节点维护的节点,忽略该发送节点对本接收节点占用信道的反馈(即忽略该发送节点对本接收节点的发送时隙是否发生碰撞的反馈),接收节点继续维护本接收节点占用的时隙;
如果临时时隙状态向量(表)中当前更新的时隙对应的时隙信息单元中的STI子单元的值与发送节点的STI相同,就可以判定该发送节点就是本接收节点维护的节点,接收节点确认接收到了负反馈。接收节点在确认接收到了负反馈后,根据更新完成后的时隙状态向量(表)重新选择本接收节点的发送时隙,或者,清空时隙状态向量(表)中所有时隙对应的信息,重新发起接入过程,重新选择本接收节点的发送时隙(即重新选择本接收节点发送FI的时隙)。
在接收节点确定当前接收到的FI中对应本接收节点占用的时隙的时隙信息域中的时隙占用状态子域中的信息为忙(即时隙占用状态子域中的值1)时:
无论临时时隙状态向量(表)中当前更新的时隙对应的时隙信息单元中的STI子单元的值与发送节点的STI是否相同(即无论该发送节点是否是本接收节点维护的节点),只要发送节点反馈的占用当前更新的时隙的节点的STI等于本接收节点自身的STI,就认为是正反馈,其他情况都认为是负反馈。
(2)在接收节点更新时隙状态向量(表)中的其它时隙(既非接收节点的发送时隙,也非发送节点占用的时隙)对应的时隙信息单元时:
如果临时时隙状态向量(表)中当前更新的时隙对应的时隙信息单元中的STI子单元的值与发送节点的STI不同,接收节点则判定该发送节点并不是本接收节点维护的节点,接收节点可以忽略当前接收到的FI中当前更新的时隙对应的时隙信息域的指示,即保持时隙状态向量(表)中当前更新的时隙对应的时隙信息单元的内容不变;如果临时时隙状态向量(表)中当前更新的时隙 对应的时隙信息单元中的STI子单元的值与发送节点的STI相同,接收节点判定该发送节点就是本接收节点维护的节点,根据该FI中当前更新的时隙对应的时隙信息域中的指示按照基本RR-ALOHA算法对时隙状态向量(表)中当前更新的时隙对应的时隙信息单元进行更新。
这样,接收节点在获取到发送节点发送的FI后,还需要根据临时时隙状态向量(表)判断该发送节点是否是本接收节点维护的节点,若不是则忽略接收到的FI中指示的除本接收节点的发送时隙和该发送节点占用的时隙之外的其它时隙的信息,从而提高时隙复用率和系统资源利用率。
例如,如果节点A在离开原簇之前,节点A内部的时隙状态向量(表)记录了slot 1被节点D占用。
在网络拓扑结构变化后,节点A离开节点D所在的簇,进入节点B所在的簇,此时,节点A发送的FI中仍然携带“slot 1被节点D占用”的信息。节点A此时的一跳邻节点(例如,节点B)都将判定节点A不是本节点维护的节点,因此,都将忽略节点A中携带的slot 1被节点D占用”的信息。故而,此时节点B是可以选择slot 1作为自身的发送时隙的。这种情况下,由于节点B判定节点A不是本节点维护的节点,因此,节点B可以推断节点D很可能不是本节点的二跳节点,从而更准确地了解网络拓扑结构所发生的动态变化情况。
显然,本发明实施例中,节点结合了本地的临时时隙状态向量(表)和接收到的FI中的信息,能够更准确地获取到网络拓扑结构动态变化的具体过程,进而能够提升时隙复用率,提高系统资源的利用率。
(3)在接收节点更新时隙状态向量(表)中发送节点占用的时隙对应的时隙信息单元时:
无论临时时隙状态向量(表)中当前更新的时隙对应的时隙信息单元中的STI子单元的值与发送节点的STI是否相同,即无论该发送节点之前是否是本接收节点的维护节点,将时隙状态向量(表)中当前更新的时隙对应的时隙状 态单元的STI子单元的值更新为该发送节点的STI,这样在更新完毕该时隙后,该发送节点就是接收节点的维护节点。
下面结合附图说明本发明的优选实施例。
实施例一:在车辆位置变化等因素导致网络拓扑结构变化的情况下,节点将不能给予进入簇内的新节点正反馈。假设每N个slot构成一个帧,本实施例中,N取值为3。如图6所示,节点A可以看做孤立节点。节点B与节点C互为一跳邻节点,二者之间可以正常通信。节点A和节点B之间,节点A和节点C之间不能通信。节点A、节点B、节点C三个节点都在同一车道上同向行驶,这三个节点占用的时隙如表1所示。节点A占用slot 0,节点B占用slot2,节点C占用slot 1。
表1
节点 |
A |
B |
C |
时隙资源 |
slot 0 |
slot 2 |
slot 1 |
从帧X的slot 0开始对三个节点进行分析。在帧X的slot 0时,节点B和节点A彼此不能直接通信。节点A在此时隙(即slot 0)发送FI,该FI中对slot 0的指示为“被节点A自己占用”,指示slot 1和slot 2均为空闲。此时,节点B与节点C都无法监听到该FI。节点A发送完该FI之后,将该FI中的信息存储为临时时隙状态向量(表),同时将节点A内部的时隙状态向量(表)中除了slot 0外其他所有时隙进行reset,全部设置为空闲。
到达帧X的slot 1时,由于节点A加速,节点B与节点A互为一跳邻节点,节点B与节点C互为一跳邻节点,但是节点C与节点A相互之间仍然不能直接通信。由于slot 1是节点C占用的时隙,因此,节点C在slot 1发送FI,FI中对slot 1的指示为“被节点C自己占用”,对slot 2的指示为“被一跳邻节点占用”,指示slot 0为空闲。假定节点B正确解码了节点C发送的FI。由于节点A并非节点C的一跳邻节点,因此,节点A不能解码该FI。节点C 发送完该FI之后,将该FI中的信息存储为临时时隙状态向量(表),同时将节点C内部的时隙状态向量(表)中除了slot 1外其他所有时隙进行reset,全部设置为空闲。
到达帧X的slot 2时,节点B发送FI,该FI中对slot 2的指示为“被节点B自己占用”,对slot 1的指示为“被一跳邻节点占用”,指示slot 0为空闲。因为节点C和节点A此时都是节点B的一跳邻节点,因此,可以假设节点C和节点A都正确解码了节点B发送的FI消息。此时节点A判定节点B对自己占用的时隙(即slot 0)的指示为空,需要结合上一帧历史信息进行判断〔即结合节点A本地存储的临时时隙状态向量(表)进行判断〕。上一帧历史信息中slot 2为空闲,即对于节点A而言,节点B并非自己维护的节点,因此,节点A可以忽略节点B针对slot 0指示的空反馈,继续维护此时隙资源,并且节点A需要更新时隙状态向量(表)中slot 2对应的时隙状态单元的STI子单元的值,将其更新为节点B的STI。这样,在此时隙之后节点B就是节点A维护的节点。节点B发送完FI之后,将该FI中的信息存储为临时时隙状态向量(表),同时将节点B内部的时隙状态向量(表)中除了slot 2外其他所有时隙进行reset,全部设置为空闲。
实施例二:在车辆位置变化等因素导致网络拓扑结构变化的情况下,新节点在进入簇内时,携带了原来所在簇的信息。假设每N个slot构成一个帧,本是实施例中N取值为3。如图7所示,节点A和节点D互为一跳邻节点,二者之间可以正常通信。节点B与节点C互为一跳邻节点,二者之间可以正常通信。而节点A和节点B之间不能通信,节点A和节点C之间不能通信,节点D和节点B之间不能通信,节点D和节点C之间不能通信。这四个节点在同一车道上同向行驶,各自占用的时隙如表2所示。节点A占用slot 0,节点B占用slot 2,节点C占用slot 1,而节点D也占用slot 1。
表2
节点 |
A |
B |
C |
D |
时隙资源 |
slot 0 |
slot 2 |
slot 1 |
slot 1 |
在帧X的slot 0时,节点A和节点B彼此之间不能直接通信。节点A在此时隙发送FI,该FI中对slot 0指示为“被节点A自己占用”,指示slot 1被节点D占用。节点D正确解码了节点A的FI,节点B和节点C都无法监听到该FI。节点A在发送完该FI之后,将该FI中的信息存储在临时时隙状态向量(表)中,同时将节点A内部的时隙状态向量(表)中除了slot 0外其他所有时隙进行reset,全部设置为空闲。
到达帧X的slot 1时,由于节点A加速,节点A与节点B互为一跳邻节点,节点B与节点C仍然互为一跳邻节点,但是节点C与节点A彼此之间不能直接通信,并且节点A与节点D之间无法直接通信了。
节点D在slot 1发送FI,该FI中对slot 1的指示为“被节点D自己占用”,对slot 0的指示为“被一跳邻节点占用”,对slot 2的指示为空,但是,由于节点A、节点B、节点C均无法与节点D直接通信,因此,节点A节点B和节点C均无法监听节点D发送的FI。
节点C在slot 1发送FI,该FI中对slot 1的指示为“被节点C自己占用”,对slot 2的指示为“被一跳邻节点占用”,指示slot 0为空闲。由于节点B可以接收节点C发送的FI,因此,可以假设节点B正确解码了节点C发送的FI,节点B根据接收到的FI更新本地的时隙状态向量(表),将时隙状态向量(表)中的slot 1对应的时隙状态单元的STI子单元的值更新为节点C的STI值。由于节点A并非节点C的一跳邻节点,因此,节点A不能解码该FI。节点C在发送完该FI后,将该FI中的信息存储入临时时隙状态向量(表)中,同时将节点C内部的时隙状态向量(表)中除了slot 1外其他所有时隙进行重置,全部设置为空闲。
到达帧X的slot 2时,节点B发送FI,该FI中对slot 2的指示为“被节点B自己占用”,对slot 1的指示为“被一跳邻节点占用”,指示slot 0为空闲。由于节点C和节点A此时都是节点B的一跳邻节点,假设节点A和节点C都正确解码了节点B发送的FI。此时,节点A判定节点B对自己占用的时隙(slot0)的指示为空,需要结合上一帧历史信息进行判定。上一帧历史信息中slot 2为空闲,即对于节点A而言,节点B并非自己维护的节点,因此,节点A可以忽略节点B针对slot 0指示的空反馈,继续维护该时隙资源,并且节点A也忽略节点B针对slot 1的指示,但是,节点A需要更新时隙状态向量(表)中slot 2对应的时隙状态单元的STI子单元的值,将其设置为节点B的STI,这样,此时隙之后,节点B就是节点A的维护节点。节点B发送完该FI之后,将该FI中的信息存储为临时时隙状态向量(表),同时将本节点内部的时隙状态向量(表)中除了slot 2外的其它所有时隙进行reset,全部设置为空闲。
到达帧(X+1)slot 0时,假定节点A和节点B,节点C和节点A彼此之间都可以直接通信,节点A在此时隙发送FI,该FI中对slot 0的指示为“被节点A自己占用”,指示slot 1空闲,指示slot 2被节点B占用。节点B和节点C都正确解码了节点A的信息。
对于节点B而言,节点A并非节点B自己维护的节点,因此,节点B需要对3个时隙分别进行分析:
节点A指示了slot 2被节点B占用,因此,节点B认为接收到了正反馈,节点B可以继续维护自己占用的时隙;节点A指示slot 1空闲,节点B不对slot 1对应的时隙信息单元做任何处理;但由于节点A指示了slot 0被自己占用,节点B需要更新时隙状态向量(表)中slot 0对应的时隙状态单元的STI子单元的值为节点A的STI,即此时隙之后,节点A就为节点B的维护节点。
对于节点C而言,节点A并非节点C自己维护的节点,因此,节点C需要对3个时隙分别进行分析:
节点A指示slot 1空闲,因此节点C可以忽略此空反馈(即指示slot1空 闲的反馈),继续维护自己占用的时隙资源;节点A指示slot 2被节点B占用,节点C忽略节点A对slot 2的指示;但是,由于节点A指示slot 0被节点A自己占用,因此,节点C需要更新时隙状态向量(表)中slot 0对应的时隙状态单元的STI子单元的值为节点A的STI,此时隙之后,节点A就是节点C的维护节点。
基于上述方法实施例,本发明实施例还设计了一种AD HOC系统中的FI接受处理装置,如图8所示,包括:
维护模块801,用于在每个帧周期中的发送时隙到达时,在发送FI之前,将对应该发送时隙维护的时隙状态向量(表)中记录的信息拷贝至对应该发送时隙维护的临时时隙状态向量(表)中;
更新模块802,用于在发送FI之后到下一帧中该发送时隙到达前,根据接收到的FI以及维护的临时时隙状态向量(表)更新上述时隙状态向量(表)。
更新模块802具体用于,针对上述时隙状态向量(表)中第一节点接收到FI的时隙,将其占用状态更新为被发送该FI的第二节点占用。
更新模块802具体用于,针对上述时隙状态向量(表)中第一节点的发送时隙,根据接收到的FI以及上述临时时隙状态向量(表)判断上述发送时隙是否发生碰撞,若是,将上述发送时隙的占用状态更新为空,否则,不改变上述发送时隙的占用状态。
更新模块802进一步用于,第一节点在根据接收到的FI确定针对该发送时隙的反馈信息是负反馈时,根据第一节点对应该发送时隙维护的临时时隙状态向量(表),判断第二节点是否是第一节点维护的节点,若是,判定该发送时隙发生碰撞,否则,判定该发送时隙没有发生碰撞。
更新模块802进一步用于,在第一节点判定该发送时隙发生碰撞后,将重新开始信道接入过程,重置对应该发送时隙维护的时隙状态向量(表)和临时时隙状态向量(表)。
更新模块802具体用于,针对上述时隙状态向量(表)中,除第一节点接 收到该FI的时隙和第一节点的发送时隙之外的其它时隙,根据上述临时时隙状态向量(表)判断第二节点是否是第一节点维护的节点,若是,根据上述接收到的FI更新上述其它时隙的占用状态,否则,不改变上述其它时隙的占用状态。
更新模块802进一步用于:
判断接收到FI的时隙在上述临时时隙状态向量中对应的时隙信息单元中的STI子单元的值与第二节点的STI是否相同:若是,则确定第二节点是第一节点维护的节点;否则,确定第二节点不是第一节点维护的节点。
本发明实施例中,节点在每个帧周期中的发送时隙到达时,在发送FI之前将本节点对应该发送时隙维护的时隙状态向量中记录的信息拷贝至对应该发送时隙维护的临时时隙状态向量中,从而使得临时时隙状态向量中记录了上一帧周期的网络拓扑结构和时隙占用状态,并且在每次接收到FI时,结合接收到的FI和维护的临时时隙状态向量中存储的信息更新时隙状态向量,这样,节点能够获知一帧以上的时隙占用状态,因此,能够更加准确地获知网络拓扑结构的动态变化情况,从而避免了频繁地重复信道接入过程,进而解决了现有技术中节点过多地重复接入网络引起的资源耗损和时间浪费的问题,并且降低了业务的中断率。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中 的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。