七. 信标网络中的CSMA-CA算法
相较于非信标网络的CSMA-CA算法,在信标网络中,CSMA-CA算法中有如下几点需要注意:
1.对齐要求
在时槽CSMA-CA中,PAN中每个设备的退避周期边界应与PAN协调器的超帧时槽边界对齐。
也就是说,每个设备的第一个退避周期的开始和信标传输的开始对齐。
the start of the first backoff period of each device is aligned with the start of the beacon transmission.
在信标的时槽CSMA-CA中,有以下边界对齐要求:
要求数据帧要在超帧开始处准备着手发送,这样才能保证第一个退避周期的开始和信标传输的开始对齐。
这里忽略上图step2前步骤的执行时间,当包装准备好数据帧后,要选择在信标传输(也即时槽0)处开始上面的CSMA-CA算法。
如下图所示:
- CCA应开始于退避周期的边界
- 设备的帧传输开始于退避周期的边界上。
2. CW
非信标网络的CSMA-CA算法中,没有使用CW变量:只要检测到信道空闲,就会立即发送数据。
非信标网络的CSMA-CA算法中,在退避延时后,要执行连续多少次信道评估为空闲,才会最终确认信道确实为空闲。
CW是一个倒计数值,它被初始化为2。当CCA结果为空闲,就会递减1;而一旦为忙,则会重置该值为初始值2;
上面的步骤,直到该值为0,才执行数据发送。
3. CAP期间整个传输事务完毕保证
MAC子层应当确保在随机退避之后,可以进行剩余的CSMA-CA操作,并且在CAP结束之前,整个事务被传输。
显然,假设CCA一次成功(NB =0时),那么random(2^BE - 1)aUnitBackoffPeriod + CCA时间 + 后续的数据发送时间 <= CAP持续时间。这是必须要保证的。
同时,之所以附带后续的数据发送时间,因为只有这样才能保证在CSMA-CA之后真正的数据发送过程中,也不会发生信道冲突。(注意,所有设备的CSMA-CA算法起始和信标帧对齐。)
如果如上random(2^BE - 1)aUnitBackoffPeriod + CCA时间 + 后续的数据发送时间 > CAP持续时间,这时要么BE参数不合理,要么超帧结构设计不合理。
当进行了多次(NB次,上面排除了NB =0 的情况)CCA和backoff,事务传输被截断。这分两种情况:
3.1 backoff > CAP
即退避周期数大于CAP中剩余的退避周期数,MAC子层在CAP结束时会暂停退避周期倒计时,并在下一个超帧CAP开始时恢复计数。
当多次backoff > CAP时的退避延时机制下图所示:
3.2 backoff < CAP,但后续DATA Transtion(or ACK)持续时间 > CAP
如果退避周期数小于或等于CAP中剩余的退避周期数,MAC子层将应用其退避延迟,然后估算(这需提前估算出的剩余步骤占用时间)是否可以继续。
如果剩余的CSMA-CA算法步骤,帧传输和任何确认帧能在CAP结束之前完成,MAC子层可以继续进行。
如果MAC子层能继续进行,它会请求PHY在当前的超帧中执行CCA。
如果MAC子层不能继续进行,它会等待,直到下一个超帧中的CAP开始时,并在再一次评估它是否能继续进行之前[step (2)],使用进一步的随机退避延时。
4.Battery life extension:电池寿命延长
4.1 概述
IEEE 802.15.4-2006中这样定义Battery life extension:
The Battery Life Extension (BLE) subfield is 1 bit in length and shall be set to one if frames transmitted to
the beaconing device during its CAP are required to start in or before macBattLifeExtPeriods full backoff
periods after the IFS period following the beacon. Otherwise, the BLE subfield shall be set to zero.
如果信标帧的超帧规格域中的Battery Life Extension为1,那么发送到协调器的帧,
它的CAP需要在macBattLifeExtPeriods完全退避期间或之前开始, 而macBattLifeExtPeriods紧接着信标帧的IFS之后。
在常规的CSMA-CA算法中,大部分功耗是由于接收机造成的,这是由于接收机需要长时间的监视周期。
在上面所示的CSMA-CA算法中,协调器在发送完信标帧后,各接收设备为了竞争信道,就会进行macMinBE值相关的随机退避。这对协调器来说,就需要保持一大段长时间的接收监听。
而在Battery Life Extension为1的信标帧中,会指示接收设备,将BE设置为尽可能的小,即min(2, macMinBE),这样尽量减少退避延迟,从而减少协调器的接受侦听时间,协调器可以在macBattLifeExtPeriods(如果没有侦听到数据)之后进入休眠以节能。
4.2 macBattLifeExtPeriods
macBattLifeExtPeriods:
In BLE mode, the number of backoff periods during which the receiver is enabled after the IFS following a beacon.
在紧接着信标帧的IFS之后,接收器使能期间的退避周期数。
协调器这里通知设备,它会在IFS之后macBattLifeExtPeriods个backoff周期后休眠(如果此期间没有收到任何数据)。
macBattLifeExtPeriods的值:
In BLE mode, the number of backoff periods during which the receiver is enabled after
the IFS following a beacon.
在跟随信标的IFS之后启用接收机的退避期数。
macBattLifeExtPeriods不像BE,它不是指数,它是(backoff)周期数。
该值取决于所支持的PHY,并且是下面三项的总和。
1):
它的值为2 ^ x -1,这里x是BLE mode模式下的最大macMinBE退避周期,此处
macMinBE为2,
注意退避周期数是0--(
2 ^ x -1)之间的随机数,所以其最大值为
2 ^ x -1,即
值为3。
2):
初始竞争窗口长度的持续时间(在初始化CW期间),它的值因此为2
。
CW为2,执行了两次的CCA,且每次CCA都需边界对齐,所以,这里值为2。
3): 前导字节段 + SFD,
舍入到整数个回退周期,为18symbols,舍入为1个backoff period(20symbols)。
综上所述,该值为3 + 2 + 1 = 6,这里为最小值。
4.3 退避计数和帧发送
退避倒计时只能出现在紧接信标帧的IFS结束后的第一个macBattLifeExtPeriods全退避周期内。
The backoff countdown shall only occur during the first macBattLifeExtPeriods full backoff periods after the end of the IFS period following the beacon.
在信标紧接着的IFS时段之后的第一个macBattLifeExtPeriod全退避周期中的一个周期内,开始帧传输。
and the frame transmission will start in one of the first macBattLifeExtPeriods full backoff periods after the IFS period following the beacon.
如果不满足上述条件,会延迟到下个超帧CAP的开始。这里延续了上面
3.2小节中的如下条件:backoff < CAP
上述中的"第一个(the first)",都是nb=0时的backoff,见上面“对齐要求”中的描述。
规范原文如下(IEEE 802.15.4-2006 P171):
In a slotted CSMA-CA system with the BLE subfield set to one, the MAC sublayer shall ensure that, after
the random backoff, the remaining CSMA-CA operations can be undertaken and the entire transaction can
be transmitted before the end of the CAP. The backoff countdown shall only occur during the first
macBattLifeExtPeriods full backoff periods after the end of the IFS period following the beacon. The MAC
sublayer shall proceed if the remaining CSMA-CA algorithm steps (two CCA analyses), the frame
transmission, and any acknowledgment can be completed before the end of the CAP, and the frame
transmission will start in one of the first macBattLifeExtPeriods full backoff periods after the IFS period
following the beacon. If the MAC sublayer can proceed, it shall request that the PHY perform the CCA in
the current superframe. If the MAC sublayer cannot proceed, it shall wait until the start of the CAP in the
next superframe and apply a further random backoff delay [step (2)] before evaluating whether it can
proceed again.
在BLE子字段设置为零的时槽CSMA-CA系统中,MAC子层应当确保在随机退避之后,
可以进行剩余的CSMA-CA操作,并且在CAP结束之前,整个事务被传输。
退避倒计时只能发生在紧接信标帧的IFS结束后的第一个macBattLifeExtPeriods全退避周期内。
如果剩余的CSMA-CA算法步骤、帧传输和任何确认帧能在CAP结束之前
完成,以及
帧传输开始于
信标紧接着的IFS时段之后的第一个macBattLifeExtPeriod完全退避周期中的一个周期内,
MAC子层将会继续进行。
如果MAC子层能继续进行,它会请求PHY在当前的超帧中执行CCA。
如果MAC子层不能继续进行,它会等待,直到下一个超帧中的CAP开始时,并在再一次评估它是否能继续进行之前[step (2)],使用进一步的随机退避延时。
当BLE =1 时,上面所述的几种情况下的CSMA-CA和数据发送机制见下图: