一、11be主流技术
1.1 MLO: Multi-link operation
用白话来讲,MLO就是指多link连接,每个link对应每个MAC\PHY,各link之间可以并发工作也可以各自工作,在IP层面仍然是一个连接一个IP地址,存在以下几种共存模式:
(1)MLMR:Multi-link Multi-Radio
(2)MLSR:multi-link single-radio
(3)EMLSR:enhanced multi-link single-radio
(4)EMLMR:enhanced multi-link single-radio
1.1.1 MLSR:multi-link single-radio
这个没什么好说的,除了协议支持11BE,其他与Wi-Fi6没什么差异,STA & AP只能在一条link上通信;
1.1.2 MLMR:multi-link single-radio
这个也没什么好说得,STA&AP可以同时在两条link上工作,提高了wifi吞吐上限,比如其支持2.4G+5.2G、5G+6G;这里需要注意的是,MLMR工作模式下有两种模式:
STR:Simultaneous Tx and Rx
NSTR:Non-Simultaneous Tx and Rx,即MLMR模式下不允许两条link同时进行TX & RX,要么一起TX,要么一起RX;
1.1.3 EMLSR:enhanced multi-link single-radio
顾名思义,它是eMLSR的增强版本,表示两条link并发工作,区别于MLMR,其只有一个radio通路,这种工作模式设计的初衷是为了一些低端设备也可以享有wifi7的红利,即使用一个radio两个频段,在其中一个频段工作质量差的时候可以切换到另外一个link上,简单来说,其不支持两条link并发工作,在一个link工作的时候,另外一个link是聋子,其也有以下几个弊端:
1.相比single link吞吐低,因为link切换时对吞吐有影响;
1.1.4 MLO涉及的几个MAC地址
一个MLD至少有两个MAC地址(对于双link而已),每个link需要有一个唯一的MAC,MLD mac address可以是唯一的也可以与其中一条link mac保持一致;
如何使用这几个MAC地址:
(1)在空口传输中,TA/RA使用各自link对应的MAC;
(2)对于数据包,SA/DA使用MLD MAC;
对于各个MAC解析参考2.2章节
Mark:link MAC只是MAC的概念,对于IP层面,只有一个MLD MAC,如果link mac出现在IP层,可能就会引起arp、ipv4、ipv6等等异常;
1.2 320MHz
11be支持多种带宽组合,支持6G 320MHz,支持组合带宽240Mhz(5.2G 160MHz + 5.8G 80MHz);
Mark:硬件能力最大就是320MHz,如果5.2G 160MHz + 6G 320MHz,其带宽也是320MHz.
1.3 4k QAM
Wi-Fi标准一直致力于提升数据传输速率,一种思路是提升单位符号(Symbol)携带数据的能力。如下图所示,如果我们把承载数据的符号比作车,把携带的数据比作待运输的货物。原本一辆车只能携带 8bit 数据,如果能增加携带数据量,那么同样的一辆车,比原先携带的内容多了,数据传输速率自然快了。
在 Wi-Fi 标准中,提升单位符号携带数据的能力就是提高 QAM 的阶数。如图所示,Wi-Fi 5 采用的 256-QAM 正交幅度调制,每个符号传输 8bit 数据,Wi-Fi 6 采用 1024-QAM 正交幅度调制,每个符号位传输 10bit 数据,而 Wi-Fi 7 将会采 4096-QAM 正交幅度调制,每个符号位传输 12bit 数据。从 8bit 到 10bit 再到 12bit,就单条空间流数据吞吐量而言,Wi-Fi 6 较 Wi-Fi 5 提高了 25%,Wi-Fi 7 较 Wi-Fi 6 提高了 20%;
思考:QAM的阶数越高对于性能越友好嘛:
答案:显示不是,因为发送一个符号所用的载波频宽是固定的,发送时长也是一定的,阶数越高意味着两个符号之间差异就越小。这不仅对收发两方的器件要求很高,而且对环境的要求也很高。如果环境很嘈杂(SNR 较小),则符号很容易因为命中星座图中相邻的其他点导致解调错误。这就意味着,如果环境过于恶劣,终端将无法使用高阶的 QAM 模式通信,只能使用较低阶次的调制模式。举个日常生活中的例子,两个人对话,如果彼此讲话速度很快,这就要求周围环境不能太吵,要是背景太嘈杂,显然也是听不清的。
1.4 Recommended Max Simultaneous Links
通俗来讲,它是MLMR模式下的一种工作方式,也被称为STR,就是同一时间允许同时TX/RX的link数,如下图:
这个feature对于多场景共存时有很大的帮助,例如STA+GO,STA+SAP...
高通平台预留了接口,目前厂商还未实现,即底层不支持,接口定义如下(在后续底层支持后可以测试看一下收益):
53 #define MAX_SIMULTANEOUS_STA_ML_LINKS 1
mivendor_u_sm8650/vendor/qcom/opensource/wlan/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c
12506 {QCA_WLAN_VENDOR_ATTR_CONFIG_EHT_MLO_MAX_SIMULTANEOUS_LINKS,
12507 hdd_set_eht_max_simultaneous_links},
1.5 Restricted TWT
Wi-Fi 6 引入了 TWT 机制,TWT 是由 802.11ah 标准首次提出,初衷是针对 IoT 设备,特别是为低业务量的设备而设计的一套节能机制。在 TWT 机制下,AP 和终端可以建立一套 TWT 协议,双方约定好一个 TWT 服务时间,终端只有在服务时间内才会工作,其他时间处于休眠状态。这就好比送快递,收件人不需要守候在家中等收货,只要跟快递员约定一个固定时间上门送货,其他时间收件人则可以自由行动。TWT 有 2 种模式,一种是 Individual TWT,一种是 Broadcast TWT,Wi-Fi 6 协议要求 AP 支持单播 TWT,广播 TWT 可选;STA 可选支持单播 TWT。Wi-Fi 7 的改进则是基于 Multi-Link 定义了跨 Link 的 TWT 机制,并针对低时延特性定义了受限目标唤醒时间 Restricted TWT(R-TWT)。R-TWT 允许 AP 使用增强的信道接入和资源预留机制,以提供更可预测的延迟、更低的最坏情况延迟和/或更低的抖动,并为延迟敏感流量提供更高的可靠性。R-TWT 操作沿用了广播TWT协商机制,并在TWT Setup 帧中将 Restricted TWT 所需信息携带上。
二、关键流程
2.1 EHT basic IE
-
208 /** 209 * struct wlan_mlo_ie - wlan ML IE info 210 * @type: the variant of the ML IE 211 * @reserved: reserved 212 * @link_id_info_present: the present flag of link id info 213 * @bss_param_change_cnt_present: the present flag of bss prarm change cnt 214 * @medium_sync_delay_info_present: the present flag of medium sync delay info 215 * @eml_capab_present: the present flag of EML capability 216 * @mld_capab_and_op_present: the present flag of MLD capability and operation 217 * @mld_id_present: the present flag of MLD ID 218 * @ext_mld_capab_and_op_present: Extended MLD Capabilities And 219 * Operations Present 220 * @reserved_1: reserved 221 * @common_info_length: common info length 222 * @mld_mac_addr: MLD mac address 223 * @link_id: link id 224 * @bss_param_change_count: bss param change count 225 * @medium_sync_delay_info: structure of medium_sync_delay 226 * @eml_capabilities_info: structure of eml_capabilities 227 * @mld_capab_and_op_info: structure of mld_capabilities and operations 228 * @mld_id_info: MLD ID 229 * @ext_mld_capab_and_op_info: structure of ext_mld_capab_and operations 230 * @num_sta_profile: the number of sta profile 231 * @sta_profile: structure of wlan_mlo_sta_profile 232 * @num_data: the length of data 233 * @data: the ML IE data, includes element ID + length + extension element ID + 234 * multi-link control and common info. 235 */236 struct wlan_mlo_ie { 237 uint16_t type:3; 238 uint16_t reserved:1; 239 uint16_t link_id_info_present:1; 240 uint16_t bss_param_change_cnt_present:1; 241 uint16_t medium_sync_delay_info_present:1; 242 uint16_t eml_capab_present:1; 243 uint16_t mld_capab_and_op_present: 1; 244 uint16_t mld_id_present: 1; 245 uint16_t ext_mld_capab_and_op_present: 1; 246 uint16_t reserved_1:5; 247 uint8_t common_info_length; 248 uint8_t mld_mac_addr[6]; 249 uint8_t link_id; 250 uint8_t bss_param_change_count; 251 struct medium_sync_delay medium_sync_delay_info; 252 struct eml_capabilities eml_capabilities_info; 253 struct mld_capab_and_op mld_capab_and_op_info; 254 uint8_t mld_id_info; 255 struct ext_mld_capab_and_op ext_mld_capab_and_op_info; 256 uint16_t num_sta_profile; 257 struct wlan_mlo_sta_profile sta_profile[WLAN_MLO_MAX_VDEVS]; 258 uint16_t num_data; 259 uint8_t data[WLAN_MLO_IE_COM_MAX_LEN]; 260 };
2.2 连接过程
用白话来说,就是对于beacon、probe与Wi-Fi6连接无异,每个link都需要,但是auth、assoc、EAPOL是指定其中一个link握手,其中GTK/IGTK/BIGTK复用;
以一份日志来看看:
/wpa_supplicant - frameworks连接过程 128892:05-30 03:56:30.691 3053 4891 D WifiClientModeImpl[699155:wlan0]: CMD_START_CONNECT my state DisconnectedState nid=0 roam=false 128933:05-30 03:56:30.781 9028 9028 I wpa_supplicant: wlan0: Trying to associate with SSID 'Xiaomi_1500_2G' 129094:05-30 03:56:31.220 9028 9028 I wpa_supplicant: wlan0: CTRL-EVENT-CONNECTED - Connection to 0a:d1:59:cf:15:04 completed [id=0 id_str=%7B%22configKey%22%3A%22%5C%22Xiaomi_1500_2G%5C%22WPA_PSK%22%2C%22creatorUid%22%3A%221000%22%7D] ap_mld_addr=1a:d1:59:cf:15:02 //host连接过程,两个网口 //vdev-0 03:56:30.799489 [schedu][0x32a6492cf][19:56:30.799268]: [9015:I:CMN_MLME] vdev 0 cm_id 0xc000001: Connecting to Xiaomi_1500_2G 0a:d1:59:cf:15:04 rssi: -30 freq: 5180 akm 0x2 cipher: uc 0x8 mc 0x8, wps 0 osen 0 force RSN 0 CC: CN 03:56:30.936557 [schedu][0x32a8c4060][19:56:30.934704]: [9015:I:PE] Auth TX: vdev 0 seq 1 seq num 2049 status 0 WEP 0 to 0a:d1:59:cf:15:04 03:56:30.962215 [schedu][0x32a8e9cce][19:56:30.942762]: [9015:I:PE] Auth TX: success (0) 03:56:30.963118 [schedu][0x32a9459d5][19:56:30.962349]: [9015:I:PE] Assoc req TX: vdev 0 to 0a:d1:59:cf:15:04 seq num 2050 03:56:31.020370 [schedu][0x32a972ff6][19:56:30.972031]: [9015:I:PE] Assoc req TX: success (0) 03:56:31.097421 [schedu][0x32aba3a9b][19:56:31.091639]: [9015:D:CMN_MLME] +---------CONNECTION INFO START------------+ 03:56:31.097422 [schedu][0x32aba3ad1][19:56:31.091642]: [9015:D:CMN_MLME] VDEV-ID: 0 self_mac:5e:26:46:04:46:0e 03:56:31.097424 [schedu][0x32aba3b07][19:56:31.091645]: [9015:D:CMN_MLME] ssid: Xiaomi_1500_2G bssid: 0a:d1:59:cf:15:04 RSSI: -30 dBm 03:56:31.097425 [schedu][0x32aba3b5a][19:56:31.091649]: [9015:D:CMN_MLME] Channel Freq: 5180 channel_bw: BW_160MHZ dot11Mode: DOT11_MODE_11BE 03:56:31.097427 [schedu][0x32aba3b9a][19:56:31.091652]: [9015:D:CMN_MLME] AKM: WPA2-PSK Encry-type: ENC_MODE_AES 03:56:31.097428 [schedu][0x32aba3bd2][19:56:31.091655]: [9015:D:CMN_MLME] DUT_NSS: 2 | Intersected NSS:1 03:56:31.097429 [schedu][0x32aba3c0f][19:56:31.091658]: [9015:D:CMN_MLME] Qos enable: 1 | Associated: yes 03:56:31.097431 [schedu][0x32aba3c4b][19:56:31.091661]: [9015:D:CMN_MLME] self_mld_addr:5e:26:46:04:46:8e link_id:1 03:56:31.097432 [schedu][0x32aba3c75][19:56:31.091664]: [9015:D:CMN_MLME] peer_mld_mac:1a:d1:59:cf:15:02 03:56:31.097433 [schedu][0x32aba3ca1][19:56:31.091666]: [9015:D:CMN_MLME] +---------CONNECTION INFO END------------+ 03:56:31.098084 [schedu][0x32abae871][19:56:31.093956]: [9015:I:OSIF] wlan0(vdevid-0): 5e:26:46:04:46:0e Connect with 0a:d1:59:cf:15:04 "Xiaomi_1500_2G" is SUCCESS, cmid 0xc000001 03:56:31.098395 [dp_rx_][0x32abc1b31][19:56:31.098047]: [9017:I:QDF] EAPOL-1 RX: SA:1a:d1:59:cf:15:02 DA:5e:26:46:04:46:8e 03:56:31.132631 [soft_i][0x32ac1e33b][19:56:31.117780]: [0:I:QDF] EAPOL-2 TX: SA:5e:26:46:04:46:8e DA:1a:d1:59:cf:15:02 msdu_id:0 status: succ 03:56:31.134102 [dp_rx_][0x32ac637dc][19:56:31.132562]: [9017:I:QDF] EAPOL-3 RX: SA:1a:d1:59:cf:15:02 DA:5e:26:46:04:46:8e 03:56:31.150446 [soft_i][0x32ac86b35][19:56:31.140073]: [0:I:QDF] EAPOL-4 TX: SA:5e:26:46:04:46:8e DA:1a:d1:59:cf:15:02 msdu_id:0 status: succ //vdev-1 03:56:31.134098 [schedu][0x32ac63762][19:56:31.132556]: [9015:I:CMN_MLME] vdev 1 cm_id 0xc010001: Connecting to Xiaomi_1500_2G 0a:d1:59:cf:15:03 rssi: -39 freq: 5785 akm 0x2 cipher: uc 0x8 mc 0x8, wps 0 osen 0 force RSN 0 CC: CN 03:56:31.274214 [schedu][0x32aef6222][19:56:31.273072]: [9015:D:CMN_MLME] +---------CONNECTION INFO START------------+ 03:56:31.274217 [schedu][0x32aef623d][19:56:31.273074]: [9015:D:CMN_MLME] VDEV-ID: 1 self_mac:5e:26:46:04:46:0f 03:56:31.274271 [schedu][0x32aef6258][19:56:31.273075]: [9015:D:CMN_MLME] ssid: Xiaomi_1500_2G bssid: 0a:d1:59:cf:15:03 RSSI: -39 dBm 03:56:31.274274 [loc-mq][0x32aef62d4][19:56:31.273084]: [9024:D:HDD] wlan_hdd_cfg80211_get_channel_sta: freq:5180, ch_width:5, c_freq1:5250, c_freq2:0 03:56:31.274276 [schedu][0x32aef6339][19:56:31.273087]: [9015:D:CMN_MLME] Channel Freq: 5785 channel_bw: BW_80MHZ dot11Mode: DOT11_MODE_11BE 03:56:31.274279 [schedu][0x32aef6369][19:56:31.273089]: [9015:D:CMN_MLME] AKM: WPA2-PSK Encry-type: ENC_MODE_AES 03:56:31.274281 [schedu][0x32aef6384][19:56:31.273091]: [9015:D:CMN_MLME] DUT_NSS: 2 | Intersected NSS:1 03:56:31.274284 [schedu][0x32aef639f][19:56:31.273092]: [9015:D:CMN_MLME] Qos enable: 1 | Associated: yes 03:56:31.274286 [schedu][0x32aef63bf][19:56:31.273094]: [9015:D:CMN_MLME] self_mld_addr:5e:26:46:04:46:8e link_id:2 03:56:31.274289 [schedu][0x32aef63d5][19:56:31.273095]: [9015:D:CMN_MLME] peer_mld_mac:1a:d1:59:cf:15:02 03:56:31.274291 [schedu][0x32aef63ed][19:56:31.273096]: [9015:D:CMN_MLME] +---------CONNECTION INFO END------------+ 03:56:31.354837 [schedu][0x32af4ddeb][19:56:31.291789]: [9015:I:OSIF] wlan0(vdevid-1): 5e:26:46:04:46:0f Connect with 0a:d1:59:cf:15:03 "Xiaomi_1500_2G" is SUCCESS, cmid 0xc010001
STA MLD mac:5e:26:46:04:46:8e
STA LINK1 mac:5e:26:46:04:46:0e
STA LINK2 mac:5e:26:46:04:46:0f
AP MLD mac:1a:d1:59:cf:15:02
Ap link1 mac:0a:d1:59:cf:15:04
Ap link2 mac:0a:d1:59:cf:15:03
//空口
157信道无auth\assoc\eapol;
2.2.1 EHT ADDBA建立
根据协议来看,支持mlo时,BIT5-7位是100(3),可以比对sniffer来确认是否支持1k,用白话来说,11AX中为了提高wifi吞吐量,引入了BAK机制,即一次发过个包,但只确认一次,所以这个BAbuffer将决定一次发包的长度,即A-MPDU聚合包长度,其与吞吐量有关系;
(1)一个由于BA协商问题影响吞吐的案例:wifi7连接吞吐只有20M,根据空口看,在建立连接之后,路由会delete BA,会导致双端没有BAK,按照TCP-ACK-rts/cts跑,不能发聚合包。
2.2.2 加密方式限制
根据协议来看,规定了Wi-Fi7支持wpa2/wpa3加密,不在支持open加密,可以根据厂商需求进行豁免;
2.3 MLSR/MLMR switch
协议中并没有对link切换进行详细规定,这部分主要取决于厂商实现,MTK平台目前wifi7只有MLMR模式,高通平台都支持,切换的场景如下:
1.低延迟
adb shell
wpa_cli
>set_latency_level 4
2.beacon miss;
3.tx bad;
4.高吞吐;
5.弱信号;
6.共存退避;
2.4 eMLSR switch
eMLSR与MLMR&eMLMR不共存,一般支持MLMR的设备将不支持eMLSR,那么什么时候支持MLMR,什么时候支持MLMR,取决于设备之间的协商,例如DBS手机+HBS路由,此时无法支持MLMR,如果设备支持EMLSR,设备会在口中交互中包含EML IE,标明支持emlsr,wifi连接时会将11be IE信息填充到空口中;
2.4.1 EML IE(Enhance Multi-link)
2.4.2 eMLSR transmission/receiver
eMLSR模式下,一条link发包没完成之前,另外一条link是“聋子”,不能说话和听话。
2.4.3 切换门限
目前在低延迟模式下会切eMLSR,此外,高通也提供了ioctl接口,上层可以增加切换的场景:
12518 {QCA_WLAN_VENDOR_ATTR_CONFIG_EMLSR_MODE_SWITCH,
12519 hdd_set_emlsr_mode},
如果读到这里,你觉得有所收获,就关注下小编的公众号,未来一起进步~