《无线传感器网络》第3讲 MAC协议
一、数据链路层与MAC协议概述
- 数据链路层核心任务 :管理 相邻节点间的通信,实现可靠、高效的数据传输。
- 数据组帧、媒体访问控制(MAC)、差错控制、链路管理。
- MAC协议核心作用:决定无线信道使用方式,实现节点合理共享信道,直接影响网络性能。
- WSN对MAC协议的新挑战 (源于WSN特征):
- 节点资源受限、高密度随机分布、动态自组织、以数据为中心。
- MAC协议设计重点 :
- 节能:避免能量浪费。
- 可扩展性:适应动态拓扑与规模变化。
- 网络效率:在吞吐量、公平性、延迟等方面取得平衡。
二、能量浪费主要原因与信道共享方式
- 四大能量浪费根源 :
- 冲突:多个节点同时发送导致数据碰撞。
- 串音:节点接收到并非发给自己的数据。
- 空闲监听:节点持续侦听信道但无数据收发。
- 控制开销:协议控制消息消耗的能量。
- 信道共享方式 :
- 点对点 、点对多点 (如蜂窝网)、多点共享(一跳广播,如对讲机)。
- WSN多跳共享广播信道特点 :
- 通信范围有限,冲突与节点地理位置相关。
- 带来了隐藏终端 和暴露终端问题。
三、关键问题与基础机制
1. 隐藏终端与暴露终端
- 隐藏终端 :在接收节点覆盖范围内,但不在 发送节点覆盖范围内的节点。
- 后果 :可能导致与发送节点的信号在接收端冲突。

当A和C检测互相检测不到无线信号时,都以为B是空闲的,因而都向B发送数据,结果发生冲突。
- 后果 :可能导致与发送节点的信号在接收端冲突。
- 暴露终端 :在发送节点覆盖范围内,但不在 接收节点覆盖范围内的节点。
- 后果 :其发送可能被不必要地抑制,浪费信道资源。

B向A发送数据,C想向D发送数据,但是由于B的缘故,C检测到媒体上有信号,不向D发送数据。但事实上B向A发送数据并不影响C向D发送数据。
- 后果 :其发送可能被不必要地抑制,浪费信道资源。
2. RTS/CTS握手机制
- 目的:解决隐藏发送终端问题,降低数据冲突概率。
- 流程 :发送方先发RTS ,接收方回复CTS,预约信道后再传数据。
- 局限 :
- 无法完全解决隐藏接收终端问题(单信道下)。
- 控制报文本身也可能冲突。

