无线自组织网中基于协作预约的预约信息选择方法转让专利

申请号 : CN201110257464.7

文献号 : CN102281652B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李波袁韵洁

申请人 : 西北工业大学

摘要 :

本发明公开了一种无线自组织网中基于协作预约的预约信息选择方法,协作转发其它实时业务的预约信息时,首先确保自己分配给预约表中各预约信息的协作机会尽可能平等,再在此基础上提高对预约可靠性要求最迫切的预约信息的协作次数,从而利用有限的协作机会对各预约信息进行协作转发,提高有限协作机会下的协作效率,提高预约可靠性。

权利要求 :

1.一种无线自组织网中基于协作预约的预约信息选择方法,其特征在于包括下述步骤:

步骤1:实时节点发送实时业务的数据分组或确认分组以及非实时节点发送非实时业务的数据分组或确认分组前,实时节点或非实时节点S更新自己的发送预约表和接收预约表;

步骤2:S检查自己的发送预约表和接收预约表,若两张预约表中均无预约信息,则直接发送该分组;若两张预约表中共有一条预约信息,转入子情况1;若两张预约表中的预约信息条数和大于1,转入子情况2;

子情况1:选择此预约信息作为提取协作信息的对象,转入步骤3;

子情况2:比较这几条预约信息被自己协作的次数,选择次数最少的一条作为提取协作信息的对象;若有多条预约信息被自己协作的次数均最少,则进一步比较它们的预约开始时间,选择预约开始时间最早的一条作为提取协作信息的对象;若预约开始时间也相同,则选择发送预约表中的预约信息作为提取协作信息的对象,转入步骤3;

步骤3:S将提取的协作信息放入待发送分组中,转入步骤4;

步骤4:S给预约表中此预约信息被自己协作的次数加1,发送该分组;

所述的协作预约,是以基本信道预约为接入方式,任何发送节点在发送数据分组或确认分组之前,从预约表中选取一条预约信息并将其转化为协作信息,然后将其放入待发送分组中发送,若没有则不选取,直接发送分组;实时节点还需要在待发送分组内放入自己的位置信息,以便其它节点转发此预约信息后,接收节点可以根据此位置信息来判断自己与预约发起者之间的距离,从而决定是否接受此协作信息;对于接收到数据分组或确认分组的节点,无论目的地址是否为自己,都对其携带的协作信息进行判断:若自己的预约表中不存在此预约信息,且自己与预约发起者的距离小于协作门限,则将此协作信息存入预约表;

否则忽略此协作信息;若分组中没有携带预约信息,则不作处理。

说明书 :

无线自组织网中基于协作预约的预约信息选择方法

技术领域

[0001] 本发明涉及无线通信技术领域,尤其是实时业务传输方法。

背景技术

[0002] 无线自组织网络(Ad hoc网络)是由一群同等级节点构成的无线多跳网络,网络不包含任何中心控制节点与基础设施,每个节点具备自己的无线收发装置,节点间依靠相互协调进行信道接入。这种网络成本低,抗毁性强,组网速度快,应用领域广泛。
[0003] 随着无线网络技术的不断发展,一些具有特殊服务质量要求的业务在Ad hoc网络中的传输逐渐成为人们研究的热点,如多媒体实时业务,这种业务的数据包产生具有周期性,对传输延迟的要求较高。Ad hoc网络中,由于所有节点采取随机竞争的方式接入信道,分组冲突随网络负载的增加而增加,实时业务的性能得不到保证,从而造成如视频业务不能流畅播放,音频业务无法保证通话质量等后果。因此,要解决实时业务的稳定传输问题,MAC协议的设计尤为关键,好的MAC协议可以有效减小竞争接入和重传带来的延迟加大甚至丢包问题,提高多媒体业务访问的成功率。
[0004] 当前被业界广泛用于Ad Hoc网络的MAC协议是802.11工作组制定的IEEE802.11DCF,采取载波侦听冲突避免(CSMA/CA)机制,节点以随机退避的方式公平竞争信道;然而由于所有业务的优先级相同,当业务量较大时,实时业务的误帧率和传输延迟较大。针对此问题,802.11工作组提出了IEEE 802.11e标准,以增强DCF(EDCA)机制为基础,将四种类型的数据按照信道竞争的优先权差异分为八个优先级,实时业务的优先权较高,普通业务的优先权较低;然而EDCA没有避免基本的退避机制和竞争方式,难以从本质上克服网络负载较大时的分组冲突问题。
[0005] 基于对信道接入模式的改进,C.R.Lin和M.Gerla提出了信道预约思想(MACA/PR)。该思想中,实时业务将下周期数据分组传输所需的信道使用信息(预约信息)随当前分组一并发送。邻节点通过对预约信息的解析获得实时业务下周期的信道使用时间等信息;当邻节点自己有业务时,则挑选实时业务预约时段以外的时间随机竞争接入。Zhou Ying,A.L.Ananda和Lillykutty Jacob对MACA/PR进行了改进,通过对预约信息存储方式的修改,克服了由节点之间交换预约信息而带来的网络负载加重问题。基本预约机制(MACA/PR及其改进方法)的性能瓶颈在于预约信息不能被有效广播至其载波侦听范围内所有可能与之发生冲突的邻节点处。由于冲突或信道衰落等原因,一旦这些邻节点无法获得预约信息,它们就可能在实时业务的预约时段内进行自己分组的传输,进而与实时分组发生冲突,导致其误帧,预约因此失败。
[0006] 基于以上考虑,发明专利“ZL200710017816.5”提出了多步预约的概念,通过对单条预约信息的m(m≥1)次广播,提高冲突情形下的预约可靠性。然而,物理信道中,信号的传播范围分为传输范围与载波侦听范围两种,传输范围位于载波侦听范围内并小于载波侦听范围,传输范围以外、载波侦听范围以内的区域称为干扰区域。位于实时节点传输范围内的邻节点能够以一定概率正确接收其发送的分组,多步预约在一定程度上提高了实时业务在这个区域内的预约可靠性;而位于实时节点干扰区域内的邻节点由于无法接收实时节点发送的分组(即无法获得其中的预约信息),则可能在实时节点的预约时段内进行自身分组的传输,对实时节点造成干扰,这是基本预约机制和多步预约机制均无法解决的问题。
[0007] 针对以上问题,专利申请“基于协作预约的无线自组织网中实时业务的可靠传输方法”(申请号为201110045090.2)提出了协作预约的思想,即通过邻节点对预约信息的协作转发,增加预约信息在实时节点载波侦听范围内的覆盖率。该方法不仅提高了传输范围内的预约可靠性,更解决了专利“ZL200710017816.5”中预约信息无法被干扰区域内邻节点正确接收的问题。然而此方法中,当预约表中存在来自不同实时业务的不同预约信息时,节点将选择距离当前时刻最近的一条预约信息协作转发,其原理如图1,当节点发送数据包DATA1、DATA2和DATA3时,将协作转发距离当前时刻t1、t2和t3最近的预约信息1,当节点发送数据包DATA4时,将协作转发距离当前时刻t4最近的预约信息4。可以看出,预约信息1被协作转发3次的同时,预约信息2和预约信息3却没有被协作转发的机会。为了提高协作转发的公平性和对有限协作机会的利用率,本专利提出一种基于协作预约的预约信息选择方法,有效解决了上述问题。

