802.11be 架构革命:MLO(Multi-Link Operation)多链路发现与设置(Discovery & Setup)
本篇我们将继续深入 802.11be 标准的深水区,详细剖析 Discovery 流程和那个无处不在的 Multi-Link Element(MLE)。
如前面学习,在 MLO 的世界里,有两个核心概念:
MLD(Multi-Link Device):多链路设备,指整个逻辑实体(比如你的 802.11be 路由器或手机)。
Affiliated AP/STA:MLD 内部负责具体频段通信的物理实体(比如路由器/手机里负责 5GHz 射频的那部分电路)。
MLO 的连接建立过程主要分为四个阶段:发现(Discovery)-> 认证(Authentication)-> 关联(Association)-> 密钥协商(4-Way Handshake)。
发现(Discovery)——“扫一眼,全看见”
在 802.11ax 时代,必须分别扫描 2.4G 和 5/6G 才能知道路由器的所有信息。但在 802.11 MLO 时代,虽然传统的“主动扫描(Probe Request)”和“被动扫描(Beacon)”依然存在,但为了效率,MLO 只需要扫描一个频段,就能获取所有频段的信息。
跨链路发现逻辑

图注:MLO 发现标准时序图,Non-AP MLD(手机)只在 2.4GHz 发送了(ML)Probe Request,AP 就回复了包含所有链路信息的(ML)Probe Response。
单链路扫描,多链路发现:Non-AP MLD 不需要去扫描 5/6GHz。它只需要在 2.4GHz(或其他任意一个主链路)上收到 AP 的 Beacon,或者发送一个携带 Basic Multi-Link Element 的 Probe Request 帧。
RNR 的指引:即使是在普通的 Beacon 帧中,AP 也会携带 Reduced Neighbor Report(RNR)元素。在 802.11be 中,RNR 被扩展了,它不仅能报告邻居 AP,还能报告 “同一 MLD 下的其他 AP”。
技术细节:RNR 中的 TBTT Information Header 包含 MLD Parameters,可以直接告诉手机其他链路的 Link ID、BSSID 和 Channel 。
了解了宏观的发现流程,我们必须钻进微观的数据包里看一看。这一切的魔法,都藏在一个名为 Multi-Link Element 的字段中。
核心数据结构:Multi-Link Element(MLE)深度解剖
这是 MLO 的灵魂。Multi-Link Element(MLE)是 802.11be 协议栈中最重要的载体,它出现在 Probe Response、Association Request/Response 等几乎所有关键管理帧中。
它的设计非常精妙,采用了“继承(Inheritance)”和“上下文(Context)”机制来压缩数据量。

图注:MLE 的顶层结构:Common Info + Link Info(包含多个 Per-STA Profile)。
MLE 的总体结构如上所示,其 Element ID 是 255(Extension),Element ID Extension 是 107。其 Payload 分为两大部分:
Common Info(公共信息):描述 MLD 层面的共有属性,或者所有链路的默认属性。
Link Info (链路信息):包含其他所有附属 AP 的 Per-STA Profile(每站点配置),描述每个具体链路的差异化属性。
如下是 ML Probe Request/Response 的帧结构:


注意:只有支持 11be 的设备发出的(ML)Probe Request 才会触发包含完整 MLE 信息的(ML)Probe Response,否则老设备只能收到传统的 Response。
Multi-Link Control 字段详解
这是解析 MLE 的第一把钥匙。

它包含两个关键子字段:
Type(3 bits):决定这个 MLE 的用途。
0:Basic Multi-Link Element(最常用,用于 Beacon/关联/发现)
1:Probe Request Multi-Link Element(终端发 Probe Req 时用)
2:Reconfiguration Multi-Link Element (用于动态添加/删除链路)
3:TDLS Multi-Link Element
4:Priority Access Multi-Link Element

Presence Bitmap(12 bits):位图掩码。
它的每一位对应 Common Info 字段中某个子字段是否存在。
设计意图:如果 Common Info 中某个参数(比如 AP MLD ID)没必要发,把对应的 bit 置 0。
Common Info 字段详解
所有链路的“公分母”。