3. CSMA/CA(载波侦听多路访问/冲突避免)
- 核心思想:先监听,后发送;信道忙则随机退避。
- 两种载波侦听方式 :
- 物理载波侦听:检测信号能量。
- 虚拟载波侦听 :通过RTS/CTS中的NAV(网络分配向量)获知信道忙闲。
- 帧间间隔 :
- SIFS(最短):用于ACK、CTS等立即响应。
- DIFS(标准):用于普通数据帧发送前的等待。
- PIFS(中等):用于PCF模式,优先级高于DIFS。
- 退避机制 :
- 退避时间 = Random( ) × aSlotTime
- 竞争窗口CW :冲突后加倍(不超过CWmaxCW_{max}CWmax),成功则重置为CWminCW_{min}CWmin。
四、竞争型MAC协议详解
1. S-MAC(Sensor-MAC)
- 核心思想 :周期性睡眠/侦听,降低空闲监听能耗。
- 关键技术 :
- 周期性调度 :节点形成虚拟簇,同步活跃/睡眠周期。占空比 = 活跃时间 / 周期。
- 串音避免:邻居节点通过NAV获知通信时长,在此期间睡眠。
- 消息传递:将长消息分片,一次RTS/CTS预约整个传输时段,减少竞争开销。
- 自适应侦听 :邻居节点在通信结束后短暂唤醒,以接收可能的多跳数据,减少延迟累积。
- 优点:显著节能。
- 缺点:固定周期不适应流量变化;边界节点能耗高;延迟较固定。
2. T-MAC(Timeout-MAC)
- 改进点 :在S-MAC基础上,动态缩短活跃时间。
- 机制 :在活跃期内,若持续TA时间无"激活事件",则提前进入睡眠。
- 早睡问题及解决 :可能造成数据转发中断,采用 FRTS(未来请求发送)帧唤醒下一跳节点。
- 特点:比S-MAC更适应低流量,但FRTS增加开销。
3. B-MAC(Berkeley-MAC)
- 核心机制 :低功耗侦听 + 长前导码。
- 工作原理 :接收方周期性唤醒侦听信道;发送方先发送一个长于侦听周期的前导码,唤醒目标接收方后再发数据。
- 优点 :无需时间同步,实现简单。
- 缺点:发送延迟大,前导码能耗高,隐藏终端问题依旧。
4. Sift协议
- 应用场景 :事件驱动型网络,追求最快的前R个节点无冲突报告。
- 核心思想 :固定竞争窗口 ,节点在不同时隙的发送概率非均匀且递增。
- 概率公式 :Pr=(1−α)αCW1−αCW⋅α−r(r=1,...,CW)(α为分布参数,0<α<1)P_r = \frac{(1 - \alpha)\alpha^{CW}}{1 - \alpha^{CW}} \cdot \alpha^{-r} \quad (r = 1, ..., CW)(α为分布参数,0<α<1)Pr=1−αCW(1−α)αCW⋅α−r(r=1,...,CW)(α为分布参数,0<α<1)
- 目标:让竞争节点在窗口前部快速"脱颖而出",减少冲突与延迟。
- 特点:实时性好,适合空间相关事件,但节能非首要目标。
五、分配型(调度型)MAC协议详解
1. 多址接入方式
- FDMA:频分多址,划分频段。
- TDMA :时分多址,划分时隙(超帧 结构)。WSN常用。
- CDMA:码分多址,用编码区分。
2. TRAMA(Traffic-Adaptive Medium Access)
- 核心思想 :基于TDMA,根据两跳内邻居流量信息,分布式计算无冲突发送调度。
- 时间帧结构 :交替的随机接入时段 (交换邻居信息)和分配接入时段(数据传输)。
- 三大组件 :
- NP:邻居协议,维护两跳邻居表。
- SEP:调度交换协议,产生并广播基于流量的调度表。
- AEA:自适应选举算法,决定每个时隙节点的状态(发送、接收、睡眠)。
- 时隙优先级计算 :
Priority(u, t) = hash(u ⊕ t)。 - 优点:无冲突,能效高。
- 缺点:算法复杂,存储开销大,需要时间同步。
3. DMAC
- 应用场景 :数据采集树(数据单向流向Sink)。
- 核心思想 :交错唤醒调度,使路径上节点像链条一样依次活跃。
- 关键技术 :
- 交错唤醒:下层节点比上层节点提前一个时段(μ)唤醒,实现连续转发。
- 自适应占空比 :通过数据帧中的 "More Data"标志,请求路径上节点增加活跃时间。
- 数据预测:父节点收到数据后,预测子节点还有数据,延长自身接收时间。
- MTS帧机制:解决竞争失败子节点的"早睡"和干扰问题,传播占空比调整请求。
- 优点 :低延迟,适用于汇聚型数据流。
- 前提:需要时间同步和稳定的树状路由。
六、协议对比与小结
| 协议类型 | 代表协议 | 核心机制 | 优点 | 缺点/适用场景 |
|---|---|---|---|---|
| 竞争型 | S-MAC | 周期性睡眠/监听 | 节能效果好 | 延迟固定,不适应流量变化 |
| T-MAC | 自适应超时提前睡眠 | 比S-MAC更适应低负载 | 早睡问题,FRTS增加开销 | |
| B-MAC | 长前导码+异步侦听 | 无需同步,简单 | 延迟大,前导码开销大 | |
| Sift | 非均匀概率竞争 | 事件响应快 | 节能非首要目标,适合事件驱动 | |
| 分配型 | TRAMA | 基于流量的TDMA调度 | 无冲突,高能效 | 复杂,需同步,存储开销大 |
| DMAC | 数据采集树交错唤醒 | 多跳传输延迟极低 | 需同步和稳定路由树 |
- 竞争型MAC特点 :简单、扩展性好、适应动态变化,但在能量与延迟之间需要权衡。
- 分配型MAC特点 :冲突少、控制开销低、延迟确定,但需要严格时间同步,对拓扑变化较敏感。
记忆要点:
- 能量浪费四原因:冲突、串音、空闲听、控制开销。
- 隐藏终端 :"收得到你,收不到我发方";暴露终端:"收得到我发方,收不到你"。
- S-MAC四大技:周期睡、避串音、消息传、自适应听。
- DMAC核心:交错醒、链式传、树状流量快又省。
习题
- 以下哪种情况会造成无线传感器网络能量的浪费?(ABC)
A. 冲突重传 B. 串音 C. 空闲监听 D. 发送消息
发送消息不算是能量的浪费。
四大能量浪费根源:
- 冲突:多个节点同时发送导致数据碰撞。
- 串音:节点接收到并非发给自己的数据。
- 空闲监听:节点持续侦听信道但无数据收发。
- 控制开销:协议控制消息消耗的能量。
-
将CSMA/CA协议直接用于单信道、低速率无线传感网络应用,会有 idle listening 时间过长的问题,如何解决?
使用休眠唤醒机制。
-
(单选题) 在如图所示由4个节点组成的网络中,相对于C与B的通信而言,隐终端节点是?(A)

