802.11be 架构革命:MLO(Multi-Link Operation)协议原理与实现全解
在 802.11be 之前,哪怕你的路由器是三频的(Tri-band),你的手机也只能连接其中一个频段。MLO 的出现改变了游戏规则,它允许设备把多个频段“捆绑”在一起使用,就像把多条单车道合并成了高速多车道。但 802.11be 的 MLO(多链路操作)绝非简单的“多频合并、多频连接”。

MLO 代表了 MAC 层架构的一次彻底重构。它打破了过去 20 多年 802.11 协议中“一个 MAC 对应一个 PHY”的紧耦合关系,引入了 MLD(Multi-Link Device)这一全新的逻辑实体。
本篇我们将从协议栈视角深入解读 MLO 的 参考模型、MAC 功能解耦 以及 复杂的地址体系。
MLO 的核心:参考模型与 MAC 层解耦
在 802.11be 以前,一个 Wi-Fi 接口(Interface)就是一个独立的 MAC 实体,拥有独立的 MAC 地址、独立的序列号(SN)控制和独立的加密密钥。
802.11be 引入了一个新的逻辑实体 MLD(Multi-Link Device),它拥有一个 MAC 服务接入点(MAC-SAP,MAC Service Access Point)连接到上层(LLC),但在底层拥有多个附属 STA(Affiliated STAs)。
同时为了实现管理多条链路,802.11be 对 MAC 层进行了逻辑分层:MLD 上层 MAC 子层(MLD Upper MAC Sublayer)和 MLD 下层 MAC 实体(MLD Lower MAC Entity)。
通用参考模型(The Generic Reference Model)

DS 接口:AP MLD 拥有 DSAF(Distribution System Access Function),负责将无线侧的数据桥接到有线侧(Distribution System,如以太网)。
MAC-SAP(MAC Service Access Point):对于上层(LLC 层/操作系统)来说,整个 MLD 设备看起来就像一个普通的 Wi-Fi 设备。它只有一个 MAC 地址(MLD MAC Address),提供一个数据接口。这保证了对上层协议的透明性——操作系统不需要知道底层跑了多少条链路,也不需要管理复杂的链路切换。
MLD Upper MAC Sublayer(上层 MAC):这是 MLO 的“大脑”。它负责所有与具体链路(Link)无关的通用功能,对上层屏蔽多链路的细节:
序列号管理(Sequence Number Assignment):无论数据包最终走 2.4GHz 还是 5/6GHz 发送,它们共享同一个序列号空间(SNS),确保在接收端能正确重组乱序的包。
加密/解密(Encryption/Decryption):使用统一的成对密钥(PTK)对单播数据进行加密和解密。
分片与重组(Fragmentation/Defragmentation):决定数据包走哪条链路(TTLM),以及在接收端将不同链路来的包合并。
流量调度(TID-to-Link Mapping,TTLM):决定哪个优先级的流量(TID)可以走哪些链路。
Block Ack 记分板:维护跨链路的确认状态。
MLD Lower MAC Entity(下层 MAC):这是 MLO 的“四肢”,每个链路(Link 1, Link 2…)都有自己独立的下层 MAC,负责与物理层(PHY)直接交互:
信道接入(EDCA):在各自的频段上独立进行侦听和退避,比如争抢信道、退避(Backoff)。
信标发送/接收:处理本链路的 Beacon 和 Probe Response。
链路级重传:如果在当前链路发送失败,由下层 MAC 处理(或反馈给上层重选链路)。
保护机制:RTS/CTS 握手。
深入设备内部:AP MLD 与 Non-AP MLD 的架构差异
在 MLO 的世界里,设备不再是单一的射频节点,而是拥有多个“附属 STA(Affiliated STAs)”的逻辑实体。虽然 AP MLD(路由器端)和 Non-AP MLD(手机/终端端)都拥有统一的 MLD MAC 地址 和 MLD 上层 MAC(Upper MAC),但为了适应基础设施侧(AP)和终端侧(STA)不同的业务需求,它们的内部架构设计截然不同。
AP MLD 必须兼容非 MLO 设备(Legacy STAs),而 Non-AP MLD 通常只需要关注与 AP 的连接。
AP MLD 的架构(The AP MLD Structure)