关键子字段解析:
MLD MAC Address(6 octets):
重点:MLD 的逻辑 MAC 地址,这是 MLD 的身份证。在 MLO 建立连接后,数据加密用的 Key 是与这个地址绑定的,而不是与具体的 Link Address 绑定。
补充:MLD MAC 并不用于无线空口的传输地址(TA/RA),它主要用于上层管理和密钥派生。
Link ID Info(Optional):
用于指示“当前发送这个帧的 AP”对应的是哪个 Link ID,这解决了“我是谁”的问题。
BSS Parameter Change Count(BPCC):
高阶技巧:如果任何“附属 AP”的参数发生变化(比如 Link 2 换信道了,或者 Link 3 的 EDCA 参数变了),这个计数器就会加 1。
作用:让休眠的设备醒来后,看一眼这个计数器就知道其他频段有没有变,如果没变,它就完全不需要重新读取 Link 2/3 的详细信息,直接复用缓存即可,无需遍历所有 Link。
EML Capabilities:EML 能力。指示是否支持 EMLSR(增强型单射频多链路)或 EMLMR,这对手机等电池供电设备至关重要。
MLD Capabilities:
MLD 级能力。例如最大同时支持几条链路(Max Simultaneous Links)、是否支持 STR(同发同收)。
AP MLD ID
当一个物理 AP 属于多个逻辑 AP MLD(多 BSSID 场景)时,用此 ID 区分。
Link Info 字段(Per-STA Profile):链路信息
这是 MLE 中最庞大的部分。它由一系列的 Subelements(子元素)组成,最主要的就是 Per-STA Profile(Subelement ID = 0)。
每个 Per-STA Profile 代表一个链路 Link(例如 5GHz Link 或 6GHz Link),也展示了 802.11be 协议设计的极简主义美学。

Subelement Header 字段
Sub-ID(1 byte):0 表示 Per-STA Profile。
Length(1 byte):长度。
STA Control(2-4 bytes)——链路级的控制器
类似于外层的 Multi-Link Control,这个字段控制当前 Profile 内部有哪些字段。

Link ID(0 ~ 14):明确指出这个 Profile 描述的是哪条链路(例如 Link ID = 1 指向 5GHz 低频段)。
Complete Profile :这是一个极其关键的标志位!
置 1(Complete):完整配置。表示该 Profile 包含了该链路的所有完整信息(就像一个完整的 Beacon)。通常用于 Association/Response 中,确保客户端拿到所有参数。
置 0(Partial):部分配置。表示该 Profile 仅包含与当前发送 Link 不同的参数(增量更新)。
STA Info(变长)

STA MAC Address:该 Link 对应的物理 MAC 地址(BSSID)。
Beacon Interval:该 Link 的信标间隔。
TSF Offset:时间同步功能偏移量。因为不同频段的 Beacon 发送时间不同,需要这个偏移量来对齐时间。
NSTR Indication Bitmap:指示该 Link 与其他 Link 组合时是否是 NSTR(非同时收发)关系。
STA Profile(变长)——继承与压缩的艺术
这里存放该 Link 具体的 IE(Information Elements),如 SSID,Current Channel,EDCAParameterSet 等。
看懂这里才算真正的懂 MLE,802.11be 的“继承(Inheritance)”机制在这里发挥巨大的作用,就像写代码时的全局变量与局部变量,如果局部(Per-STA Profile)没定义,就默认使用全局(Common Info)或者主链路的配置。这能极大节省空口开销。例如:
某个参数(比如 SSID 或 Country Code)在所有 Link 上都一样,那么在非主 Link 的 Profile 中就不包含这些 IE。
接收端(手机)在解析 Per-STA Profile 时,没有某个元素(比如 DTIM Period),但 Common Info 里有或者是默认值,则认为该链路使用默认值。
从“传输链路”继承: 如果我在 Link 1(2.4G)收到了这个 MLE,且 Link 2(5G)的 Profile 是 Partial 的。那么 Link 2 中缺失的参数(如 SSID),默认与 Link 1 相同。
这就是为什么你在配置 MLD AP 时,通常要求所有频段 SSID 相同,因为协议层面上这样最省开销!
连接建立流程:ML Setup
万事俱备,开始握手。MLO 的连接建立复用了 802.11 的 Open System Authentication + Association 流程,但内容大有乾坤。