发明内容

[0008] 现有的协作预约机制中,由于缺乏对所转发预约信息的合理选择,造成协作公平性欠佳,协作效率低下。本发明提供一种预约信息的优化选择方法,目的在于提高有限协作机会下的协作效率,提高预约可靠性。
[0009] 本发明以基本信道预约(即MACA/PR的改进方法)和基本协作预约(即申请号为201110045090.2的“基于协作预约的无线自组织网中实时业务的可靠传输方法”)为基础。为方便描述本专利的内容,下面先对基本信道预约和基本协作预约进行概述,随后给出本专利发明内容的技术原理:
[0010] 基本信道预约:非实时业务的所有数据分组和实时业务未预约的数据分组均采用IEEE 802.11 DCF方式(即竞争模式)接入信道。一旦某实时业务的数据分组在竞争模式下发送成功,其后续周期的数据分组转为预约模式接入信道。预约模式为:发送端直接发送数据分组,接收端收到数据分组后回复确认分组给发送端(确认分组为一种控制分组,用来告知发送端此次数据分组发送成功)。若预约模式下发送失败,实时节点转回竞争模式重发此分组,待发送成功后,下一周期的数据分组再次转为预约模式接入。预约模式的接入由3个机制来保证:a)实时节点在传输当前数据分组或确认分组的同时,预约信道的下周期某时段的接入权,并在该时段进行下周期数据分组和确认分组的传输;待预约时刻来临,若信道闲,实时发送端直接发送数据分组并再进行下一周期的信道预约,接收端收到后回复确认分组并再进行下一周期的信道预约,若信道忙,实时发送端采用竞争模式接入信道;b)所有侦听到实时数据分组或实时确认分组的邻节点把信道将在下周期某时段忙的信息(即预约信息)存入自己的预约表(每个节点维护记录着周围实时节点预约信息的预约表);c)任何节点以竞争模式接入信道之前,先判断自己此次传输所需的时段与预约表中各预约信息的预约时段有无重合,若无则接入信道,有则重新退避,避免对预约业务造成干扰。
[0011] 基本协作预约:以基本信道预约为接入方式,任何发送节点在发送数据分组或确认分组之前,从预约表中选取一条预约信息并将其转化为协作信息(选取方法为本专利发明内容),然后将其放入待发送分组中发送(若没有则不选取,直接发送分组)。实时节点还需要在待发送分组内放入自己的位置信息(以便其它节点转发此预约信息后,接收节点可以根据此位置信息来判断自己与预约发起者之间的距离,从而决定是否接受此协作信息)。对于接收到数据分组或确认分组的节点,无论目的地址是否为自己,都对其携带的协作信息进行判断:若自己的预约表中不存在此预约信息,且自己与预约发起者的距离小于协作门限(协作门限等于或略大于载波侦听门限),则将此协作信息存入预约表;否则忽略此协作信息。若分组中没有携带预约信息,则不作处理。
[0012] 本专利发明内容(预约信息选择方法):本方法遵循两条准则:一、被协作转发次数最少的预约信息具有被选择的优先权;二、距离当前时刻最近的预约信息具有被选择的优先权。具体描述为:首先寻找自己预约表中被协作次数最少的预约信息:若只有一条这样的预约信息,则选择其作为此次的协作对象;否则在这些预约信息中,选择距离当前时刻最近的一条作为此次的协作对象。每将某预约信息存入预约表,则认为此预约信息的被协作次数为0;每协作转发某预约信息一次,则认为这条预约信息的被协作次数加1。
[0013] 综上所述,本发明的主体思想为:协作转发其它实时业务的预约信息时,首先确保自己分配给预约表中各预约信息的协作机会尽可能平等,再在此基础上提高对预约可靠性要求最迫切的预约信息的被协作次数,从而利用有限的协作机会(协作机会随节点自身业务到达情况而定)对各预约信息进行协作转发。
[0014] 本发明解决其技术问题所采用的技术方案如下:
[0015] 实现情况:实时节点(以下简称S)发送实时业务的数据分组(以下简称RPK)或确认分组(以下简称RACK)以及非实时节点(与实时节点的处理方法相同,以下也简称S)发送非实时业务的数据分组(以下简称DPK)或确认分组(以下简称ACK)前,对预约信息的选择和协作信息的构造。
[0016] 步骤1:S更新自己的发送预约表和接收预约表(即删除这两张预约表中所有预约开始时间在当前时间之前的过时预约信息);
[0017] 步骤2:S检查自己的发送预约表和接收预约表,若两张预约表中均无预约信息,则直接发送该分组;若两张预约表中共有一条预约信息,转入子情况1;若两张预约表中的预约信息条数和大于1,转入子情况2;
[0018] 子情况1:选择此预约信息作为提取协作信息的对象,转入步骤3;
[0019] 子情况2:比较这几条预约信息被自己协作的次数,选择次数最少的一条作为提取协作信息的对象;若有多条预约信息被自己协作的次数均最少,则进一步比较它们的预约开始时间,选择预约开始时间最早的一条作为提取协作信息的对象;若预约开始时间也相同,则选择发送预约表中的预约信息作为提取协作信息的对象。转入步骤3;
[0020] 步骤3:S将提取的协作信息放入待发送分组中,转入步骤4;
[0021] 步骤4:S给预约表中此预约信息被自己协作的次数加1,发送该分组。
[0022] 本发明的有益效果是:当预约表中存在来自多个实时业务的预约信息对,本发明可以使得来自不同实时业务的预约信息被协作转发的机会更加均等,并在此基础上加强了对预约可靠性需求更加迫切的预约信息的协作转发,提高了协作效率,预约可靠性因此得到提高。而申请号为201110045090.2的专利仅根据预约开始时刻与当前时刻的最小时间差来选取被协作的预约信息,协作公平性较低:即对于那些只需少量协作次数即可避免冲突的预约信息,多次重复转发不仅浪费了信道资源(协作信息会增加分组的包长),也减少了其它预约信息被协作的机会。
[0023] 仿真实验中,所有发送节点均只承载一种业务流(实时业务或非实时业务),RPK的产生周期为0.03秒,DPK的产生时间间隔遵循指数分布。物理层采用两径模型,载波侦听门限dc为398米,协作门限dco为400米,阴影衰落因子取4.0,调制方式为64QAM,编码速率为2/3,其它主要参数按照IEEE802.11a标准给出。实验网络为无线自组织网络(500米×500米),所有发送节点(共50个,包含实时发送节点和非实时发送节点)随机分布在整个网络中,所有接收节点随机分布在距离其对应发送节点50米的范围内。分两种场景进行仿真实验:场景1以单个非实时发送节点平均每秒到达的数据分组(DPK)个数为横坐标,固定实时节点与非实时节点的个数比为1∶9(此时实时业务量一定);场景2以实时发送节点的个数(总发送节点个数一定)为横坐标,固定单个非实时节点平均每秒到达的DPK个数为33(此时DPK的产生时间间隔遵循均值为0.03秒的指数分布,非实时业务与实时业务的业务量相同,即本场景中无论横坐标为何值,整个网络的总业务量不变)。
[0024] 本仿真比较了基本预约机制、基本多步预约机制(将多步预约的思想应用于基本预约)、基本协作预约机制和采用本专利方案的协作预约机制这四种机制中,整个网络实时业务的平均发送失败概率PTFR,其数学定义及其相关计算见公式(1)-(3):
[0025] PTFR=(Nf/Nt)×100% (1)
[0026] Nt=NRTS+NRPK_rs+NRPK_rf (2)
[0027] Nf=Nt-RRPK (3)
[0028] 其中,Nf代表发送失败次数,Nt代表尝试发送次数,NRTS代表RTS的发送次数,NRPK_rs代表预约模式下RPK的发送次数,NRPK_rf代表预约模式下由于信道忙未能发送RPK的次数,RRPK代表成功收到RPK的次数。以上所有参数均来自网络中所有节点的相应参数之和。
[0029] 图2给出了场景1的仿真结果,即在实时业务量一定的情况下,实时业务的平均发送失败概率随非实时业务量(即实时业务的背景业务)变化的仿真结果。图3给出了场景2的仿真结果,即在网络总业务量一定的情况下,实时业务的平均发送失败概率随实时业务占总业务比例(设整个网络中,实时发送节点与非实时发送节点个数的比例为Rr/d)变化的仿真结果。
[0030] 依据仿真结果图2和图3,下面从协作预约带来的性能提升和各机制性能变化的总体趋势两个方面进行具体分析:
[0031] 协作预约带来的性能提升:可以看出,相较基本预约机制(单步和多步),协作预约始终可以为实时业务提供更好的预约接入性能(平均发送失败概率较低),且相较于基本协作机制(专利申请号为201110045090.2的方法),本方法的协作效果更佳。
[0032] 性能变化的总体趋势:场景1中,由于实时业务量一定,则对于不同的横坐标值,需要被协作转发的预约信息数量也一定。不难理解,基本预约机制中实时业务的性能随背景业务的加重而逐渐下降;协作预约机制中,随着背景业务的加重,虽然网络中的冲突也逐渐加重,但由于协作转发预约信息的机会随之逐渐增多,实时业务性能下降的趋势明显缓于基本预约机制。场景2中,在总业务量不变的情况下,随着Rr/d的提高,以预约模式接入信道的业务越来越多,由竞争模式带来的冲突越来越少,因此基本预约机制中实时业务的性能越来越好。协作预约机制中,在总业务量不变的情况下(即协作机会的数量基本不变),当Rr/d很小时,由于需要协作转发的预约信息很少,所有的协作机会都用来转发少量的预约信息,因此实时业务的性能很好;随着Rr/d的增大,需要转发的预约信息也逐渐增多,分配给每个实时业务的协作机会逐渐减少,致使实时业务的PTFR逐渐升高;当Rr/d约等于1时,虽然需要协作转发的预约信息更多了,但网络冲突有所降低(所有业务中,以竞争模式接入信道的比例越来越低),所以实时业务的性能在此区间内较为稳定;随着Rr/d的进一步加大,网络中的冲突越来越少(所有业务中,以预约模式接入信道的比例越来越高),因此,无论是否协作,实时业务的性能都较好。
[0033] 下面结合附图和实例对本发明进一步说明。