图注:AP MLD 内部架构,它保留了“Non-MLD upper MAC sublayer”以兼容旧设备
AP MLD 的架构非常复杂,它实际上是一个“混合体”,因为它既要作为一个整体(MLD)服务 802.11be 客户端,又要让每一个频段(Link)看起来像一个独立的传统 AP,以服务 802.11ax 或更早的设备。
AP MLD 具有双重上层 MAC:
MLD Upper MAC Sublayer(MLD 上层 MAC):负责处理 MLO 相关的业务,如统一的序列号分配(SN Assign)、MLD 级别的加密/解密、分片重组等。它处理的是 MLD 到 MLD 的流量。
Non-MLD Upper MAC Sublayer(非 MLD 上层 MAC):这是 AP MLD 独有的。每一个附属 AP(Affiliated AP)都保留了一套独立的上层 MAC 功能,这意味着 Link 1 上的 AP 可以独立服务一个 802.11ax 用户,完全不经过 MLD层面的复杂处理。用于处理与非 MLO 设备(如 802.11ax 手机)的通信,以及处理该链路上的广播/组播流量。
AP MLD 的接收路径:MPDU 分发器
当 AP MLD 的某个附属 AP 收到一个数据帧(MPDU)时,它必须通过 MPDU Distribution(MPDU 分发) 逻辑来决定交给谁处理:
如果是 MLD 客户端发的帧:交给 MLD 上层 MAC。这里会进行统一的去重(基于 MLD 级别的 PN/SN)和解密。
如果是传统客户端发的帧:交给该链路对应的 附属 AP 上层 MAC。这里进行链路级别的处理。
Non-AP MLD 的架构(The Non-AP MLD Structure)

