具体实施方式
本发明实施例中,各节点对帧中各时隙的FI的维护方式可以分为以下两类:
第一种维护方式为:采用累积方式保存FI。即在一个帧周期内,节点在其他节点占用的时隙内接收其他节点发送的FI,通过对保存的FI进行分析获得各时隙的时隙状态信息,具体可以为:在本节点占用的时隙发送FI消息之前,对接收到的其他节点发送的FI统一进行处理,获得各时隙的时隙状态信息,并且可以通过获得的时隙状态信息生成本节点需要发送的FI。
采用累积方式维护各时隙的FI时,节点接收到所有其他节点发送的FI后,可以采用如图3所示的基于MS-ALOHA机制的时隙状态缓存表的方式进行保存,表中的每一行存储对应节点在某一时隙接收到的FI中的时隙状态信息。
当然,也可以采用其他实现方式,如,表中的每一列存储对应节点在某一时隙接收到FI中的时隙状态信息,或者,采用数据、链表等其他数据结构来存储节点在某一时隙接收到的FI中的时隙状态信息,后续实施例中均以采用时隙状态缓存表来保存节点收到的FI且表中的每一行存储对应节点在某一时隙接收到的FI中的时隙状态信息为例进行介绍。
另外,采用累积方式维护时隙状态信息时,节点对当前各时隙状态的判断也可以采用多种方式,如:可以每接收到一个FI时就根据更新后的时隙状态缓存表对各时隙的状态进行判断,还可以只在自身的占用时隙或申请时隙到来前才对各时隙的状态进行判断。本发明后续实施例均假设节点在每收到一个FI时就对各时隙的状态进行判断,当然本发明也适用于只在自身的占用时隙或申请时隙到来前对各时隙的状态进行判断的情况。
第二种维护方式为:采用迭代方式保存FI。即节点仅保存一个关于各时隙当前占用状态的向量,称为时隙状态向量(也可称作时隙状态表)后续称为时隙状态向量(表),一种可能的时隙状态向量(表)如图4所示,当节点接收到其他节点发送的FI时,根据新接收FI中各时隙对应的时隙信息域对本地保存的时隙状态向量(表)中每一个时隙对应的时隙信息单元进行更新,通过维护时隙状态向量(表)的方式来对时隙信息进行维护。当节点需发送自身判定的FI时,会根据保存的时隙状态向量(表)中的信息生成要发送的FI。
为方便后续描述,本发明中对时隙状态向量(表)及其内部信息内容统一采用如下描述方式:
节点保存的记录各时隙当前状态的方式称为:时隙状态向量,或时隙状态表;
时隙状态向量(表)中指示的每个时隙对应的状态称为:时隙状态向量(表)中每个时隙对应的时隙信息单元;
时隙状态向量(表)中每个时隙对应的三类信息(即:时隙占用状态、STI、优先级信息)分别称为:每个时隙的时隙信息单元中包含的时隙占用状态子单元、STI子单元和优先级子单元;其中,时隙占用状态子单元中的内容不需要和FI中时隙占用状态子域内容完全相同,但需要存在映射关系,例如,对于节点保存的时隙状态向量(表)中可以设“自占”和“一跳节点占用”两个状态来表明时隙的占用状态,而节点将保存的时隙状态向量(表)中的信息内容映射到要发送的FI消息中时,FI中两种状态的时隙对应的时隙信息域中的时隙占用状态子域可以都映射为“10”,其他节点接收到FI后通过时隙信息域所在位置(是检测域还是非检测域)来判断对应时隙信息域的时隙占用状态子域中的“10”指的是发送节点自占还是发送节点的一跳节点占用。
需要说明的是,上述描述方式只是为了后续描述方便而规定,当然也可以采用其他的描述方式。
另一方面,本发明实施例中,一个节点可以占用多个时隙资源,而当节点占用多个时隙资源时,为了对节点占用的多个时隙资源进行维护,将与节点相关的时隙分为以下几类(具体参阅图5所示):
1、自占时隙:本发明实施例中定义节点成功占用发送FI和/或数据包的时隙为节点的自占时隙,即:只有当节点在对应的时隙发送了FI和/或数据包,那么节点从占用该时隙发送FI和/或数据包开始,到节点释放该时隙为止,认为该时隙为自身的自占时隙。
而具体的,节点的自占时隙又可以进一步分为以下两种:
自占主时隙:节点自占时隙中某个特定的时隙。每个节点可以将自占时隙中的某个时隙确定为自身的主时隙。节点在主时隙时进行时隙管理操作,例如:确定尚未发生的下一帧周期中发送的数据包、确定在尚未发生的下一帧周期中是否需要申请新时隙、是否需要释放占用的时隙等等,在从时隙中不进行时隙数目管理操作。
自占从时隙:自占时隙中,除主时隙外的节点其它自占时隙。节点在自占从时隙上只进行FI和/或数据发送,不进行时隙管理、时隙状态向量(表)清空等操作。
当然,节点也可以不对自占时隙作上述区分。
2、申请时隙:MAC层比较缓存队列中的需要发送的高层数据包的数据量和节点的自占时隙或使用时隙(包含申请时隙)可提供的传输容量,如果数据包的数据量大于自占时隙或使用时隙(包含申请时隙)所可以提高的传输容量时申请的新的时隙。申请时隙只有在节点确定使用该申请时隙发送数据包或在使用该申请时隙发送数据包后才能转换为自占时隙;
当假设一个高层数据包需要占用一个时隙来进行传输时,MAC层只需比较缓存中的高层数据包数目和节点的自占时隙数目(或节点的使用时隙数目),如果数据包的数目大于节点的自占时隙数目(或节点的使用时隙数目)则需要新的申请时隙。
节点使用时隙:为方便后续描述,将节点占用的时隙和节点正在申请的时隙统称为节点使用时隙。在一些特定场景中,节点使用时隙也可以只包括节点占用的时隙。
非节点使用时隙:帧中所有时隙中除节点使用时隙以外的所有其他时隙。
下面结合附图对本发明优选的实施方式进行详细说明。
基于上述定义,本发明实施例中,在使用时隙到达时,第一节点在MAC层比较缓存队列中的需要发送的高层数据包的数据量和第一节点的使用时隙提供的传输容量,如果高层数据包的数据量小于使用时隙所可以提供的传输容量时,则需要撤销使用时隙。其中,假设一个高层数据包需要占用一个时隙来进行传输时,第一节点在MAC层只需比较缓存队列中的高层数据包数目和第一节点的使用时隙数目即可,如果高层数据包的数目小于使用时隙数目则需要撤销使用时隙。需要说明的是,在具体实现过程中,第一节点在MAC层比较缓存队列中的需要发送的高层数据包的数据量和第一节点的使用时隙提供的传输容量,进而确定是否需要撤销自占时隙或申请新时隙的操作,不必限定在使用时隙到达时执行,即该操作可以在任意时隙执行或者在满足设定条件的时刻执行,例如,当接收到新的高层数据包时执行、当缓存中的数据包超时丢弃时执行、当第一节点使用的时隙资源发生碰撞时执行等等。本发明实施例中,以在自占时隙到达时,第一节点在MAC层比较缓存队列中的需要发送的高层数据包的数据量和第一节点的使用时隙提供的传输容量,确定是否需要撤销使用时隙为例说明本发明内容,在其他情况下与此类似,不再赘述。
本发明实施例中,现有技术下,第一节点接收到其他节点发送的FI后,可以根据FI中提供的时隙状态信息对各个时隙的状态进行维护,第一节点维护各时隙的状态可以采用时隙状态缓存表的方式,也可以采用时隙状态向量(表)的方式,而本发明实施例中,由于第一节点可以申请使用多个时隙,在每个时隙处第一节点感知的信道使用状态可能存在差别,当第一节点使用多个时隙时可以采用但不限于以下两种方式来维护各时隙感知的时隙状态信息:
第一种方式为:单表方案。
所谓单表方案即是指:当第一节点在每一个帧周期中可以占用多个时隙发送高层数据时,如果自占时隙和申请时隙的总数目大于1,则第一节点仍可以在本地仅维护一个时隙状态缓存表或者时隙状态向量(表)来记录多个自占时隙和/或申请时隙的时隙状态信息。
在使用单表方案时,第一节点在非自身使用的时隙接收到其它第一节点发送的FI时,将接收到的FI中各时隙对应的时隙信息域中的信息,保存到时隙状态缓存表中各时隙对应的行内(当采用时隙状态缓存表维护时隙状态信息时);或者,根据接收到的FI中各时隙对应的时隙信息域中的信息更新时隙状态向量(表)中每一个时隙对应的时隙信息单元,将时隙状态信息的变化体现到更新后的时隙状态向量(表)中〔当采用时隙状态向量(表)维护时隙状态信息时〕;第一节点在到达每一个自占时隙〔或申请时隙(当认为申请时隙只有真正发送数据后才能变为自占时隙时,才可能出现使用申请时隙发送FI,否则FI只能在自占时隙上发送)〕,根据当前的时隙状态缓存表或者时隙状态向量(表)内容组织生成FI并发送。
当采用时隙状态向量(表)方式维护时隙状态信息时,第一节点维护的时隙状态向量(表)在每帧设定时隙(如,自占主时隙)处,在发送FI后进行重置,其它时隙发送FI后不重置时隙状态向量(表)中的各时隙对应的信息单元。
第二种方式为:多表方案。
所谓多表方案即是指:当第一节点在每一个帧周期中可以占用多个时隙发送高层数据时,如果自占时隙和申请时隙总数目大于1,则第一节点可以在本地分别为每一个自占时隙和申请时隙维护对应的时隙状态缓存表或者时隙状态向量(表)。
在使用多表方案时,第一节点在非自身使用的时隙接收到其它节点发送的FI时,将接收到的FI中各时隙对应的时隙信息域中的信息,保存到每一个时隙对应的时隙状态缓存表中接收到FI的时隙对应的行内(当采用时隙状态缓存表维护时隙状态信息时);或者,根据接收到的FI中各时隙对应的时隙信息域中的信息更新每个对应的时隙状态向量(表)中各时隙对应的时隙信息单元,将时隙状态信息的变化体现到更新后的每个时隙对应的时隙状态向量(表)中〔当采用时隙状态向量(表)维护时隙信息时〕;第一节点在到达每一个自占时隙〔或申请时隙(当认为申请时隙只有正真发送数据后才能变为自占时隙时,才可能出现使用申请时隙发送FI,否则FI只能在自占时隙上发送)〕时,根据当前自占时隙(或申请时隙)对应的时隙状态缓存表或时隙状态向量(表)内容组织生成FI并发送;其中FI中的其它自占时隙的信息域内容可以从其它自占时隙对应的时隙状态缓存表或者时隙状态向量(表)中获得。
第一节点在某一自占时隙发送FI后,当采用时隙状态向量(表)维护时隙状态信息时,清除发送FI的自占时隙对应的时隙状态向量(表)中除了本自占时隙以外的其他时隙对应的时隙信息单元;当采用时隙状态缓存表方式维护时隙信息时不需要做特殊处理。
参阅图6所示,基于上述单表方案和多表方案,本发明实施例中,时隙撤销的具体流程如下:
步骤600:第一节点确定高层数据包的数据量小于第一节点的使用时隙能够承载的传输容量时,在使用时隙中选定预撤销时隙。
本发明实施例中,步骤600的执行方式包含但不限于以下三种:
1、第一节点确定缓存中的高层数据包的数据量小于第一节点的使用时隙能够承载的传输容量。
例如,第一节点在每个自占时隙处比较上一处理周期中缓存的高层数据包和尚未发生的处理周期中自身使用的时隙(包含自占时隙或/和申请时隙)能够承载的传输容量,其中,处理周期与帧周期的长度一致,但时间起点不一样,处理周期是第一节点内部从自占时隙接入开始计时的,而帧周期是绝对时间概念;或者,第一节点在每个自占时隙处比较当前缓存中所有的高层数据包(即所有存在于缓存的、尚未被成功发送的高层数据包,不限定是上一处理周期中缓存的)和尚未发生的处理周期中自身使用的时隙(包含自占时隙或/和申请时隙)能够承载的传输容量。
2、第一节点确定缓存中在设定时间段内需要发送的高层数据包的数据量小于第一节点的使用时隙能够承载的传输容量。
例如,第一节点比较当前缓存中存在的、需要100ms内发送完毕的高层数据包和尚未发生的处理周期中自身使用的时隙(包含自占时隙或/和申请时隙)能够承载的传输容量。
3、第一节点确定在设定时间段内将要发送的高层数据包的数据量小于第一节点的使用时隙能够承载的传输容量。
例如,第一节点比较根据统计/预测等方法获得的、需要100ms内发送完毕的高层数据包和尚未发生的处理周期中自身使用的时隙(包含自占时隙或/和申请时隙)能够承载的传输容量。
较佳的,若一个高层数据包需要占用一个时隙来进行传输,则第一节点只需在MAC层内经比较后确定缓存中的高层数据包数目,或者,缓存中在设定时间内需要发送的高层数据包的数目,或者,在设定时间内将要发送的高层数据包的数目,小于使用时隙的数目,即可撤销相应数目的使用时隙;其中,第一节点撤销的是尚未发生的处理周期中的使用时隙。在第一节点撤销尚未发生的处理周期中的使用时隙时,可在满足数据包需求(如:时延需求)的前提下,优先撤销申请时隙,否则也可以撤销自占时隙。
本发明实施例中,针对单表方案和多表方案,第一节点选定预撤销时隙的处理方式均有不同,下面对这两种方案分别进行介绍。
一、单表方案:
采用单表方案时,第一节点选定需要撤销的使用时隙时,根据缓存的高层数据包数目,或者,缓存中在设定时间段内需要发送的高层数据包的数目,或者,在设定时间段内将要发送的高层数据包的数目,和当前使用时隙数目的差值,在使用时隙中确定预撤销时隙的数目及编号,以及当第一节点针对各使用时隙采用统一的时隙状态向量(表)维护时隙状态信息时,将预撤销时隙对应的时隙信息域的状态重置为空闲状态,而当第一节点针对各使用时隙采用统一的时隙状态缓存表维护时隙状态信息时,将预撤销时隙对应的占用状态从时隙状态缓存表中删除,并继续维护时隙状态缓存表,进一步的,第一节点还需将预撤销时隙从对应的使用时隙列表中删除(包括:如果选定的预撤销时隙原为自占时隙,则将该预撤销时隙从自占时隙列表中删除;和/或,如果选定的预撤销时隙原为申请时隙,则将该预撤销时隙从申请时隙列表中删除),并加入预撤销时隙列表。需要说明的是,第一节点可以在预撤销时隙到达时,将该预撤销时隙从预撤销时隙列表中删除(这是因为:当预撤销时隙到达时,按本发明实施例中记载的方法,如果第一节点不再使用该预撤销时隙发送数据,那么之后周围的其他节点将会认为该预撤销时隙为空闲时隙,需要时进行抢占,即当预撤销时隙到达后,该预撤销时隙不应再被认为是第一节点的预撤销时隙),也可以在预撤销时隙到达前,根据接收到的其他节点发送的FI确定预撤销时隙发生碰撞或被其他节点占用时,将该预撤销时隙从预撤销时隙列表中删除。
二、多表方案:
采用多表方案时,第一节点选定需要撤销的使用时隙时,根据缓存的高层数据包数目,或者,缓存中在设定时间段内需要发送的高层数据包的数目,或者,在设定时间段内将要发送的高层数据包的数目,和当前使用时隙数目的差值,在使用时隙中确定预撤销时隙的数目及编号,并根据维护方式,可选择删除预撤销时隙对应的时隙状态向量(表)或时隙状态缓存表;进一步的,第一节点还需将预撤销时隙从对应的使用时隙列表中删除(包括:如果选定的预撤销时隙原为自占时隙,则将该预撤销时隙从自占时隙列表中删除;和/或,如果选定的预撤销时隙原为申请时隙,则将该预撤销时隙从申请时隙列表中删除),并加入预撤销时隙列表。需要说明的是,第一节点可以在预撤销时隙到达时,将该预撤销时隙从预撤销时隙列表中删除,也可以在预撤销时隙到达前,根据接收到的其他节点发送的FI确定预撤销时隙发生碰撞或被其他节点占用时,将该预撤销时隙从预撤销时隙列表中删除。当第一节点对预撤销时隙仍维护对应的时隙状态向量(表)或时隙状态缓存表时,此时,还需要把预撤销时隙对应的时隙状态向量(表)或时隙状态缓存表也删除。
由上述内容可知,当第一节点在自占主时隙时确定撤销某一/些使用时隙后,第一节点将会对维护的时隙状态向量(表)或时隙状态缓存表进行更新,将预撤销的使用时隙从对应的使用时隙列表中删除,因此在后续自占时隙发送的FI中,第一节点需要将预撤销的使用时隙的占用状态置为空闲状态。
步骤610:在预撤销时隙到达之前,若第一节点确定未撤销的使用时隙的当前状态不能满足数据发送需求,且存在满足要求的预撤销时隙,则将满足要求的预撤销时隙重新置为使用时隙。
本发明实施例中,第一节点确定未撤销的至少一个使用时隙发生碰撞,或者,确定未撤销的至少一个使用时隙发生碰撞,且剩余的未撤销的使用时隙能够承载的传输容量不能满足高层数据包的发送要求,或者,确定未撤销的使用时隙能够承载的传输容量不能满足高层数据包的发送要求(如:有新的高层数据包达到)时,将预撤销的时隙重新置为使用时隙。其中,第一节点根据在非自占时隙接收到的其他节点发送的FI确定未撤销的使用时隙发生碰撞;或者,根据低层提供的指示信息确定未撤销的使用时隙发生碰撞;另一方面,当第一节点经比较判定缓存中的高层数据包的数据量大于第一节点的使用时隙能够承载的传输容量,或者,判定缓存中在设定时间段内需要发送的高层数据包的数据量大于第一节点的使用时隙能够承载的传输容量,或者,判定在设定时间段内将要发送的高层数据包的数据量大于第一节点的使用时隙能够承载的传输容量时,确定未撤销的使用时隙(发生碰撞后剩余的未撤销的使用时隙或全部的未撤销的使用时隙)能够承载的传输容量不能满足高层数据包的发送要求。
本发明实施例中,第一节点在某个时隙处刚撤销了某个(些)使用时隙后,在预撤销时隙到达前,当第一节点通过在非自占时隙接收的其他节点发送的FI或者通过低层提供的指示信息确定未撤销的使用时隙发生碰撞时,对于由第一节点原自占时隙生成的预撤销时隙(称为时隙x),在其上一个处理周期中是被第一节点占用,因此,虽然第一节点在当前处理周期中某个时隙处改变了对时隙x的占用状态,即在第一节点内部对时隙x进行了撤销,但周围其他节点根据接收的第一节点在上一处理周期中发送的FI仍会认为第一节点在当前处理周期中会继续占用时隙x,因此,在时隙x到达前,第一节点可以将该预撤销时隙经重新置为自占时隙使用,而不会对其他节点造成影响;对于由第一节点原申请时隙生成的预撤销时隙(称为时隙xx),在其上一个处理周期中是空闲时隙,第一节点在当前处理周期中某个时隙处将时隙xx的状态由申请时隙改变为预撤销时隙,不会真正改变该时隙的占用状态(仍为空闲状态),因此,在时隙xx到达前,第一节点将该预撤销时隙经重新置为申请时隙使用,而不会对其他节点造成影响。
为方便后续描述,本发明实施例中,针对第一节点在自占时隙处决定撤销的时隙,在当前周期中该时隙尚未到达前的时间段内,将该时隙称为预撤销时隙,第一节点在不同的时间点预撤销时隙的数目是变化的。当某个预撤销时隙到达时,将该时隙将从预撤销时隙列表中删除;当预撤销时隙到达前,接收到的其他节点发送的FI确定预撤销时隙发生碰撞或被其他节点占用时,也需要将该时隙从预撤销时隙列表中删除。
较优地,第一节点只在当前周期内尚未到达的使用时隙发生碰撞,且第一节点确定存在满足要求的预撤销时隙时,才将预撤销时隙重新置为自占时隙。所谓第一节点确定存在满足要求的预撤销时隙是指将预撤销时隙重置为使用时隙时,能够满足设定的数据发送需求,如数据包p发送的剩余时间还剩30毫秒(ms)(设每ms对应一个时隙,且此时的时隙编号对应时隙0),原来打算传输数据包p的时隙20通过接收其他节点发送的FI发现已发生碰撞,这时存在一个由原自占时隙生成的预撤销时隙时隙25,将时隙25重置为自占时隙时可以满足数据包的发送需求(能够保证数据包p在时延允许范围内成功发送)。对于单表方案和多表方案,第一节点将预撤销时隙重置为使用时隙的操作如下:
一、单表方案:
当第一节点将预撤销时隙重新置为自占时隙且采用时隙状态向量(表)维护时隙状态信息时,第一节点将维护的时隙状态向量(表)中由预撤销时隙重置的自占时隙对应的时隙信息单元中的时隙占用状态子单元置为占用状态,将STI子单元置为第一节点的STI,以及将优先级子单元置为预撤销时隙原来的优先级(也可以将优先级子单元置为将在该预撤销时隙上发送的数据包对应的优先级);进一步的,第一节点还需将预撤销时隙从预撤销时隙列表中删除,并加入自占时隙列表。
当第一节点将预撤销时隙重新置为自占时隙且采用时隙状态缓存表维护时隙状态信息时,第一节点将预撤销时隙对应的占用状态重新加入到时隙状态缓存表中;进一步的,第一节点还需将预撤销时隙从预撤销时隙列表中删除,并加入自占时隙列表。
当第一节点将预撤销时隙重新置为申请时隙,不论采用时隙状态向量(表)还是时隙状态缓存表维护时隙状态信息时,第一节点都不需要改变维护的时隙状态向量(表)或时隙状态缓存表中由预撤销时隙重置的申请时隙对应的时隙信息单元中的信息(由于申请时隙本身就是空闲时隙);进一步的,第一节点还需将预撤销时隙从预撤销时隙列表中删除,并加入申请时隙列表。
二、多表方案:
1)在选定预撤销时隙后(本实施例中即为自占时隙处),若第一节点针对预撤销时隙对应的时隙状态向量(表)或时隙状态缓存表,未继续进行维护或者将其删除,则第一节点在将预撤销时隙重置为使用时隙后,需要增加由预撤销时隙重置的使用时隙对应的时隙状态向量(表)或时隙状态缓存表。
其中,
当第一节点将预撤销时隙重新置为自占时隙且针对各自占时隙分别采用相应的时隙状态向量(表)维护时隙状态信息时,第一节点复制距由预撤销时隙重置的自占时隙最近的自占时隙对应的时隙状态向量(表)作为由预撤销时隙重置的自占时隙对应的时隙状态向量(表)。进一步的,如果被复制的时隙状态向量(表)的自占时隙在由预撤销时隙重置的自占时隙之前,则需要进行部分时隙状态信息的回退操作。进一步的,第一节点还需将预撤销时隙从预撤销时隙列表中删除,并加入自占时隙列表。
当第一节点将预撤销时隙重新置为自占时隙且针对各自占时隙分别采用相应的时隙状态缓存表维护时隙状态信息时,第一节点复制距由预撤销时隙重置的自占时隙最近的自占时隙对应的时隙状态缓存表作为由预撤销时隙重置的自占时隙对应的时隙状态缓存表。进一步的,第一节点还需将预撤销时隙从预撤销时隙列表中删除,并加入自占时隙列表。
当第一节点将预撤销时隙重新置为申请时隙,不论针对各申请时隙分别采用时隙状态向量(表)还是时隙状态缓存表维护时隙状态信息时,第一节点复制距由预撤销时隙重置的申请时隙最近的自占时隙对应的时隙状态向量(表)或时隙状态缓存表作为由预撤销时隙重置的申请时隙对应的时隙状态向量(表)或时隙状态缓存表。进一步的,第一节点还需将预撤销时隙从预撤销时隙列表中删除,并加入申请时隙列表。
2)在选定预撤销时隙后(本实施例中即为自占时隙处),若第一节点针对预撤销时隙对应的时隙状态向量(表)或时隙状态缓存表,仍在继续进行维护,则第一节点在将预撤销时隙重置为使用时隙后,将预撤销时隙对应的时隙状态向量(表)或时隙状态缓存表设置为使用时隙对应的时隙状态向量(表)或时隙状态缓存表。
下面通过几个具体的应用场景对上述实施例进行进一步详细说明。
第一种应用场景,第一节点采用多表方案且采用时隙状态向量(表)维护时隙状态信息,而当前帧周期内尚未到达的使用时隙(这里为自占时隙)发生碰撞。
参阅图7所示,假设一个超帧中包含8个时隙,在Frame 2以前每个帧周期中都会从高层接收到三个数据包。第一节点在一个帧周期中占用了三个时隙:时隙1、时隙4和时隙6。第一节点内部维护的时隙占用状态定义如下:10表示被1跳节点占用;11表示被两跳节点占用;01表示碰撞时隙;00表示空闲时隙或被三跳节点占用时隙。
则具体处理过程如下:
A1:第一节点在Frame 3中只接收到两个数据包a”和b”,在Frame 4中的时隙1到达时,时隙1、时隙4和时隙6对应的时隙状态向量(表)如表1-表3所示:
表1
时隙1对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
00 |
a:10 |
00 |
a:10 |
00 |
表2
时隙4对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
00 |
a:10 |
00 |
a:10 |
00 |
表3
时隙6对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
00 |
a:10 |
00 |
a:10 |
00 |
此时(即Frame4的时隙1到达时),第一节点判定当前的自占时隙数目大于要发送的数据包数目时,确定在需要撤销一个占用的时隙资源。
A2:第一节点选择距映射点(即自占时隙时隙1)最远的时隙(即时隙6)进行撤销。
在确定了需要撤销的时隙后,第一节点时隙6从自占时隙列表中删除,添加到预撤销时隙列表中,同时,第一节点删除时隙6对应的时隙状态向量(表),并且在维护的各时隙对应的时隙状态向量(表)中将时隙6对应的时隙状态置为“空闲”,具体如表4和表5所示。
表4
时隙1对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
00 |
a:10 |
00 |
00 |
00 |
表5
时隙4对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
00 |
a:10 |
00 |
00 |
00 |
A3:当到达Frame4中的时隙3时,第一节点接收到另一节点发送的FI,该FI的具体内容如表6所示:
表6
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
00 |
00 |
B:10 |
C:10 |
00 |
00 |
00 |
A4:第一节点根据接收到的FI对自身维护的时隙状态向量(表)进行更新,具体如表7和表8所示:
表7
时隙1对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
B:10 |
01 |
00 |
00 |
00 |
表8
时隙4对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
B:10 |
01 |
00 |
00 |
00 |
A5:第一节点根据更新后的时隙状态向量(表)判断自占时隙时隙4已发生碰撞,从而将时隙4对应的时隙状态向量(表)删除,以及将预撤销的时隙6重新添加到自身的自占时隙列表中,同时在时隙1对应的时隙状态向量(表)中将时隙6设置为占用状态,复制时隙1当前的时隙状态向量(表)作为时隙6对应的时隙状态向量(表)。
较佳的,为了更好地表达时隙6感知的时隙状态,第一节点可以对复制的时隙状态向量(表)进行进一步操作,如:对表中的部分时隙对应的时隙状态信息进行回退等特殊处理,这些操作不属于本发明内容,不再赘述)。
至此,第一节点维护的时隙状态向量(表)如表9和表10所示:
表9
时隙1对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
B:10 |
01 |
00 |
a:10 |
00 |
表10
时隙4对应的时隙状态向量(表)
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
B:10 |
01 |
00 |
a:10 |
00 |
第二种应用场景,第一节点采用单表方案且采用时隙状态向量(表)维护时隙状态信息,而当前帧周期内尚未到达的自占时隙发生碰撞。
参阅图7所示,设一个超帧中包含8个时隙,在Frame 2以前每个帧周期中都会从高层接收到三个数据包,第一节点在一个帧周期中占用了三个时隙:时隙1、时隙4和时隙6。第一节点内部维护的时隙占用状态定义如下:10表示被1跳节点占用;11表示被两跳节点占用;01表示碰撞时隙;00表示空闲时隙或被三跳节点占用时隙。
则具体处理过程如下:
B1:第一节点在Frame 3中只接收到两个数据包a”和b”,在Frame 4中的时隙1到达时,第一节点维护的时隙状态向量(表)如表11所示:
表11
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
00 |
a:10 |
00 |
a:10 |
00 |
此时,第一节点判定当前的自占时隙数目大于要发送的数据包数目时,确定需要撤销一个占用的时隙资源。
B2:第一节点选择距映射点最远的时隙(即时隙6)进行撤销。
在确定了需要撤销的时隙后,第一节点将时隙6从自占时隙列表中删除,添加到预撤销时隙列表中,同时,第一节点在维护的时隙状态向量(表)中将时隙6对应的时隙状态置为“空闲”,具体如表12所示。
表12
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
00 |
a:10 |
00 |
00 |
00 |
B3:当到达Frame4中的时隙3时,第一节点接收到另一节点发送的FI,该FI的具体内容如表13所示:
表13
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
00 |
00 |
B:10 |
C:10 |
00 |
00 |
00 |
B4:第一节点根据接收到的FI对自身维护的时隙状态向量(表)进行更新,具体如表14所示:
表14
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
B:10 |
01 |
00 |
00 |
00 |
B5:第一节点根据更新后的时隙状态向量(表)判断自占时隙时隙4已发生碰撞,从而将预撤销的时隙6重新添加到自身的自占时隙列表中,同时,将时隙状态向量(表)中时隙6设置为占用状态。
至此,第一节点维护的时隙状态向量(表)更新如表15所示:
表15
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
B:10 |
01 |
00 |
a:10 |
00 |
第三种应用场景:第一节点采用单表方案且采用时隙状态缓存表维护时隙状态信息,而当前帧周期内尚未到达的自占时隙发生碰撞。
参阅图7所示,设一个超帧中包含8个时隙,在Frame 2以前每个帧周期中都会从高层接收到三个数据包,第一节点在一个帧周期中占用了三个时隙:时隙1、时隙4和时隙6。第一节点内部维护的时隙占用状态定义如下:10表示被1跳节点占用;11表示被两跳节点占用;01表示碰撞时隙;00表示空闲时隙或被三跳节点占用时隙。
则具体处理过程如下:
C1:第一节点在Frame 3中只接收到两个数据包a”和b”,在Frame 4中的时隙1到达时维护的N*N时隙状态缓存表如表16所示:
表16
Slot 0: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 1:a |
|
A:10 |
|
|
|
|
|
|
Slot 2: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 3: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 4:a |
|
|
|
|
A:10 |
|
|
|
Slot 5: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 6:a |
|
|
|
|
|
|
A:10 |
|
Slot 7: |
default |
default |
default |
default |
default |
default |
default |
default |
此时,第一节点判定当前的自占时隙数目大于要发送的数据包数目时,确定在下一帧中需要撤销一个占用的时隙资源。
C2:第一节点选择离映射点最远的时隙(时隙6)进行撤销。
在确定了需要撤销的时隙后,第一节点将时隙6从自占时隙列表中删除,添加到预撤销时隙列表中。此时,第一节点维护的时隙状态缓存表更新如表17所示:
表17
Slot 0: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 1:a |
|
A:10 |
|
|
|
|
|
|
Slot 2: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 3: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 4:a |
|
|
|
|
A:10 |
|
|
|
Slot 5: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 6: |
|
|
|
|
|
|
|
|
Slot 7: |
default |
default |
default |
default |
default |
default |
default |
default |
C3:当到达Frame4中的时隙3时,第一节点接收到另一节点发送的FI,该FI的具体内容如表18所示:
表18
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
00 |
00 |
B:10 |
C:10 |
00 |
00 |
00 |
C4:第一节点根据接收到的FI对自身维护的时隙状态缓存表进行更新,具体如表19所示:
表19
Slot 0: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 1:a |
|
A:10 |
|
|
|
|
|
|
Slot 2: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 3:b |
00 |
00 |
00 |
B:10 |
C:10 |
00 |
00 |
00 |
Slot 4:a |
|
|
|
|
A:10 |
|
|
|
Slot 5: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 6: |
|
|
|
|
|
|
|
|
Slot 7: |
default |
default |
default |
default |
default |
default |
default |
default |
C5:第一节点根据更新后的时隙状态缓存表判断自占时隙时隙4发生碰撞,从而将预撤销的时隙6重新添加到自身的自占时隙列表中,同时,将时隙状态缓存表中时隙6设置为占用状态。
至此,第一节点维护的时隙状态缓存表更新如表20所示:
表20
Slot 0: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 1:a |
|
A:10 |
|
|
|
|
|
|
Slot 2: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 3:b |
00 |
00 |
00 |
B:10 |
C:10 |
00 |
00 |
00 |
Slot 4: |
|
|
|
|
A:10 |
|
|
|
Slot 5: |
default |
default |
default |
default |
default |
default |
default |
default |
Slot 6:a |
|
|
|
|
|
|
A:10 |
|
Slot 7: |
default |
default |
default |
default |
default |
default |
default |
default |
第四种应用场景:第一节点采用单表方案且采用时隙状态向量(表)维护时隙状态信息,而当前帧周期内已占用的时隙发生碰撞。
参阅图8所示,设一个超帧中包含8个时隙,在Frame 2以前每个帧周期中都会从高层接收到四个数据包,第一节点在一个帧周期中占用了四个时隙:时隙1、时隙2、时隙4和时隙6。第一节点内部维护的时隙占用状态定义如下:10表示被1跳节点占用;11表示被两跳节点占用;01表示碰撞时隙;00表示空闲时隙或被三跳节点占用时隙。
则具体处理过程如下:
D1:第一节点在Frame 3中只接收到三个数据包a”、b”和c”,在Frame 4中的时隙1到达时维护的时隙状态向量(表)如表21所示:
表21
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
a:10 |
00 |
a:10 |
00 |
a:10 |
00 |
此时,第一节点判定当前的自占时隙数目大于要发送的数据包数目,确定在下一帧中需要撤销一个占用的时隙资源。
D2:第一节点选择离映射点最远的时隙(即时隙6)进行撤销。
在确定了需要释放的时隙后,第一节点将时隙6从自占时隙列表中删除,添加到预释放时隙列表中。此时,第一节点在维护的时隙状态向量(表)中将时隙6对应的时隙状态置为“空闲”,具体如表22所示:
表22
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
a:10 |
00 |
a:10 |
00 |
00 |
00 |
D3:当到达Frame4中的时隙3时,第一节点接收到另一节点发送的FI,该FI的具体内容如表23所示:
表23
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
00 |
C:10 |
B:10 |
00 |
00 |
00 |
00 |
D4:第一节点根据接收到的FI对自身维护的时隙状态向量(表)进行更新如表24所示:
表24
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
01 |
B:10 |
a:10 |
00 |
00 |
00 |
D5:第一节点根据更新后的时隙状态向量(表)判断自占时隙时隙2已发生碰撞,从而将预撤销的时隙6重新添加到自身的自占时隙列表中,同时,将时隙状态向量(表)中时隙6设置为占用状态。
此时,第一节点维护的时隙状态向量(表)更新如表25所示:
表25
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
01 |
B:10 |
a:10 |
00 |
a:10 |
00 |
第五种应用场景:第一节点采用单表方案且采用时隙状态向量(表)维护时隙状态信息,而当前帧周期内申请时隙发生碰撞。
参阅图9所示,设一个超帧中包含8个时隙,在Frame 2以前每个帧周期中都会从高层接收到两个数据包,第一节点在一个帧周期中占用了两个时隙:时隙1、时隙2。第一节点内部维护的时隙占用状态定义如下:10表示被1跳节点占用;11表示被两跳节点占用;01表示碰撞时隙;00表示空闲时隙或被三跳节点占用时隙。
则具体处理过程如下:
E1:第一节点在Frame 2中接收到四个数据包a’、b’、c’和d’,在Frame3中的时隙1到达时维护的时隙状态向量(表)如表26所示:
表26
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
a:10 |
00 |
00 |
00 |
00 |
00 |
此时,第一节点判定当前的自占时隙数目小于要发送的数据包数目,确定需要申请两个时隙资源。
E2:第一节点选择两个新的时隙资源(时隙4和时隙6)作为自己的申请时隙。
在确定了申请时候后,第一节点将时隙4和时隙6添加到申请时隙列表中,第一节点维护的时隙状态向量(表)中时隙4和时隙6对应的时隙状态保持不变。
E3:在Frame3中的时隙1到达时,数据包d’由于超时丢弃,缓存中的数据包数目变为3个。此时,第一节点判定当前的使用时隙(包括占用时隙和申请时隙)数目小于要发送的数据包数目,确定需要撤销一个时隙资源。
E4:第一节点选择离映射点最远的时隙(即时隙6)进行撤销。
在确定了需要释放的时隙后,第一节点将时隙6从申请时隙列表中删除,添加到预释放时隙列表中。第一节点维护的时隙状态向量(表)中时隙6对应的时隙状态保持不变。
E5:当到达Frame3中的时隙3时,第一节点接收到另一节点发送的FI,该FI的具体内容如表27所示:
表27
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
00 |
00 |
B:10 |
C:10 |
00 |
00 |
00 |
E6:第一节点根据接收到的FI对自身维护的时隙状态向量(表)进行更新如表28所示:
表28
Slot 0 |
Slot 1 |
Slot 2 |
Slot 3 |
Slot 4 |
Slot 5 |
Slot 6 |
Slot 7 |
00 |
a:10 |
00 |
B:10 |
C:10 |
00 |
00 |
00 |
E7:第一节点根据更新后的时隙状态向量(表)判断申请时隙时隙4已被其他节点占用,判断当前的使用时隙不能满足数据发送需求,从而将预撤销的时隙6重新添加到自身的申请时隙列表中,同时,将时隙4从申请时隙列表中删除。第一节点维护的时隙状态向量(表)不变。
基于上述各实施例,参阅图10所示,本发明实施例中,第一节点包括撤销单元100和重置单元101,其中,
撤销单元100,用于在确定高层数据包的数据量小于的使用时隙能够承载的传输容量时,在已使用时隙中选定预撤销时隙;
重置单元101,用于在预撤销时隙到达之前,若确定未撤销的使用时隙的当前状态不能满足数据发送需求,且存在满足要求的预撤销时隙,则将预撤销时隙重新置为使用时隙。
综上所述,本发明实施例中,当第一节点判定帧周期中的使用时隙的当前状态不能满足数据发送需求时,如果存在预撤销时隙,那么将预撤销时隙重新置为使用时隙,并采用由预撤销的时隙转换的使用时隙发送数据,这样,在预撤销时隙真实撤销前,有效地利用了预撤销时隙的资源,避免了未有效利用预撤销资源而造成的资源浪费和数据发送延迟,保障的系统的传输性能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。