图注:这是最标准的 ML Setup 时序图,清晰地展示了 Non-AP MLD 如何通过 Link 1 建立起 Link 1, 2, 3 的连接。
第一步:认证(Authentication)—— “一次刷脸,全家通行”
在 MLO 中,认证是发生在 MLD(设备)级别的,而不是链路级别的。
交互:只需要在一个链路(例如 Link 1)上进行。例如手机(Non-AP MLD)在 Link 1 上,通过该链路上的 Affiliated STA 发送 Authentication Request 帧。
SAE / Open System:如果使用 WPA3-Personal (SAE),密码验证也是基于 MLD MAC 地址计算的。
地址:帧头里的 RA/TA 是 Link Address,但帧体(Frame Body)里携带的 MLE 包含了 MLD MAC Address。双方由此绑定了“物理链路”和“逻辑设备”。
状态同步:一旦认证成功,双方在逻辑上就建立了“MLD 级别”的信任关系。此时,所有附属的 STA(Link 1, 2, 3…)的状态都会同步更新为“已认证”。
第二步:关联(Association)—— “谈判与签约”
双方要协商:“我们到底要同时用哪几条路?”。连接依然是在单条链路(例如 Link 1)上进行的,但协商内容覆盖所有链路。
(Re)Association Request(手机发给路由):
Basic Multi-Link Element:
Common Info:携带手机的 MLD MAC 地址、MLD 能力(如是否支持 STR 同发同收)。
Link Info(Per-STA Profile):这是重点!手机会列出它请求建立连接的所有链路(例如 Link 1, Link 2, Link 3)。每个 Profile 里包含了该频段对应的 Station 能力(EHT Capabilities)。
(Re)Association Response(路由回给手机):
Basic Multi-Link Element:
确认链路:AP MLD 会检查手机请求的链路。如果 AP 同意,就在回包里包含对应的 Per-STA Profile,并返回 Status Code = SUCCESS。
拒绝链路:如果 AP 觉得某个频段拥堵或不支持,可以不包含该链路的 Profile,或者返回拒绝状态码。
一旦关联成功,双方就正式建立了 Setup Links(已建立链路)。系统会为 Non-AP MLD 分配一个唯一的 AID(Association ID),这个 AID 在所有 Setup Links 上是通用的。
第三步:密钥协商 (4-Way Handshake) —— “一把总钥匙,多把分钥匙”
MLO 的密钥体系设计非常独特:单播用一把总钥匙,组播用多把分钥匙。
PTK(单播密钥) —— MLD 级统一
协商对象:AP MLD 和 Non-AP MLD。
过程:4 次握手在主链路(Link 1)上进行。
原理:生成的 PTK(Pairwise Transient Key)是基于双方的 MLD MAC 地址 计算的。
结果:这个 PTK 被安装到所有 Setup Links 上。无论你在 2.4G 还是 6G(单播数据),用的都是同一把 PTK 加密。这保证了数据在不同链路间无缝切换时,无需重新协商密钥。
GTK/IGTK(组播/广播密钥)—— Link 级独立
问题:每个频段的广播数据(如 ARP 请求、Beacon)必须让该频段上的所有设备都能解密,包括那些不支持 MLO 的老旧设备。
解决方案:每个频段(Link)必须有自己独立的 GTK(Group Temporal Key)。
分发:在 4 次握手的第 3 步(M3)或者组密钥握手中,AP 会通过 MLO GTK KDE 元素,一次性把所有 Link 的 GTK 打包发给终端。
补充:“在 MLO 场景下,M3 帧可能会携带多个 Link 的 GTK(通过 MLO GTK KDE),这是与 802.11ax 最大的区别之一。
Payload 示例:Link ID 1: GTK_A; Link ID 2: GTK_B…
流量调度(TTLM)—— 多链路的“交通指挥官”
路修好了,车怎么跑?这就涉及 TID-to-Link Mapping (TTLM)。不同的业务(TID,如语音、视频、下载)跑在不同的链路上。
这个规则可以在关联阶段(Association Request/Response)协商,也可以在连接建立后通过Action 帧动态调整。例如:
场景 A:AP 接受建议。STA 在关联请求中带上 TTLM IE,说:“我想把视频跑在 6G,语音跑在 5G”。AP 回复“Success”,双方达成一致。
场景 B:AP 觉得此方案不行,然后回复“Preferred Mapping”(状态码 134),并给出一套建议方案。STA 通常会接受这个新方案。
场景 C:强制拆除(Teardown)。如果某条链路拥堵或需维护,AP 可以发送 TTLM Teardown 帧,强制 STA 回退到默认映射模式。