OpenWrt Logo

OpenWrt

  • OperWrt 环境搭建
  • OperWrt 包管理系统
  • OperWrt 启动过程
  • OpenWrt应用程序开机和崩溃时自动启动
  • OpenWrt 内核驱动模块
  • OpenWrt 制作软件包
  • OpenWrt UCI框架
  • OpenWrt 开启LUCI web管理界面
  • OpenWrt Ubus总线框架
  • OpenWrt sysupgrade 升级原理
  • OpenWrt 搭建旁路由
  • Wifi WDS介绍
  • 无线漫游roam kvr协议简介
  • hostapd
  • iwconfig命令
  • Netlink 协议
  • Wireless Network 驱动框架
  • wpa_supplicant
  • wpa_supplicant 扫描方式简介
  • ol_ath_soc_softc_t 创建流分析
  • wpa_supplicant reassociate过程分析
  • wpa_supplicant reauthenticate 过程分析
  • wpa_supplicant preauthenticate过程分析
  • 初始化序列
  • wifi链接过程
  • 802.11协议
  • OSI参考模型和TCP/IP参考模型
  • Linux Qos
  • OpenWrt 流量控制工具tc
  • OpenWrt 防火墙之iptables
  • OpenWrt 优先级Qos
  • TC工具之filter中U32工具匹配规则
  • 入口流量限速&Qos方案实践
  • IP地址介绍
  • 内核阶段dd命令读取norflash内容
  • Openwrt 基于VsCode gdb调试应用程序
  • 无线知识
  • OpenWrt 内核阶段导出dtb为dts
  • Openwrt quilt补丁
  • Openwrt sysupgrades升级原理
  • sk_buff
  • Openwrt软件包下载脚本
  • tcpdump 工具使用说明
  • 路由策略
  • OpenWrt导入指定流量到虚拟网卡tun上
  • Harp 拥塞控制
  • HARP重传算法
  • socket编程
  • socket协议类型区别
  • OpenWrt版本控制
  • IPSec协议
  • 提高进程的优先级
  • PHY和MAC接口介绍
  • Opwnert修改串口登录密码
  • Openwrt修改频点法律法规
  • Openwrt 修改默认ip脚本分析
  • Openwrt overlayfs挂载过程
  • Openwrt 使用git仓库制作软件包流程
  • keepalived部署
  • ip命令介绍
  • WPA2加密

IPQ6018专题

  • Openwrt常用命令
  • 高通QSDK 环境搭建
  • 高通QSDK 编译分析
  • 高通QSDK Wi-Fi Son和EasyMesh
  • 高通QSDK 关于wifi连接常用命令
  • 高通QSDK qcawifi源码日志跟踪
  • 高通QSDK 常用测试命令
  • 高通QSDK waln驱动框架简介
  • 高通QSDK Qos章节翻译
  • qos 实践
  • 高通QSdk Qos开启与测试
  • 高通QSDK 驱动层扫描结果管理
  • 高通QSDK Fit Image
  • 高通QSDK 打包过程
  • 高通QSDK qcawifi驱动编译框架
  • 高通QSDK 设置默认参数
  • NAWDS
  • ACS
  • 高通QSDK Uboot添加硬件看门狗
  • 高通QSDK Uboot添加硬件看门狗
  • QSDK 12.2移植
  • 高通QSDK新增分区
  • 高通QSDK 12.2打包分析
  • 高通QSDK 内核阶段11.4升级12.2方法
  • 高通QSDK wpa_supplicant启动流程
  • 高通QSDK 添加vendor ie的方法
  • 高通 QSDK wireshark远程抓空口包
  • 高通QSDK 应用层发送控制帧
  • 高通QSDK iwinfo工具分析
  • 高通QSDK nl80211框架
  • 驱动层RX MGMT过程
  • 驱动层TX MGMT处理过程
  • 驱动层WALN 状态机运行机制
  • 应用层roam过程分析
  • 高通QSDK 驱动roam过程分析
  • wpa_supplicant 扫描代码分析
  • 驱动层scan过程分析
  • wmi和htc分析
  • 高通QSDK 数据通道
  • 重传程序
  • QSDK reset按键

IPQ5322专题

  • IPQ5322 Docker开发环境搭建
  • IPQ5322 OEM代码准备
  • IPQ5322 手动生成QSDK
  • IPQ5322 自动生成QSDK
  • 下载
  • IPQ5322 single里面新增分区固件
  • IPQ5322 修改wifi固件
  • IPQ5322 参考板信息
  • IPQ5332 修改打包类型
  • MLO 工作模式
  • 802.11be 架构革命:MLO(Multi-Link Operation)协议原理与实现全解
    • MLO 的核心:参考模型与 MAC 层解耦
    • 深入设备内部:AP MLD 与 Non-AP MLD 的架构差异
      • AP MLD 的架构(The AP MLD Structure)
      • Non-AP MLD 的架构(The Non-AP MLD Structure)
    • MLO 的地址迷宫:MLD Address vs. Link Address
      • 地址类型定义
      • 协议中的地址转换规则
    • Link ID:链路的“身份证”
      • Link ID 的应用场景
        • 网络发现(Discovery)
        • 连接建立与协商(Setup)
        • 安全密钥分发(Security)
        • 节能与唤醒(Power Save)
    • 操作模式:STR 与 NSTR 的物理限制
      • STR(Simultaneous Transmit and Receive)
      • NSTR(Nonsimultaneous Transmit and Receive)
  • 802.11be 架构革命:MLO(Multi-Link Operation)多链路发现与设置(Discovery & Setup)
  • 4地址的wds

开源路由专题

  • 360V6 刷机
  • rax3000m

README

  • OpenWrt专题文档
OpenWrt
  • 802.11be 架构革命:MLO(Multi-Link Operation)协议原理与实现全解
  • View page source

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),以便同时切换回接收状态。

Previous Next

© Copyright 2021@xyan_m@163.com.

Built with Sphinx using a theme provided by Read the Docs.