A. A
B. B
C. C
D. D
本题中:C向B发送数据,A检测不到信号传输,因为节点B空闲,也向B发送数据,导致冲突。因此,对于本题中的C与B的通信,A节点是隐终端节点。
隐藏终端 :在接收节点覆盖范围内,但不在发送节点覆盖范围内的节点。
- 后果:可能导致与发送节点的信号在接收端冲突。
当A和C检测互相检测不到无线信号时,都以为B是空闲的,因而都向B发送数据,结果发生冲突。
- (多选题) 以下关于S-MAC协议的关键技术的描述中,正确的是(ABCD)
A. 采用周期性的休眠/侦听方法减少空闲侦听带来的能量损耗
B. 当有节点收发数据时,与此无关的邻居节点进入休眠减少冲突与串音带来的能量损耗
C. 采用自适应的侦听机制,减少消息传输延迟
D. 采用消息传递机制,减少控制消息带来的能量损耗
S-MAC(Sensor-MAC)
- 核心思想 :周期性睡眠/侦听,降低空闲监听能耗。
- 关键技术:
- 周期性调度 :节点形成虚拟簇,同步活跃/睡眠周期。占空比 = 活跃时间 / 周期。
- 串音避免:邻居节点通过NAV获知通信时长,在此期间睡眠。
- 消息传递:将长消息分片,一次RTS/CTS预约整个传输时段,减少竞争开销。
- 自适应侦听 :邻居节点在通信结束后短暂唤醒,以接收可能的多跳数据,减少延迟累积。
- 优点:显著节能。
- 缺点:固定周期不适应流量变化;边界节点能耗高;延迟较固定。
-
(简答题) 为如图所示的无线传感器网络构造一个基于TDMA的无冲突调度表时,如果当前时隙是节点C的时隙,基于让超帧长度尽量短的原则,请给出其他节点的状态。节点的状态包括:发送态,接收态,休眠态。

A:休眠态
B:接收态
C:发送态
D:接收态
E:接收态
F:发送态
-
(简答题) 基于上图,举例说明,如何让节点获得它两跳邻居集合。
- 每个节点定期进行广播 。例如C节点:"我是C节点我是C节点",C节点的一跳邻居{B, D}可以收到该报文。同理,B还能收到A的广播报文,因此B知道它的一跳邻居集合为{A, C}。
- 每个节点交换邻居列表。例如B节点:"我是B节点~我的一跳邻居节点是{A, C}~",B节点的一跳邻居{A, C}可以收到该报文。因此,C节点收到B的报文,就得知:B是C的一跳邻居,B的一跳邻居有{A, C},则节点C就得知,A是B的一跳邻居但不是C的一跳邻居,可得A是C的两跳邻居。
- 综合消息构建两跳邻居表。C节点收集信息:从B获知A是两跳邻居;从D获知E是两跳邻居。所以C的两跳邻居集合为{A, E}。