图注:终端侧 MLD 架构
Non-AP MLD(如 802.11be 手机)的设计重点在于省电和漫游。
单一上层 MAC:Non-AP MLD 通常只包含一个统一的 MLD Upper MAC Sublayer。它不需要为每一个链路维护独立的“非 MLO 上层逻辑”,因为它的目标只是聚合多个链路来传输数据。
下层实体:它拥有多个 MLD Lower MAC Entities(对应不同的芯片/射频通路),负责各链路的信道接入(EDCA)和控制帧交互,但数据最终都汇聚到统一的上层进行解密和重组。
单一认证实体:这意味着手机连热点时,只需要进行一次认证(4-way handshake),所有链路的密钥(PTK)就都生成了,不需要每个频段单独输密码或认证。
Non-AP MLD 的接收路径:链路合并
Non-AP MLD 的处理更简单。来自不同链路(如 2.4GHz 和 5/6GHz)收到的数据帧,经过各自的下层 MAC 处理后,直接进入 Link Merging(链路合并) 模块,按先入先出(FIFO)的顺序提交给统一的上层 MAC 进行重组和提交给应用层。它不需要区分数据是来自“MLD AP”还是“传统 AP”,因为对它来说,对端就是一个逻辑实体。
MLO 的地址迷宫:MLD Address vs. Link Address
802.11be 中最让人头疼的部分之一就是 MAC 地址的使用。一个 MLD 设备拥有 1 个 MLD MAC 地址 和 N 个 Link MAC 地址(N=支持的链路数)。
地址类型定义
MLD MAC Address(逻辑大脑):代表整个设备,位于 MLD 上层 MAC 子层(MLD Upper MAC Sublayer)。
定义:用于唯一标识整个多链路设备(Multi-Link Device,MLD)的 MAC 地址,用于 认证(Authentication)和 关联(Association)阶段,用于生成加密密钥。
作用:
对外身份:对上层协议(LLC/IP)呈现为单一接口,就像传统的 Wi-Fi 设备一样。
序列号管理:统一管理所有链路上的 SN(Sequence Number)和 PN(Packet Number),防止跨链路重放攻击。
Link MAC Address(物理触手):代表具体频段上的射频实体,位于 MLD 下层 MAC 实体(MLD Lower MAC Entity)。
定义:MLD 内部每一个 隶属 STA(Affiliated STA)拥有的独立 MAC 地址。
规则:同一个 MLD 内的所有 Affiliated STA 必须拥有不同的 MAC 地址。
作用:
无线传输:在具体的无线信道(2.4G/5G/6G)上发送和接收无线帧。
空口寻址:充无线帧头中的 TA(Transmitter Address)和 RA(Receiver Address)必须是 Link MAC 地址。
形象比喻:
MLD Address 是“总公司”的名称(签合同、对外转账用它)。
Link Address 是“分公司”或“办事员”的工牌号(具体跑腿、发快递用它)。
协议中的地址转换规则
802.11be 制定了一套严格的规则来决定帧头里的地址填什么。
控制平面的地址使用
在建立连接和管理网络时,两种地址的使用非常讲究,极易混淆。
发现与扫描(Discovery):Beacon/Probe Response
帧头的 BSSID(Address 3)是发送该帧的 AP 的 Link Address。
但是,帧体内的 Basic Multi-Link Element 会携带 AP MLD MAC Address,告知终端“我是属于哪个集团的”。
认证与关联(Setup)
帧头(Header):使用具体的 Link Address 作为 SA(Source)和 DA(Destination)。
帧体(Body):
认证帧、关联请求/响应帧中包含 Basic Multi-Link Element,该元素内部显式包含 MLD MAC Address。
安全密钥(PMK/PTK)的推导是基于 MLD MAC Address 计算的,而不是 Link Address。这确保了密钥在所有链路上通用。
数据平面的地址映射
当数据包(MSDU)从上层下来,或者从空气中接收上来,地址是如何转换的?
发送方向(Tx)
上层输入:IP 层将数据包交给 MLD 上层 MAC,此时源地址是 MLD MAC。
链路选择:MLD 根据 TIDs-to-Link Mapping(TTLM)机制决定走哪条链路(例如 Link 1)。
封装(Encapsulation):
Address 1(RA):下一跳的 Link Address(例如 AP 在 Link 1 上的 BSSID)。
Address 2(TA):发送者的 Link Address(即 non-AP STA 在 Link 1 上的 MAC)。
Address 3(DA):最终目的地址。
注意:如果是 WPA3 加密,加密使用的 Key 是基于 MLD 地址协商的 PTK,但 Nonce 的构建会混入 Link Address 相关信息以确保唯一性。
接收方向(Rx)
链路接收:AP 的 Link 1 收到数据帧,检查 Address 1(RA)匹配自己的 Link Address。
去重与解密:使用共享的 PN 空间(基于 MLD 级)进行重放检测和解密。
合并(Merging):不同链路收到的数据包汇入同一个 MLD 上层队列。
上报:提交给上层网络协议栈时,源地址通常被视为对端的 MLD MAC(这就需要接收端维护一张 Link MAC 到 MLD MAC 的映射表)。
特殊情况:组播/广播(Group Addressed)组播密钥(GTK)是 Per-Link(每链路独立)的。因为不同链路可能有不同的传统设备存在,所以广播帧必须用该链路特定的 GTK 加密,且源地址通常直接使用该链路的 BSSID。
总结:地址迷宫速查表
场景涉及对象 |
使用的地址(Address Usage) |
|---|---|
密钥协商(4-way Handshake)EAPOL 帧 |
帧体/Key Derivation 使用 MLD MAC 帧头 使用 Link MAC |
空中传输(Over-the-Air)MPDU 帧头 |
TA/RA(Addr 1/2)必须是 Link MAC |
序列号(SN/PN)计数器 |
基于 MLD MAC 统一维护 (单播) |
省电模式(TIM/DTIM) |
AID 是 AP MLD 分配给 Non-AP MLD 的,跨链路统一 |
上层通信(IP Layer)MSDU |
SA/DA 逻辑上对应 MLD MAC |
避坑指南:在开发 802.11be 驱动或进行 Sniffer 抓包分析时,千万不要只看帧头的 Address 2 就认为是设备的唯一 ID。必须解析 Basic Multi-Link Element 获取背后的 MLD MAC Address,那才是设备的“真身”。同时,同一个设备在 Link 1 和 Link 2 上通过不同 MAC 地址发送的数据包,共享同一个 PN(Packet Number)序列号空间,这是判断丢包和重放的关键。
Link ID:链路的“身份证”
在 MLO 架构中,一个 AP MLD 可能包含多个工作在不同频段(如 2.4GHz, 5GHz, 6GHz)的附属 AP。为了在管理帧和控制流程中精准地指代某一个具体的射频链路,协议引入了 Link ID(0 ~ 14,这意味着一个 AP MLD 最多可以支持 15 个附属 AP,但是通常只有 2-3 个)。
唯一性:在任何给定的时间,同一个 AP MLD 内的任意两个附属 AP 不能拥有相同的 Link ID。
静态性:Link ID 由 AP MLD 独立分配给其附属 AP,一旦分配,只要 AP 不被移除,Link ID 在该附属 AP 建立的 BSS 生命周期内保持不变。即使 AP 切换了信道(比如从 5.2GHz 切到了 5.8GHz),Link ID 也不变。这使得非 AP MLD(如手机)在追踪 AP 时更加稳定。
Link ID 的应用场景
Link ID 就像是一条看不见的纽带,串联起了 MLO 的发现、连接、节能和安全等各个环节。
网络发现(Discovery)
在扫描阶段,手机(Non-AP MLD)通过 Link ID 来识别“谁是谁”。
基本多链路元素(Basic Multi-Link Element):这是 MLO 的核心元素。在其中的 Per-STA Profile 子元素里,STA Control 字段包含 Link ID 子字段。这告诉接收端:“下面这些参数(如信道、SSID 等)是属于 Link ID = X 的那个 AP 的。”
缩减邻居报告(RNR,Reduced Neighbor Report):AP 会在信标中携带 RNR 来通告同一 MLD 下的其他 AP。RNR 中的 MLD Parameters 子字段也包含 Link ID,帮助终端快速了解其他频段对应的是哪个逻辑端口。
连接建立与协商(Setup)
关联请求/响应:在 (Re)Association Request/Response 帧中,双方通过 Basic Multi-Link Element 中的 Link ID 来确认要建立哪些链路的连接。
TID 映射(TID-To-Link Mapping,TTLM):当协商哪些业务数据(TID)走哪条路时,Link Mapping 字段使用 Link ID 来指代具体的链路。例如,“TID 0 映射到 Link ID 1 和 Link ID 2”。
安全密钥分发(Security)
这是 Link ID 最“硬核”的用途之一。在 MLO 中,虽然单播密钥(PTK)是 MLD 级别的,但组播/广播密钥(GTK/IGTK/BIGTK)是 Per-Link(每链路独立)的。
密钥分发(KDE):在 4 次握手或组密钥握手时,AP MLD 会发送包含 Link ID 的专用 KDE(Key Data Encapsulation):
MLO GTK KDE
MLO IGTK KDE
MLO BIGTK KDE
注意:保护组播管理帧(如 Beacon)使用的是 IGTK(Integrity GTK)或 BIGTK(Beacon IGTK),而非 GTK。GTK 仅用于保护 Data 帧。
作用:终端收到密钥包后,根据里面的 Link ID,将密钥安装到对应的射频硬件上,确保能解密对应频段的广播帧。
节能与唤醒(Power Save)
TWT(目标唤醒时间):在 TWT 协商中,Link ID Bitmap 字段用于指示该唤醒协议适用于哪些链路。
流量指示(TIM):在 Multi-Link Traffic Indication 元素中,位图的索引对应 Link ID,指示哪个链路上有待接收的缓存数据。
操作模式:STR 与 NSTR 的物理限制
MLO 的理想状态是所有链路都能独立收发,但这取决于硬件能力。
STR(Simultaneous Transmit and Receive)
原理:设备可以在 Link 1 上发送数据的同时,在 Link 2 上接收数据,互不干扰。
要求:通常要求两个频段间隔足够远(如 2.4G 和 5G,或 5G 低频和 5G 高频配合由滤波器隔离),防止发送端的强信号“震聋”自己的接收端。
优势:真正的并发,吞吐量最大化。
NSTR(Nonsimultaneous Transmit and Receive)
原理:设备无法同时一发一收。如果 Link 1 正在发送,Link 2 必须闭嘴(不能接收也不能发送),否则会发生自干扰。
限制:常见于手机等空间受限设备(如 5G 和 6G 频段太近)。
同步传输:为了在 NSTR 限制下提升性能,MLO 引入了同步传输机制,尽量让两个链路的发送结束时间对齐(End Time Alignment),以便同时切换回接收状态。