一. 信道接入基础
1.概述
如果只是一个设备向另一个设备发送数据时,此时设备可以独占所有信道资源。
但是当多个设备使用单一信道进行通信时,就会发生冲突。
信道接入的主要目的就是解决多个设备访问单一信道时信道竞争。
信道接入是MAC层的核心功能。
2. 信道接入的分类:
2.1 固定信道接入技术:
每个设备的通信都占用确定的信道资源,即使信道资源是动态分配的,在某个时刻设备占据的资源是固定的。
让不同设备使用不同频率进行通信,这样由于设备对自身工作频率之外的信号进行滤波,
可以把其他不相关的信号去掉,同时通信不会发生冲突。
- 时分多址接入TDMA技术:
让不同设备在不同时间进行通信,如每100ms分成10个时隙,分别给10个设备进行通信,
从宏观上看,仿佛各个设备是同时进行通信。
- 其他固定信道接入方式请参见相关资料。
2.2 随机信道接入技术:
设备通信并不占据固定的资源,为了安排不同设备之间对资源的使用,通常通过“竞争”的过程来完成。
所有的随机信道接入技术都需解决信道冲突的问题。
随机接入中需要解决的几个问题:
a).节点设备什么时间能访问介质?
b).如果介质处于忙的状态,节点应该怎么做?
c). 各个节点设备如何确定数据传输是否已经成功?
d). 如果一旦发生了冲突,应该怎么解决?
随机信道接入分为:
- pure ALOHA和S-ALOHA
在ALOHA中,在帧发送过程中,利用应答来判断是否发生了通信冲突。如果应答失败,就认为产生了冲突,则随机延时一段时间再次发送。
- CSMA(1坚持、p坚持、非坚持)
在1坚持-CSMA中,发送数据前,发送设备会检查信道是否空闲,如果空闲,则发送帧。否则,如果忙,则坚持监听,直到空闲为止。
在非坚持-CSMA中,发送数据前,发送设备会检查信道是否空闲,如果空闲,则发送帧。否则随机等待一段时间,然后再次检查信道是否空闲。如此重复。
在p坚持-CSMA中,监听到信道忙时仍然坚持听下去,直到空闲为止。当听到信道空闲时,以概率p发送数据。(p=1时,即为1坚持)
- CSMA-CD
CSMA-CD中的CSMA使用上面的1坚持-CSMA。直到信道空闲,发送数据的同时,站点继续监听网络通信中有没有其他站点在同时传输数据。
如果有,则会检测到冲突。冲突后,所有站点都会停止传输,然后各自等待一个随机产生的退避时间(backoff)后重发。
- CSMA-CA
CSMA-CA在802.11中被完整使用。它主要是为了解决“隐藏终端”和“暴露终端“问题。
发送站点会在发送数据前发送一个短的控制帧RTS(Request To Send),目的站点收到RTS请求后会返回一个相应控制帧CTS(Clear To Send),发送站点收到CTS响应后就可以发送其数据。
- RTS和CTS又叫握手信号。
CSMA-CA的避让策略是在发送前进行的,当节点发送RTS时,先在初始退避窗口内随机退避一段时间,退避计数器为0时则侦听信道。
如果信道空闲,则发送数据。否则将退避窗口加大继续随机退避,每次失败后的退避窗口将按照2的指数级增加,经过多次的尝试,直到数据发送出去。
注意:IEEE 802.15.4没有普遍支持“请求到应答/空闲到发送”(RTS/CTS)握手机制。
二. 信标网络和非信标网络:
1.信标网络
周期性地发送信标帧的网络,称为信标网络。
信标网络中采用超帧结构,时隙(TS)以及时隙保障机制(GTS),来管理数据的传输。
而超帧结构和时隙保障机制是通过信标帧来定义和管理的。
超帧结构可以看做基于时间片的内存结构体,此时间片的基本单位(周期)称为时隙(Time Slot),
而
时隙的持续周期及其构成划分都是由信标帧来定义解释。
超帧结构分活跃期和非活跃期,活跃期又分为CAP和CFP。所有的传输都是在活跃期完成的。
非活跃期可用来设备休眠,在以电池为电源的设备中节省能耗。
在活跃期中,CAP是竞争的信道接入,而CFP是非竞争的信道接入。
因为信道竞争,所以在超帧结构的CAP期使用基于时隙的CSMA-CA机制来进行信道接入。
而CFP是非竞争的时分复用,所以在超帧结构的CFP期使用TDMA机制来进行信道接入。
GTS时隙保证机制是实现时分复用的基本管理单元,它包含在信标帧中,用来管理CFP中时分时隙的划分和设备占用分配。
总的来说,在信标网络中,采样两种信道接入机制,即基于时隙的CSMA-CA和(基于时隙的)TDMA。
两种信道接入机制都是为了避免传输冲突,提高传输的可靠性。
在信标网络中,CSMA-CA不用于发送信标帧、确认帧或CFP中的数据帧。
因为在信标网络中,信标帧总是在第一个时隙发送,所以,信标帧无需CSMA-CA。
The CSMA-CA algorithm shall not be used for the transmission of beacon frames in a beacon-enabled PAN,
acknowledgment frames, or data frames transmitted in the CFP.(IEEE 802.15.4-2006 7.5.1.4)
2.非信标网络
不包含信标的网络称为非信标网络。非信标网络并非没有信标帧,而是这种信标帧是按需无周期性发送的。
非信标网络可以看做是信标网络的特例(即信标间隔不定期)。
在后面我们还会看到,当信标帧中超帧规格子域BO=15时,信标周期变成无限长,超帧的结构此时就没有作用了,
此时的信标网络就成为了非信标网络。
非信标网络中没有超帧结构,因此没有时隙(TS)和时隙保证(GTS),没有CAP和CFP,所以也没有TDMA机制。
在非信标网络当中,所有信息发送的信道接入采取CSMA-CA的方式,包括对信标请求响应发送的信标,
也是以CSMA-CA的方式发送。
三. CSMA-CA机制中的三个变量:NB,CW和NB
1. NB,CW和NB
在信道竞争的访问中,设备在每次发送数据之前,都要使用CAMA-CA算法进行通道空闲评估(CCA)。
CSMA-CA的算法核心是,在每次信道空闲评估时,都需要一段随机时间的退避延时,然后才进行信道空闲评估。
如果此时通道为空闲,则执行发送。而如果此次通道空闲评估为忙,那么,会再次重复前面的延时步骤。
直到重复若该次该项操作。
这里有两个参数值:延时的持续时间和进行如上评估重复的次数。
每个设备应为传输维持三个变量:NB,CW和BE。其中BE是延时长短的变量参数,时间长度为random((2
BE
- 1) 个基本单位时间。
而NB则是评估重复次数的变量。
另外还有一个变量CW,它只用于基于时隙的信标网络CSMA-CA算法中。CW的含义是,在退避延时后,
要执行连续多少次信道评估为空闲,才会最终确认信道确实为空闲。另外要注意此时的CCA要在时隙的边界进行。
NB和CW的单位都为次,BE相联系的backoff的单位则为aUnitBackoffPeriod。IEEE 802.15.4-2006中规定,
aUnitBackoffPeriod为20个symbol时间长度。
IEEE 802.15.4-2006对NB,CW和NB这三个变量的定义如下:
- NB是本次传输时,CSMA-CA算法所需退避周期的次数。该值在每一次新的传输前初始化为0.
- CW是竞争窗口长度。在传输开始之前需要清除通道活动(即通道空闲)的退避周期数。它在每次传输前
被初始化为2,每次通道被评估为忙时,重置为2次。CW仅仅使用在时隙CSMA-CA中。
- BE为退避指数,在空闲信道评估(CCA)之前,设备应等待的退避周期数。在非时隙的系统中,以及BLE域为0的
时隙系统中,此值应被初始化为macMinBE。而在BLE域为1的时隙系统中,此值应被初始化为2和macMinBE两者之间的最小者,
即min(2, macMinBE)。
而最终的退避周期是介于0 -- (2BE - 1)之间的一个随机数。
注意如果macMinBE设置为0,在这个算法的第一次迭代期间,冲突避免将会被禁用。
2. MAC子层相关常量说明:
- aUnitBackoffPeriod是MAC sublayer constants,其值为20,见IEEE 802.15.4 P159
所以在2.4G网络中,aUnitBackoffPeriod = 20 x 16us。其中的16us为每符号时间(1s / 62.5ks)。
- BE、NB相关的变量见下表:IEEE 802.15.4-2006 P164 Table 86—MAC PIB attributes
Attribute
|
Range
|
Default
|
macMinBE
|
0–macMaxBE
|
3
|
macMaxBE
|
3–8
|
5
|
macMaxCSMABackoffs
|
0-5
|
5
|
四. 非信标帧网络中的CSMA-CA算法
如上所述,非信标网络中没有时隙的概念,和信标网络中CSMA-CA的算法最大的不同是:
无需时隙边界对齐和执行CW中的CCA检测。一经检测到通道为空闲,就立即进行数据发送。
我们将在接下来的基于时隙信标网络的CSMA-CA算法中看到这种差别。
在非信标帧网络中的CSMA-CA算法步骤如下图:
上图中,BE = min(BE + 1, macMaxBE)的功能是:
BE的值会每次递增1,但确保其值不超过最大值macMaxBE。
帧数据发送流程用C语言描述如下:
#define macMinBE 3
//默认值
#define macMaxBE 5
//默认值
void
RandomBackoffDelay
(
uint8 BE
)
{
uint8 x
;
x
=
rand
()
%
(
2
^
BE
);
//rand()%n的范围是0~n-1;
Delay
(
x
);
bool
TX_With_Unslotted_CSMA_CA
(
void
)
{
NB
=
0
;
BE
=
macMinBE
;
for
(;;)
{
RandomBackoffDelay
(
BE
);
CCA
();
if
(
chnnl_idle
)
{
return
SendFrame
(...);
}
else
{
NB
++;
BE
=
min
(
BE
+
1
,
macMaxBE
); //注意,BE的值在此被改变;
if
(
NB
>
macMaxCSMABackoffs
)
{
return
FAILURE
;
}
}
}
}
五.信标帧格式
1.Superframe Specification field,超帧域
- bit0-3 Beacon Order:信标阶,见第六节中的描述
- bit4-7 Superframe Order:超帧阶,见第六节中的描述
- bit8-11 Final CAP Slot:最后CAP时隙,见第六节中的描述
- bit12 Battery Life Extension (BLE):电池寿命延长。该子域的使用见下面章节"信标网络中的CSMA-CA算法"
- bit13 Reserved:保留
- bit14 PAN Coordinator:协调器标志位,如果信标帧由PAN协调器发送,则置为1。否则为0.
注意在IEEE 802.15.4规范中,协调器分为PAN协调器和协调器。即相当于zigbee中的协调器和路由器。
- bit15 Association Permit:关联允许位。如果允许关联,则为1,否则为0。参见“设备关联”的相关内容。
2.GTS fields:保证时隙域
参见下面的GTS小节内容。
3.Pending address fields:未决地址域
- Pending Address Specification field(上图中为给出其所构成的各个子域图表) :未决地址规范域
- Number of Short Addresses Pending:未决短地址数
- Reserved:保留
- Number of Extended Addresses Pending:未决长地址数
- Reserved :保留
- Address List field :地址列表
六.信标网络中的超帧(Superframe)
1.概述
只有信标网络中才有超帧,超帧是实现时隙机制的基础。
我们可以将超帧比作一个较高层的时钟,它将时间分片,一个分片包含一个或多个基本单位时间,分片单位被称为时隙(TS-Time Slot)。
在信标网络中,设备将处理收发数据事务的时间划出一个周期,该周期定义为超帧。在此周期内,设备可进行数据收发处理和节能休眠。
超帧并非严格意义上的内存(空间)结构,它其实是一个周期性的时间结构。
超帧由协调器来定义,并使用信标帧来定义解释其内部结构,信标帧中包含的超帧定义解释域称为超帧规范(Superframe Specification)。
在信标网络中,协调器将周期的发送信标帧进行广播,各终端(包括其他协调器)接收该信标帧,通过其中的超帧规范来构建(或同步)本地的超帧影子副本。由于协调器是在超帧的第一个时隙(时隙0)来发送信标帧,接收器可以此进行超帧开始边界(也即时间同步)的同步。
2.超帧结构
超帧结构如下图:
超帧分为活跃期和可选的非活跃期两大部分,整个超帧的大小(持续时间,即BI)由超帧规范中的BO(Beacon Order,信标阶)来定义。
- 在活跃期,协调器进行数据发送、或者打开接收机接收数据、或者准备接收数据;
- 而在非活跃期,协调器可以关闭收发机以节省能量。
2.1 信标帧中的超帧规格域(Superframe Specification):
超帧规范为信标帧的子域(详见下面信标帧结构图)。
超帧结构的大小边界由超帧规格域进行定义:
- bit0-3为信标阶BO(Beacon Order),确定了信标间隔BI。
- bit4-7为超帧阶SO(Superframe Order),确定了超帧的持续时间SD。
- bit8-11为最后CAP时隙,指示了竞争接入时期的结束位置。
下面重点对超帧中的活跃期进行描述。
2.2 活跃期和时隙0
活跃期包括CAP和CFP。
CAP:竞争接入时期(Contention Access Period),CAP紧接着信标帧(见上面的超帧结构图)。
CFP:非竞争接入时期(Contention Free Period)
CAP和CFP的边界使用超帧规范(Superframe Specification)子域中的Final CAP Slot来定义。
在CAP内,使用CSMA-CA机制进行信道接入。
在CFP内,则使用TDMA机制进行信道接入,此时使用GTS来保证TDMA的实现。
活跃期分为16个大小相等的时隙,每个时隙的大小(持续时间)由超帧规范中的SO来定义。
在时隙0的开头(亦即超帧的开头),协调器发送自己的信标帧。
- 信标中包含了网络的各种信息,用于新设备加入网络。
- 又由于它是周期性发送的,可用于进行设备之间的同步。
信标帧与时隙0之间的关系:
802.15.4规定,信标帧从时隙0的起始位置开始发送。但并不等于说“信标帧只能在时隙0发送,或时隙0只能发送信标帧”。
不同参数设置下,超帧的活跃期的长度是不同的,因此时隙的长度也会产生变化:
- 时隙较短时,信标帧占用的时间可能会超过时隙0;
- 时隙较长时,时隙0在传输完信标帧之后,还可以用剩余的时间发送其它数据。
2.3 活跃期构成要素的持续时间和它们之间的关系