附图说明

[0034] 图1是基本协作预约机制中协作信息的选择方法
[0035] 图2是本专利中协作预约机制的有益效果(场景1)
[0036] 图3是本专利中协作预约机制的有益效果(场景2)
[0037] 图4是RPK和DPK的帧格式
[0038] 图5是RACK和ACK的帧格式
[0039] 图6是具体流程说明所对应的网络拓扑
[0040] 表1-表9是本专利具体流程说明中各时刻各节点的预约表内容

具体实施方式

[0041] 所有DPK和未预约的RPK均以IEEE 802.11 DCF模式(即竞争模式,采用RTS-CTS-DPK-ACK和RTS-CTS-RPK-RACK对话)接入信道。一旦某RPK在竞争模式下发送成功,后续RPK转为预约模式(采用RPK-RACK对话)接入信道;若预约模式下发送失败,则转回竞争模式重发此传输失败的RPK,若重发成功,后续RPK再次转为预约模式接入,若重发失败(即在重传门限内未能成功发送),下一周期的RPK仍以竞争模式接入信道,待发送成功后,后续RPK转为预约模式接入。
[0042] 信道预约由RPK与RACK的发送者发起:这两种分组携带有下周期的信道预约信息;通过对这两种分组的侦听,邻节点将预约信息记录在自己相应的预约表中。在预约表记录的时间段内,邻节点将避免使用信道。
[0043] 协作预约由RPK、DPK、RACK与ACK的发送者发起,在发送这类分组前,发送者按照一定的选取准则,从预约表中挑选一条预约信息,并将其中的部分信息作为协作信息放入待发送分组内一并发送(若预约表为空则直接发送该分组)。任何侦听到此分组的邻节点解析这条协作信息,若发现自己与预约发起者的距离小于协作门限,则将这条协作信息转化为预约信息,并存入自己相应的预约表(若自己预约表中已经存有与此协作信息相对应的预约信息,则什么都不做)。
[0044] 挑选预约信息进行协作转发时,首选被自己协作转发次数最少的预约信息,若有多条预约信息被自己协作转发的次数同时最少,则进一步在其中选择预约时刻最先到来的预约信息。
[0045] 预约表分为发送预约表和接收预约表两种。发送预约表记录RPK中携带的预约信息,表示这个RPK的发送者在某段时间内将使用信道;接收预约表记录RACK中携带的预约信息,表示这个RACK的发送者在某段时间内将使用信道。预约表中的预约信息按照时间顺序排列,预约开始时间距离当前时刻最近的预约信息排在预约表的第一条,以此类推。每条预约信息由四个元素组成:预约开始时间、预约结束时间、预约发起者位置和被协作次数。
[0046] 1.“预约开始时间”和“预约结束时间”代表此次预约占用信道的起始和终止时间。每一条预约信息的“预约开始时间”和“预约结束时间”构成一个预约时段,节点在竞争模式下完成退避后,需查询自己的预约表,若自己即将使用信道的时段与这些时段不重合,才可以接入信道,否则重新退避;
[0047] 2.“预约发起者位置”有两个用途:其一用于辨识预约表中某预约发起者因重传同一分组而产生的无效预约信息(前一条预约信息无效);其二用来供接收到此预约信息的节点计算自己与这个预约发起者的距离,从而判断自己的信号是否会对这个预约发起者的分组传输造成干扰。
[0048] 3.“被协作次数”代表自己协作转发此预约信息的次数;
[0049] 本方法兼容IEEE 802.11标准,工作在异步多跳无线通信网络下,支持分布式的工作方式,无需中心控制器的介入,可以作为无线网卡固件的一部分或作为网卡驱动程序的一部分加以实现。
[0050] 在“所采取的技术方案”部分,我们给出了本方法涉及算法的说明,下面结合实例,在基于IEEE 802.11a协议的Ad Hoc网络中对其进行详细说明。
[0051] 一、帧格式
[0052] 本专利中,RPK和DPK的帧格式见图4,RACK和ACK的帧格式见图5。
[0053] 其中,“是否协作”代表此分组是否携带有协作信息,有设为“1”,没有设为“0”;“协作类型”代表所携带的协作信息来自何种预约表,来自发送预约表设为“0”,来自接收预约表设为“1”(当“是否协作”为“0”时,“协作类型”设为“0”且不会被读取);“自身位置”供RPK和RACK的发送者放入自己的位置坐标(当“数据类型”为“0”时,此域设为全0或其它特殊值);“协作位置”表示此分组所携带的协作信息的预约发起者位置(当“是否协作”为“0”,此域设为全0或其它特殊值);“开始时差”表示此协作信息的预约开始时间距离当前时刻的时差(当“是否协作”为“0”,此域设为全0或其它特殊值)。本专利使用IEEE802.11 MAC头的帧格式中“帧控制”域的“协议”子域(2比特)的第一个比特位作为“是否协作”域;征用数据分组帧格式中的“地址4”域作为RPK和DPK帧格式的总扩展域的一部分,征用控制分组帧格式中的“NAV”域作为RACK和ACK帧格式的总扩展域的一部分。
[0054] 本专利采用以下方法标识RPK、DPK、RACK和ACK这四种分组的分组类型:IEEE802.11 MAC头的帧格式中,当“类型”域的值为“10”(即表明此分组为数据分组)时,“子类型”域中的值为“0000”表明此分组为DPK,由于“子类型”域中的值“1000-1111”是预留的,本方案征用其中的值“1000”表明此分组为RPK;当“类型”域的值为“01”(即表明此分组为控制分组)时,“子类型”域中的值“1101”表明此分组为ACK,由于“子类型”域中的值“0000-1001”是预留的,本方案征用其中的值“0000”表明此分组为RACK。
[0055] 本实例中,RPK和DPK的有效载荷为1024字节,忽略传播延迟,根据IEEE 802.11的物理层帧格式标准计算得到tRPK=197μs、tDPK=19μs、tRACK=24μs、tACK=24μs、SIFS=16μs,tRPK、tDPK、tRACK和tACK分别代表RPK、DPK、RACK和ACK的传输时长(为方便描述,这里假设无论是否携带协作信息,各分组的传输时长均为上述值。实际情况中,传输时长根据分组中携带有协作信息而略有增加,需依据携带协作信息后的实际包长来计算:传输时长=包长/传输速率)。
[0056] 二、具体操作流程
[0057] 1.网络拓扑设置
[0058] 考虑如图6所示的网络拓扑,其中,黑色实线圆圈代表网络中的节点,虚线圈代表R1’的载波侦听范围,节点间的单向箭头代表数据分组的发送方向,A(200,200)和B(300,200)代表非实时业务的发送端和接收端,R1(250,300)、R2(500,0)和R3(100,100)代表实时业务的发送端,R1’(250,400)、R2’(400,100)和R3’(0,0)代表实时业务的接收端(括号中的值代表该节点在网络中的坐标,单位为米)。网络中,A给B发送DPK,R1给R1’发送RPK,R2给R2’发送RPK,R3给R3’发送RPK。
[0059] dc为R1’的载波侦听范围半径(所有节点的载波侦听范围半径相同,本实验中,dc=400m),取协作门限dco=dc。可以看出,R1’的协作门限内覆盖了R1、A、B、R3、和R2’。设只有相邻节点之间能够正确接收分组,则这4对收发节点中:
[0060] A可以正确接收到B、R1和R3的分组,B可以正确接收到A、R1和R2’的分组;
[0061] R1可以正确接收到R1’、A和B的分组,R1’可以正确接收到R1的分组;
[0062] R2可以正确接收到R2’的分组,R2’可以正确接收到R2和B的分组;
[0063] R3可以正确接收到R3’和A的分组,R3’可以正确接收到R3的分组。
[0064] 2.操作过程
[0065] 设在时刻t=0.02s之前,网络中除RTS和CTS以外的分组传输为:R1、R2和R3分别在时刻0.001s、0.002s和0.003s发送RPK,R1’、R2’和R3’分别在时刻0.001213s、0.002213s和0.003213s发送RACK。则t时刻各节点的预约表内容为:A的发送预约表中有2条预约信息(预约发起者分别为R1和R3,见表1),接收预约表为空;B的发送预约表中有一条预约信息(预约发起者R1,见表2),接收预约表中有1条预约信息(预约发起者R2’,见表3);其他节点的预约表为空。
[0066] 以下分别对具体操作过程中的实现情况进行说明:
[0067] ●实现情况:非实时节点发送DPK前对预约信息的选择和协作信息的构造(以A在时刻tDPK1=0.025s为例)。
[0068] 步骤1:A更新自己的发送预约表和接收预约表。转入步骤2;
[0069] 步骤2:A检查自己的发送预约表和接收预约表,发现发送预约表中有2条预约信息(见表1),接收预约表为空,则转入子情况2:选择发送预约表的第1条预约信息作为提取协作信息的对象。转入步骤3;
[0070] 步骤3:A将提取的协作信息放入待发送分组中:设置DPK帧格式中的“类型”为“10”,“子类型”为“0000”,“是否协作”为“1”,“协作类型”为“0”,由于A是非实时节点,则“自身位置”为“0000 0000 0000 0000 0000 0000”,由于被协作节点的坐标为(250,300),则“协作位置”为“0000 1111 1010 0001 0010 1100”,由于预约开始时间0.031s距离当前时刻0.025s还有0.006s(即6000μs),则“开始时差”为“0001 0111 0111 0000”。转入步骤4;
[0071] 步骤4:A给预约表中此预约信息被自己协作的次数加1。发送该分组。此时A的发送预约表内容见表4。
[0072] 附:在时刻0.025197s,收到A携带有协作信息的DPK后,对协作信息的处理(有3个节点:B、R1、和R3都符合此情况,分别说明)。
[0073] 对于B:
[0074] B更新自己的发送预约表和接收预约表,发现无过时的预约信息;B将携带此协作信息的分组的发送时刻0.025s与协作信息中的开始时差0.006s相加,得到此协作信息的预约开始时间0.031s;B发现发送预约表中已经存在与此协作信息相同的预约信息(见表2),则忽略此协作信息。
[0075] 对于R1:
[0076] R1更新自己的发送预约表和接收预约表,发现预约表为空;R1将携带此协作信息的分组的发送时刻0.025s与协作信息中的开始时差0.006s相加,得到此协作信息的预约开始时间0.031s;R1发现自己就是此预约信息的发起者,则忽略此协作信息。
[0077] 对于R3:
[0078] R3更新自己的发送预约表和接收预约表,发现预约表为空;R3将携带此协作信息的分组的发送时刻0.025s与协作信息中的开始时差0.006s相加,得到此协作信息的预约开始时间0.031s;R3检查预约表,发现不存在与此协作信息的相同的预约信息,则进一步计算此预约发起者(250,300)与自身(100,100)的距离为250m,由于此距离未超过协作门限dco,则计算预约结束时间=预约开始时间0.031s+预约持续时间(预约持续时间=tRPK+SIFS+tRACK=0.031237s),并将预约开始时间0.031、预约结束时间0.031237和预约发起者位置(250,300)作为一条预约信息写入自己的发送预约表,此时R3的发送预约表内容见表2;R3检查预约表,发现不存在与这条新预约信息的预约节点位置相同,但预约开始时间不同的预约信息,处理结束。
[0079] ●实现情况:非实时节点发送ACK前对预约信息的选择和协作信息的构造(以B在时刻tACK1=0.025213s为例)。
[0080] 步骤1:B更新自己的发送预约表和接收预约表。转入步骤2;
[0081] 步骤2:B检查自己的发送预约表和接收预约表,发现发送预约表和接收预约表中各有1条预约信息(见表2和表3),则转入子情况2:选择发送预约表中的预约信息作为提取协作信息的对象。转入步骤3;
[0082] 步骤3:B将提取的协作信息放入待发送分组中:设置ACK帧格式中的“类型”为“01”,“子类型”为“1101”,“是否协作”为“1”,“协作类型”为“0”,由于B是非实时节点,则“自身位置”为“0000 0000 0000 0000 0000 0000”,由于被协作节点的坐标为(250,300),则“协作位置”为“0000 1111 1010 0001 0010 1100”,由于预约开始时间0.031s距离当前时刻0.025213s还有0.005787s(即5787μs),则“开始时差”为“0001 0110 1001 1011”。转入步骤4;
[0083] 步骤4:B给预约表中此预约信息被自己协作的次数加1。发送该分组。此时B的发送预约表内容见表5。
[0084] 附:在时刻0.025237s,收到B携带有协作信息的ACK后,对协作信息的处理(有3个节点:A、R1、和R2’都符合此情况,分别说明)。
[0085] 对于A:
[0086] A更新自己的发送预约表和接收预约表,发现无过时的预约信息;A将携带此协作信息的分组的发送时刻0.025213s与协作信息中的开始时差0.005787s相加,得到此协作信息的预约开始时间0.031s;A发现发送预约表中已经存在与此协作信息相同的预约信息(见表4),则忽略此协作信息。
[0087] 对于R1:
[0088] R1更新自己的发送预约表和接收预约表,发现预约表为空;R1将携带此协作信息的分组的发送时刻0.025213s与协作信息中的开始时差0.005787s相加,得到此协作信息的预约开始时间0.031s;R1发现自己就是此预约信息的发起者,则忽略此协作信息。
[0089] 对于R2’:
[0090] R2’更新自己的发送预约表和接收预约表,发现预约表为空;R2’将携带此协作信息的分组的发送时刻0.025213s与协作信息中的开始时差0.005787s相加,得到此协作信息的预约开始时间0.031s;R2’检查预约表,发现不存在与此协作信息的相同的预约信息,则进一步计算此预约发起者(250,300)与自身(400,100)的距离为250m,由于此距离未超过协作门限dco,则计算预约结束时间=预约开始时间0.031s+预约持续时间0.000237s=0.031237s,并将预约开始时间0.031、预约结束时间0.031237和预约发起者位置(250,300)作为一条预约信息写入自己的发送预约表,此时R2’的发送预约表内容见表2;R2’检查预约表,发现不存在与这条新预约信息的预约节点位置相同,但预约开始时间不同的预约信息,处理结束。
[0091] ●实现情况:非实时节点发送DPK前对预约信息的选择和协作信息的构造(以A在时刻tDPK2=0.03s为例)。
[0092] 步骤1:A更新自己的发送预约表和接收预约表。转入步骤2;
[0093] 步骤2:A检查自己的发送预约表和接收预约表,发现发送预约表中有2条预约信息(见表4),接收预约表为空,则转入子情况2:选择第2条预约信息作为提取协作信息的对象。转入步骤3;
[0094] 步骤3:A将提取的协作信息放入待发送分组中:设置DPK帧格式中的“类型”为“10”,“子类型”为“0000”,“是否协作”为“1”,“协作类型”为“0”,由于A是非实时节点,则“自身位置”为“0000 0000 0000 0000 0000 0000”,由于被协作节点的坐标为(100,100),则“协作位置”为“0000 0110 0100 0000 0110 0100”,由于预约开始时间0.033s距离当前时刻0.03s还有0.003s(即3000μs),则“开始时差”为“00001011 1011 1000”。转入步骤4;
[0095] 步骤4:A给预约表中此预约信息被自己协作的次数加1。发送该分组。此时A的发送预约表内容见表6。
[0096] 附:在时刻0.030197s,收到A携带有协作信息的DPK后,对协作信息的处理(有3个节点:B、R1、和R3都符合此情况,分别说明)。
[0097] 对于B:
[0098] B更新自己的发送预约表和接收预约表,发现无过时的预约信息;B将携带此协作信息的分组的发送时刻0.03s与协作信息中的开始时差0.003s相加,得到此协作信息的预约开始时间0.033s;B检查预约表,发现不存在与此协作信息的相同的预约信息,则进一步计算此预约发起者(100,100)与自身(300,200)的距离为224m,由于此距离未超过协作门限dco,则计算预约结束时间=预约开始时间0.033s+预约持续时间0.033237s,并将预约开始时间0.033、预约结束时间0.033237和预约发起者位置(100,100)作为一条预约信息写入自己的发送预约表,此时B的发送预约表内容见表4;B检查自己的预约表,发现不存在与这条新预约信息的预约节点位置相同,但预约开始时间不同的预约信息,处理结束。
[0099] 对于R1:
[0100] R1更新自己的发送预约表和接收预约表,发现预约表为空;R1将携带此协作信息的分组的发送时刻0.03s与协作信息中的开始时差0.003s相加,得到此协作信息的预约开始时间0.033s;R1检查预约表,发现不存在与此协作信息的相同的预约信息,则进一步计算此预约发起者(100,100)与自身(250,300)的距离为250m,由于此距离未超过协作门限dco,则计算预约结束时间=预约开始时间0.033s+预约持续时间0.000237s,并将预约开始时间0.033、预约结束时间0.033237和预约发起者位置(100,100)作为一条预约信息写入自己的发送预约表,此时R1的发送预约表内容见表7;R1检查自己的预约表,发现不存在与这条新预约信息的预约节点位置相同,但预约开始时间不同的预约信息,处理结束。
[0101] 对于R3:
[0102] R3更新自己的发送预约表和接收预约表,发现预约表为空;R3将携带此协作信息的分组的发送时刻0.03s与协作信息中的开始时差0.003s相加,得到此协作信息的预约开始时间0.033s;R3发现自己就是此预约信息的发起者,则忽略此协作信息。
[0103] ●实现情况:非实时节点发送ACK前对预约信息的选择和协作信息的构造(以B在时刻tACK2=0.030213s为例)。
[0104] 步骤1:B更新自己的发送预约表和接收预约表。转入步骤2;
[0105] 步骤2:B检查自己的发送预约表和接收预约表,发现发送预约表中有两条预约信息(见表4),接收预约表中有1条预约信息(见表3),则转入子情况2:选择接收预约表中的预约信息作为提取协作信息的对象。转入步骤3;
[0106] 步骤3:B将提取的协作信息放入待发送分组中:设置ACK帧格式中的“类型”为“01”,“子类型”为“1101”,“是否协作”为“1”,“协作类型”为“1”,由于B是非实时节点,则“自身位置”为“0000 0000 0000 0000 0000 0000”,由于被协作节点的坐标为(400,100),则“协作位置”为“0001 1001 0000 0000 0110 0100”,由于预约开始时间0.032s距离当前时刻0.030213s还有0.001787s(即1787μs),则“开始时差”为“0000 0110 1111 1011”。转入步骤4;
[0107] 步骤4:B给预约表中此预约信息被自己协作的次数加1。发送该分组。此时B的接收预约表内容见表8。
[0108] 附:在时刻0.030237s,收到B携带有协作信息的ACK后,对协作信息的处理(有3个节点:A、R1、和R2’都符合此情况,分别说明)。
[0109] 对于A:
[0110] A更新自己的发送预约表和接收预约表,发现无过时的预约信息;A将携带此协作信息的分组的发送时刻0.030213s与协作信息中的开始时差0.001787s相加,得到此协作信息的预约开始时间0.032s;A检查预约表,发现不存在与此协作信息的相同的预约信息,则进一步计算此预约发起者(400,100)与自身(200,200)的距离为224m,由于此距离未超过协作门限dco,则计算预约结束时间=预约开始时间0.032s+预约持续时间0.032237s,并将预约开始时间0.032、预约结束时间0.032237和预约发起者位置(400,100)作为一条预约信息写入自己的接收预约表,此时A的接收预约表内容见表3;A检查自己的预约表,发现不存在与这条新预约信息的预约节点位置相同,但预约开始时间不同的预约信息,处理结束。
[0111] 对于R1:
[0112] R1更新自己的发送预约表和接收预约表,发现无过时的预约信息;R1将携带此协作信息的分组的发送时刻0.030213s与协作信息中的开始时差0.001787s相加,得到此协作信息的预约开始时间0.032s;R1检查预约表,发现不存在与此协作信息的相同的预约信息,则进一步计算此预约发起者(400,100)与自身(250,300)的距离为250m,由于此距离未超过协作门限dco,则计算预约结束时间=预约开始时间0.032s+预约持续时间0.032237s,并将预约开始时间0.032、预约结束时间0.032237和预约发起者位置(400,100)作为一条预约信息写入自己的接收预约表,此时R1的接收预约表内容见表3;R1检查自己的预约表,发现不存在与这条新预约信息的预约节点位置相同,但预约开始时间不同的预约信息,处理结束。
[0113] 对于R2’:
[0114] R2’更新自己的发送预约表和接收预约表,发现无过时的预约信息;R2’将携带此协作信息的分组的发送时刻0.030213s与协作信息中的开始时差0.001787s相加,得到此协作信息的预约开始时间0.032s;R2’发现自己就是此预约信息的发起者,则忽略此协作信息。
[0115] ●实现情况:实时节点发送RPK前对预约信息的选择和协作信息的构造(以R1在时刻tRPK=0.031s为例)。
[0116] 步骤1:R1更新自己的发送预约表和接收预约表。转入步骤2;
[0117] 步骤2:R1检查自己的发送预约表和接收预约表,发现发送预约表和接收预约表中各有1条预约信息(见表7和表3),则转入子情况2:选择接收预约表中的预约信息作为提取协作信息的对象。转入步骤3;
[0118] 步骤3:R1将提取的协作信息放入待发送分组中:设置RPK帧格式中的“类型”为“10”,“子类型”为“1000”,“是否协作”为“1”,“协作类型”为“1”,由于R1是实时节点,且自身坐标为(250,300)则“自身位置”为“0000 1111 1010 0001 00101100”,由于被协作节点的坐标为(400,100),则“协作位置”为“0001 1001 0000 00000110 0100”,由于预约开始时间0.032s距离当前时刻0.031s还有0.001s(即1000μs),则“开始时差”为“00000011 1110 1000”。转入步骤4;
[0119] 步骤4:R1给预约表中此预约信息被自己协作的次数加1。发送该分组。此时R1的接收预约表内容见表8。
[0120] 附:在时刻0.031197s,收到R1携带有协作信息的RPK后,对协作信息的处理(有3个节点:R1′、A、和B都符合此情况,分别说明)。
[0121] 对于R1′:
[0122] R1′更新自己的发送预约表和接收预约表,发现预约表为空;R1将携带此协作信息的分组的发送时刻0.031s与协作信息中的开始时差0.001s相加,得到此协作信息的预约开始时间0.032s;R1′检查预约表,发现不存在与此协作信息的相同的预约信息,则进一步计算此预约发起者(400,100)与自身(250,400)的距离为335米,由于此距离未超过协作门限dco,则计算预约结束时间=预约开始时间0.032s+预约持续时间0.032237s,并将预约开始时间0.032、预约结束时间0.032237和预约发起者位置(400,100)作为一条预约信息写入自己的接收预约表,此时R1′的接收预约表内容见表3;R1’检查自己的预约表,发现不存在与这条新预约信息的预约节点位置相同,但预约开始时间不同的预约信息,处理结束。
[0123] 对于A:
[0124] A更新自己的发送预约表和接收预约表,发现发送预约表的第一条预约信息已过时(见表4),删除后发送预约表内容见表7;A将携带此协作信息的分组的发送时刻0.031s与协作信息中的开始时差0.001s相加,得到此协作信息的预约开始时间0.032s;A检查预约表,发现接收预约表中已经存在与此协作信息相同的预约信息(见表3),则忽略此协作信息。
[0125] 对于B:
[0126] B更新自己的发送预约表和接收预约表,发现发送预约表的第一条预约信息已过时(见表4),删除后发送预约表内容见表7;B将携带此协作信息的分组的发送时刻0.031s与协作信息中的开始时差0.001s相加,得到此协作信息的预约开始时间0.032s;B检查预约表,发现接收预约表中(见表8)已经存在与此协作信息相同的预约信息,则忽略此协作信息。
[0127] ●实现情况:实时节点发送RACK前对预约信息的选择和协作信息的构造(以R1′在时刻tRACK=0.031213s为例)。
[0128] 步骤1:R1′更新自己的发送预约表和接收预约表。转入步骤2;
[0129] 步骤2:R1′检查自己的发送预约表和接收预约表,发现接收预约表中有1条预约信息(见表3),则转入子情况1:选择此预约信息作为提取协作信息的对象。转入步骤3;
[0130] 步骤3:R1将提取的协作信息放入待发送分组中:设置RACK帧格式中的“类型”为“01”,“子类型”为“0000”,“是否协作”为“1”,“协作类型”为“1”,由于R1′是实时节点,且自身坐标为(250,400)则“自身位置”为“0000 1111 1010 0001 10010000”,由于被协作节点的坐标为(400,100),则“协作位置”为“0001 1001 0000 00000110 0100”,由于预约开始时间0.032s距离当前时刻0.031213s还有0.000787s(即787μs),则“开始时差”为“0000 0011 0001 0011”。转入步骤4;
[0131] 步骤4:R1′给预约表中此预约信息被自己协作的次数加1。发送该分组。此时R1的接收预约表内容见表8。
[0132] 附:在时刻0.031197s,收到R1′携带有协作信息的RACK后,对协作信息的处理(有1个节点:R1符合此情况,进行说明)。
[0133] 对于R1:
[0134] R1更新自己的发送预约表和接收预约表,发现无过时的预约信息;R1将携带此协作信息的分组的发送时刻0.031213s与协作信息中的开始时差0.000787s相加,得到此协作信息的预约开始时间0.032s;R1检查预约表,发现接收预约表中已经存在与此协作信息相同的预约信息(见表3),则忽略此协作信息。
[0135] 表1
[0136]预约开始时间 预约结束时间 预约发起者位置 被协作次数
0.031 0.031237 250,300 0
0.033 0.033237 100,100 0
[0137] 表2
[0138]预约开始时间 预约结束时间 预约发起者位置 被协作次数
0.031 0.031237 250,300 0
[0139] 表3
[0140]预约开始时间 预约结束时间 预约发起者位置 被协作次数
0.032 0.032237 400,100 0
[0141] 表4
[0142]预约开始时间 预约结束时间 预约发起者位置 被协作次数
0.031 0.031237 250,300 1
0.033 0.033237 100,100 0
[0143] 表5
[0144]预约开始时间 预约结束时间 预约发起者位置 被协作次数
0.031 0.031237 250,300 1
[0145] 表6
[0146]预约开始时间 预约结束时间 预约发起者位置 被协作次数
0.031 0.031237 250,300 1
0.033 0.033237 100,100 1
[0147] 表7
[0148]预约开始时间 预约结束时间 预约发起者位置 被协作次数
0.033 0.033237 100,100 0
[0149] 表8
[0150]预约开始时间 预约结束时间 预约发起者位置 被协作次数
0.032 0.032237 400,100 1