3.2 介质访问控制协议


3.2 介质访问控制协议

本节摘要:MAC(介质访问控制)层决定"多个节点共享无线信道时谁在何时说话"。它在 WSN 里尤其难:既要躲冲突、又要避空闲监听和过载这两笔"白花钱"。本节讲清冲突、空闲监听、过载三类开销,并重点解剖同步(S-MAC/T-MAC)与异步(B-MAC/X-MAC)两类占空比 MAC,最后给出选型建议。

物理层把"一比特怎么飞"定了,可几十个邻居同时对着同一个信道挥手,当然就撞车。MAC 层就是这台"红绿灯"。

信道接入的问题:凭什么人人都想说话

无线信道是共享介质,两个邻居同时发包就会冲突、都收不到,还得重来——重来又花一次传输。传统以太网的 CSMA/CD 靠"边发边听"来避让,但 WSN 没有有线信道,靠 CSMA/CA(先听后发 + 随机退避)来减少撞车。仅此还不够,因为 MAC 在 WSN 里要处理的,还有两类"隐性浪费":

  • 空闲监听:收发器开着等数据,却什么也没来——白开着烧电。
  • 过载:收到了与自己无关的包。虽然可以地址过滤,但接收本身已经花了电。

可以说,WSN 的 MAC 层是在"躲冲突、避空闲、防过载"三件事之间找平衡,而后两件才是它能省出大头的空间。

占空比:把"常开"改成"有节律地醒"

上一节物理层已埋下伏笔——发送窗口越短越省电。MAC 层面落实这一点的手段叫占空比(duty cycling):节点周期性在"睡眠"与"监听/活动"之间切换。它分两大流派。

同步占空比 MAC(S-MAC、T-MAC):邻居们先同步彼此的睡眠/唤醒时刻,约定同一个时间片一起醒来通信。好处是确定、可控;坏处是有同步开销与邻居发现成本。T-MAC 进一步用自适应活动窗口,忙时才延长活跃期。

异步占空比 MAC(B-MAC、X-MAC):每个节点独立安排唤醒节奏,靠"前导码"或"探测终句"让对方来找自己。它不用全局同步、扩展性好,典型代表是 B-MAC 用长前导码兜住错位的唤醒,X-MAC 用带探测与确认的前导优化来减少无效监听。

图标题:异步占空比中两节点的唤醒-握手-传输时序

两个节点各自节奏不同步,靠唤醒/探测信号碰头,随后一次性完成传输,再各自回去睡觉。

为什么说"少开、精准开"比"压低功率"更省

前面在通信模块和物理层都反复强调同一件事:空闲监听是最大的隐性浪费源之一。 MAC 层用占空比把"监听窗口"压到很小,等于把"白开门等客"的时间砍到最低。相比之下压低发射功率收益有限。这就是为什么 MAC 层的设计直接决定整个网络能耗水平。

为什么说"少开、精准开"比"压低功率"更省

图标题:占空比睡眠-监听时序

选型:同步还是异步

考量 同步(S-MAC/T-MAC) 异步(B-MAC/X-MAC)
时延 较可控 需等待对方唤醒
同步开销
可扩展性 一般
适用 规模可控、要确定性 大而动态、节点多

我的接法:要确定性和按时上报选同步;节点多、拓扑总变、想省掉同步维护选异步。没有绝对优劣,要看业务节奏。

一个具体案例:X-MAC 的两次优化

以 X-MAC 为例,它对"长前导码"做了两个优化节省能量:第一,前导被切成小节并带目标地址,替代一整段长前导;第二,目标节点可在探测间歇回一个确认,发送方一看就停止继续发前导、立刻传数据。这样既减少了发送方的无效发射,也让接收方不必干等整段长前导,双方都省下一截时间与电。这正是"少开、精准开"的典型实践。

⚠️ 常见坑:只优化"发送"却无视"接收"。资深工程师都知道占空比要同时压低收发两端的开窗时长,接收的无效监听浪费常常被低估。

退避与重传:看不见的重复记账

很多新手把 MAC 想成"发了就完了",其实冲突之后的退避与重传也是一笔可观的隐形成本。模拟一个高密度的仓库测温网:

假设 200 节点同时段都想上报: 全直接发 → 大量撞车 → 重传 → 再撞 → 网络拥塞、电费翻倍 有退避 → 每个节点随机拖一小段再试 → 冲突率陡降 → 总电费反而更省

这里的直觉反直觉:"多等一小会儿"比"立刻抢发"更省电。 因为重传要重复整段收发开销,而一次成功发送只花一次。所以退避算法不是"为了堵车而堵车",而是用一点点延迟去换冲突带来的反复开销。设计上报节奏时,也得故意让不同节点错开,避免"午夜全场齐醒"的撞车潮。

T-MAC 的自适应窗口:忙才多开,闲就早睡

同步派里 T-MAC 更聪明,它不固定活动时长,而是根据"还有没有后续流量"动态延长或缩短活动窗口

固定窗口: 无论忙闲都醒同样长 → 闲时白白空守 自适应: 超时仍无数据 → 提前睡; 有数据 → 再续一段时间保持活跃 收益: 在低业务时砍掉无效监听, 在高业务时保持吞吐

这给我们的启示是:MAC 不是越"简单固定"越好,而是能感知"现在忙不忙"进而调节开关的机制更省。做业务上报节奏时,把"低峰期少开、高峰期多开"也当成一条软需求去设计,往往比死等固定周期更落地。

把 MAC 当成"作息表",而不是协议名

放下那些缩写,MAC 层真正想解决的问题就一个:几十个邻居共享一个无线信道,怎么让它们"错峰说话、闲时闭嘴"。 同步派用"大家同一个作息",异步派用"各自节奏靠探测碰头",X-MAC 的精巧、T-MAC 的自适应,说到底都是"这份作息表怎么排得更省、更顺"。以后你碰到再陌生的 MAC 协议,只要套这句"作息表"去想它在排哪一段醒、哪一段睡,就立刻明白了它的省电路径,而不是被名字吓住。

本节要点回顾

  • MAC 三任务:躲冲突、避空闲监听、防过载。
  • 占空比:周期性睡眠-唤醒,是省电的核心武器。
  • 同步派(S-MAC/T-MAC):先同步再通信,确定性高、有同步开销。
  • 异步派(B-MAC/X-MAC):独立节奏靠探测碰头,扩展性好。
  • 根本原则:少开、精准开,胜过单纯压发射功率。
  • 选型:确定性优先 → 同步;大规模动态 → 异步。

信道有序了,可数据从几百米外的节点一路传到基站还需要"找路"——下一节看网络层与路由怎么选一条又省电又可靠的路。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U