度實戰(zhàn):OFDMA、RU分配與高密場景優(yōu)化)
做無線網(wǎng)絡(luò)優(yōu)化這些年我花在AX調(diào)度上的時間比調(diào)RF信道還要多。很多人覺得WiFi 6就是比WiFi 5快個一兩百兆其實真正的分水嶺在調(diào)度。802.11axWiFi 6引入的OFDMA、TWT、BSS Coloring讓AP不再是一個只能逐臺派單的“快遞站”而是一個可以把幾十條包裹按不同巷口同時分發(fā)的“智能樞紐”。你手里的AP如果只是開了AX模式但沒有理解調(diào)度那實際用起來和WiFi 5區(qū)別不大如果調(diào)度調(diào)到位了高密度場景下的時延和吞吐能發(fā)生質(zhì)變。這篇文章想把這套AX調(diào)度從原理、機制到抓包驗證、常見坑整體拆一遍適合正在做高密辦公、會展場館、高校宿舍無線優(yōu)化或者單純想搞懂WiFi 6為什么能在人多的時候還保持穩(wěn)定的人。1. AX調(diào)度要解決的真正問題1.1 高密場景下老協(xié)議為什么“卡”從做網(wǎng)絡(luò)運維的第一年開始我就在和高密度場景下的空口效率較勁。辦公樓中午休息時幾百個終端同時掛在同一臺AP上視頻會議、文件傳輸、網(wǎng)頁加載全擠在一起沒人覺得網(wǎng)快。但看無線網(wǎng)卡的協(xié)商速率每個終端都顯示著不錯的鏈路速率問題到底出在哪答案不在射頻物理層而在MAC層的介質(zhì)訪問機制。在802.11a/g/n/ac時代所有終端共享同一個信道用的是CSMA/CA的隨機競爭機制一個時刻只有一臺設(shè)備在信道上收發(fā)數(shù)據(jù)其他設(shè)備都得退避等待。你可以把這個過程想象成一條單車道所有車輛排著隊前一輛沒走完后一輛就得等哪怕旁邊還有整片空草地。到了802.11ac雖然加入了MU-MIMO理論上AP可以同時給多個終端發(fā)送數(shù)據(jù)但MU-MIMO是在天線空間上并行要依賴終端的多天線能力和足夠好的信噪比。在2x2天線的終端居多、環(huán)境干擾又強的辦公區(qū)MU-MIMO的收益非常有限。而且它只管下行上行還是老規(guī)矩你爭我搶。換句話說老協(xié)議的根本問題是“頻譜空置”和“排隊浪費”。一個20MHz信道上哪怕分配給了單個終端它也只能占用一部分子載波其余子載波都是閑著的卻又不能給其他人用。設(shè)備越多等待時間越長TCP窗口漲不上去就會出現(xiàn)“信號很好、體驗很差”的場面。AX調(diào)度要解決的就是這種空口資源的浪費。1.2 OFDMA把一條路拆成多股分道802.11ax引入的正交頻分多址OFDMA是AX調(diào)度的地基。它把20MHz、40MHz、80MHz甚至160MHz的信道重新劃分成了許多小單位的資源塊。每個終端在使用時不一定要占據(jù)整個信道只需要占用其中一小段頻率資源即可。這個“小段頻率”在協(xié)議里叫資源單元RUResource Unit。通俗理解OFDM時代信道是一座獨木橋一個人上橋別人就要等OFDMA時代橋面被畫成多條車道電動車走一條道汽車走另一條道只要各守各道就能同時通過。調(diào)度器就是那個站在橋頭的交通管理員它決定一條道畫多寬、分配給誰、什么時候放行。OFDMA帶來的最大變化是“并發(fā)”從時間維度擴展到了頻域維度。AP可以在同一個下行物理幀里同時給多個終端發(fā)送數(shù)據(jù)前提是它們分別處在不同的RU上。上行也一樣AP發(fā)一個觸發(fā)幀終端們在同一時刻、各自的RU上把數(shù)據(jù)交上來。這是一種典型的頻域調(diào)度也是“AX調(diào)度”這個詞的核心內(nèi)涵。這里要區(qū)分兩個經(jīng)常被混淆的概念OFDMA和MU-MIMO。OFDMA是頻域并行不同終端用不同的頻率段MU-MIMO是空間域并行不同終端用不同的天線流。802.11ax把兩者結(jié)合起來調(diào)度器甚至可以在一幀里一部分用戶走OFDMA、另一部分用戶走MU-MIMO靈活性很高。但同時也會讓調(diào)度算法變得復(fù)雜這也是為什么同樣都標著AX不同廠商AP的表現(xiàn)可能差很多。2. 核心細節(jié)解析AX調(diào)度器的關(guān)鍵機制2.1 資源單元RU的劃分規(guī)則AX調(diào)度最底層的一個概念就是RU怎么劃分。在802.11ax的PHY層一個OFDM符號的子載波被按塊組織RU可以由26、52、106、242、484、996個音調(diào)tone組成。一個“音調(diào)”就是物理層一個可用于傳輸數(shù)據(jù)的OFDM子載波26個音調(diào)大約對應(yīng)2MHz帶寬屬于最小的RU。以最常見的20MHz信道為例整個信道大約有242個可用于數(shù)據(jù)傳輸?shù)囊粽{(diào)。如果全部拆成最小RU就是9個26-tone RU如果全合并則是1個242-tone RU。也可以混合比如1個52-tone RU加7個26-tone RU或者2個106-tone RU加1個26-tone RU。802.11ax在標準附錄里給了一張合法的RU分配表AP不能隨性組合必須按表里定義的組合方式劃分。RU組合方式并發(fā)終端數(shù)參考適合場景9個26-tone RU最多9個低速終端高密IoT、并發(fā)小包4個52-tone RU最多4個中速終端普通辦公混合業(yè)務(wù)2個106-tone RU最多2個高速終端視頻流、大文件下載1個242-tone RU1個極速終端單終端極限吞吐測試這個劃分直接決定了并發(fā)終端數(shù)和單用戶體驗速率的平衡。同樣一個20MHz信道全拆成9個小RU能讓9個低速率終端同時并發(fā)全合成一個大RU只能服務(wù)1個高速率終端。調(diào)優(yōu)AX調(diào)度本質(zhì)上就是在這兩者之間找平衡點。到了80MHz信道可用音調(diào)數(shù)約為968個最多可以分成37個26-tone RU。不過RU數(shù)量越多負責標記RU分配信息的HE-SIG-B字段就越長控制開銷也越大。所以實際場景里AP并不會無腦拆最小RU而是根據(jù)隊列積壓、用戶狀態(tài)和業(yè)務(wù)類型動態(tài)選擇。我在高密辦公區(qū)里見過最佳實踐AP自動調(diào)度平均每個用戶拿到26到52-tone RU特殊大流量用戶臨時拿到106-tone RU整體時延控制得很好。2.2 Trigger Frame上行調(diào)度怎么發(fā)起上行OFDMA比下行復(fù)雜因為數(shù)據(jù)在終端側(cè)AP不知道誰有數(shù)據(jù)要發(fā)。為了在指定時刻把多個終端的數(shù)據(jù)收上來AP必須發(fā)一個Trigger Frame觸發(fā)幀。這個幀里攜帶著RU分配信息告訴每個終端“你站在哪條泳道上、什么時候出發(fā)、用多大的力氣游”。具體到協(xié)議字段觸發(fā)幀里最關(guān)鍵的是RU Allocation字段和Associated RA信息。RU Allocation標記了每個終端的RU位置和大小Associated RA告訴終端自己是不是被觸發(fā)的目標此外還有目標功率字段控制終端的發(fā)射功率避免某個RU上的信號泄漏到旁邊的RU造成鄰頻干擾。終端收到觸發(fā)幀后根據(jù)里面的分配信息在指定時間對齊發(fā)送HE Trigger-based PPDU。所有終端共享同一套時間基準所以能精確地在同一時刻開始上行傳輸哪怕它們的數(shù)據(jù)長度不同。結(jié)束后AP回Broadcast BA一次上行調(diào)度完成。抓包時觸發(fā)幀的識別可以這樣看在Wireshark協(xié)議列會有“Trigger”字樣或者用顯示過濾器wlan.fc.type 1 wlan.fc.subtype 0找到控制幀再在幀詳情里檢索“Trigger”?,F(xiàn)在很多消費級網(wǎng)卡抓不到完整的HE觸發(fā)幀建議用支持monitor模式的企業(yè)級網(wǎng)卡或者用AP的調(diào)試接口抓。提示如果你抓包時看到大量觸發(fā)幀但上行并發(fā)成功率一直不高很可能是重疊BSS之間的同頻干擾在作祟這時候就要看一下BSS Coloring的配置而不只是盯著OFDMA開關(guān)。2.3 下行OFDMA與MU-MIMO的配合下行調(diào)度的數(shù)據(jù)源頭在AP一側(cè)所以AP可以完全自主決定把哪些終端的下行數(shù)據(jù)放在同一個物理幀的不同部分。下行觸發(fā)不需要專門的觸發(fā)幀AP直接發(fā)一個HE MU PPDU幀里的HE-SIG-B字段標明每個用戶的RU位置和空間流數(shù)。這里有一個關(guān)鍵的協(xié)同點下行OFDMA和MU-MIMO可以同時出現(xiàn)在同一個PPDU中。什么意思呢AP可以給用戶1分配26-tone RU加空間流0給用戶2分配26-tone RU加空間流1給用戶3分配52-tone RU加空間流0和1。這種二維調(diào)度既用頻域分用戶又在同一RU內(nèi)用空間域分用戶大幅提高了單幀的并發(fā)能力。但付出的代價也很現(xiàn)實調(diào)度器需要知道每個終端的信道狀態(tài)信息CSI以決定要不要做MU-MIMO預(yù)編碼。終端越多、天線組合越復(fù)雜計算量非線性上漲。很多AP在固件里默認關(guān)閉部分MU-MIMO組合就是怕調(diào)度復(fù)雜度高了之后影響整機轉(zhuǎn)發(fā)性能。這也解釋了為什么在終端很少時OFDMA優(yōu)勢不明顯在終端很多時計算力強的AP優(yōu)勢就出來了。2.4 TWT與BSS Coloring調(diào)度之外的補充手段AX調(diào)度不僅僅指RU分配還包括時間域的錯峰調(diào)度和空間域的復(fù)用。其中TWTTarget Wake Time是802.11ax主推的省電和錯峰機制AP和終端協(xié)商一個喚醒時間片終端在未輪到自己時進入doze狀態(tài)減少空口競爭。從調(diào)度的角度看TWT有點像給不同類型的用戶安排不同的出行時段。會議室AP可以把打印機、傳感器、后臺同步用戶放進低優(yōu)先級的TWT組喚醒間隔設(shè)大把視頻終端放進高優(yōu)先級組喚醒周期很短。這樣雖然有250個終端在線但每個時刻真正醒著并參與數(shù)據(jù)收發(fā)的終端可能只有30個沖突概率大幅下降。BSS Coloring則是空間復(fù)用的手段。每個BSS用6bit的顏色編號標識自己終端在偵聽信道時如果收到的信號來自相鄰BSS且顏色不同同時信道能量低于閾值就可以認為信道是可以穿插使用的允許并行發(fā)送。這相當于給相鄰區(qū)域貼上了不同顏色標簽只要確定別人家的信號不會撞到自己家的數(shù)據(jù)就不必互相避讓。完整的AX調(diào)度應(yīng)該是“頻域OFDMA 空間MU-MIMO 時間TWT 顏色復(fù)用”四位一體。你只調(diào)OFDMA而不管TWT或者只開TWT而沒配好BSS Coloring都算不上真正調(diào)好了AX調(diào)度。3. 實操過程與核心環(huán)節(jié)實現(xiàn)3.1 配置側(cè)確認AP是真的開了AX調(diào)度很多朋友以為把SSID換成“AX”字樣開出11ax模式AX調(diào)度就自動生效了。實際情況不是。不同廠商的默認配置差異很大我測過幾個主流企業(yè)AP有的默認關(guān)閉上行OFDMA只開啟下行OFDMA還有的默認連OFDMA都沒開只是開了HE能力字段。所以第一步永遠是確認環(huán)境查看AP的無線模式確認5G射頻工作在802.11ax-only或ax/ac mixed模式。如果還在兼容11a/11n調(diào)度器會被迫頻繁回退到傳統(tǒng)模式。在5G SSID的射頻配置里找到“OFDMA”相關(guān)開關(guān)。有的AP叫“OFDMA”有的叫“Orthogonal Frequency Division Multiple Access”還有叫“Multi-User Scheduling”的中文界面可能是“多用戶調(diào)度”或“資源調(diào)度”。必須同時確認“Downlink OFDMA”和“Uplink OFDMA”兩項都是Enabled。查看“TWT”開關(guān)。如果是“Target Wake Time”不要一刀切關(guān)閉。默認Auto/Enabled通常夠用但對于時延敏感的終端比如視頻會議終端建議在SSID級別關(guān)閉TWT或者讓終端加入白名單豁免。配置命令方面我用過的某廠商AP可以這樣查詢ssh adminap-a.office.corp ap# show wireless radio 1 ap# show wireless ssid office-5g如果看到OFDMA Downlink: Enabled和OFDMA Uplink: Enabled說明基本OK。如果只有單向下行OFDMA就需要進到SSID配置里打開上行調(diào)度。不同廠商命令不同但配置項的邏輯是一樣的。注意開啟上行OFDMA之后終端必須支持HE Trigger-based PPDU老終端802.11ac/n會退回傳統(tǒng)上行這是正常的別被嚇到。高密環(huán)境里新舊終端混存時建議把傳統(tǒng)終端和AX終端分開走不同SSID否則兼容終端的輪詢會拖慢AX調(diào)度器的節(jié)奏。3.2 抓包驗證調(diào)度是“真開”還是“假開”最有效的驗證方式是到AP覆蓋區(qū)域用一個支持AX調(diào)度的終端連接目標SSID然后讓幾個終端同時做流量在AP側(cè)或鏡像端口上抓包。抓包要點找一個監(jiān)聽無線網(wǎng)卡設(shè)置成monitor模式信道鎖定在目標5G頻段。抓到Beacon后先確認Beacon幀里是否帶HE Capabilities字段基本可確認AP在廣播HE能力。繼續(xù)抓找Trigger幀。在Wireshark的顯示過濾器里可以用(wlan.fc.type 1) (wlan.fc.subtype 0)抓控制幀然后從協(xié)議樹中找Trigger。如果能看到周期性的Trigger幀并且Trigger幀后的幾毫秒內(nèi)出現(xiàn)來自多個不同終端的上行幀那么上行OFDMA一定是生效的。下行調(diào)度看HE MU PPDU。抓包里若出現(xiàn)“Multiple Users”列或協(xié)議樹里的HE MU標識說明多用戶下行調(diào)度在工作。我一般不看那些復(fù)雜字段直接打開捕獲文件的“Protocol Column”如果看到同一時間戳下有多個終端的幀突發(fā)成組出現(xiàn)那這個AP的AX調(diào)度就沒白開。如果抓包十分鐘始終只有單用戶的上行就得回去檢查上行OFDMA開關(guān)。3.3 場景調(diào)優(yōu)RU策略和TWT參數(shù)怎么給AX調(diào)度器雖然自動跑但我還是會做幾件“手動干預(yù)”的事情。高密辦公場景AP天線少、終端多我希望并發(fā)終端數(shù)優(yōu)先。這時候把SSID的調(diào)度模式設(shè)置為“高密度優(yōu)化”有些設(shè)備上叫“公平調(diào)度時間公平”或者“最大并發(fā)”。RU分配會盡量偏向小RU讓更多終端擠進來。實測下來高密會議室里開啟這個策略人均時延能降低30%左右。視頻流和大文件場景大RU更適合。如果此時終端只有個位數(shù)AP自動調(diào)度也會給大RU。但混合場景下某個終端在看4K視頻另一個終端只是發(fā)微信默認調(diào)度器可能給視頻終端分配太少RU導(dǎo)致卡頓。我一般會在AP的QoS策略里給視頻終端的流量標記高優(yōu)先級同時開啟“按需分配”模式讓視頻終端在隊列積壓時能拿到大RU。IoT場景大量低速終端比如電池傳感器不建議全部跑在WiFi 6上。如果必須跑同一個SSID優(yōu)先開啟TWT并把TWT喚醒間隔設(shè)成合理的值比如3到5秒。如果有些傳感器對喚醒時延不敏感甚至可以為它們單建SSIDTWT間隔調(diào)大到5到10秒能明顯降低空口競爭。這些調(diào)整的通用步驟是先在低峰期改一個變量觀察24小時再改下一個。不要一次開一堆功能否則出問題根本不知道是哪個配置引起的。4. 常見問題與排查技巧實錄4.1 假AX開了AX模式速率不升反降這是最常見的“假AX”現(xiàn)象。排查順序是先看終端是否真的以HE速率接入。在終端無線網(wǎng)卡狀態(tài)里確認鏈路速率是超過1Gbps還是只有866Mbps。很多手持設(shè)備只支持2x2 MIMO加80MHzHE速率也就是1201Mbps如果你的5G信道是40MHz速率再減半那就別怪AX調(diào)度是信道配置本身的問題。另外如果同一AP下大量老終端關(guān)聯(lián)AP為了兼容傳統(tǒng)終端可能會在混合傳輸中壓縮OFDMA的TXOP。最好的辦法是查看AP的“協(xié)議分布”數(shù)據(jù)。如果11ac老終端占比超過60%建議把老終端分流到另一個SSID或者只在5G頻段強制ax-only模式。4.2 上行OFDMA抓不到Trigger幀抓包時發(fā)現(xiàn)整個空口只有單用戶上行沒有周期性的Trigger幀。先確認監(jiān)聽網(wǎng)卡是不是也支持HE monitor模式有些普通USB無線網(wǎng)卡抓不到HE控制幀。如果你能抓到Beacon但抓不到Trigger大概率是網(wǎng)卡過濾了控制幀切換網(wǎng)卡或改用AP側(cè)抓包工具再試。如果排除了抓包問題再檢查AP上行OFDMA開關(guān)是否真的生效以及固件版本是否包含上行調(diào)度優(yōu)化。部分中低端AX AP對上行調(diào)度支持不完整只做了下行OFDMA上行Trigger頻率極低這時候無論怎么調(diào)終端上行并發(fā)都起不來?,F(xiàn)象可能原因處理方向能協(xié)商HE速率但下行無MU幀固件未開啟下行OFDMA打開OFDMA DownlinkBeacon帶HE但無Trigger上行OFDMA未開或固件不支持打開OFDMA Uplink并升級固件有Trigger但終端無響應(yīng)終端不支持HE TB PPDU檢查終端協(xié)議能力換AX終端測試有MU幀但只有1個用戶調(diào)度器認為并發(fā)收益低增加并發(fā)終端數(shù)并調(diào)公平策略4.3 TWT開啟后視頻會議卡頓TWT本意是省電但把喚醒周期調(diào)得太大終端可能長時間處于doze狀態(tài)外部語音包到達時終端還在睡。如果你的AP在SSID級開通了TWT默認間隔又比較激進很容易在音視頻場景翻車。我踩過一次坑客戶要求開TWT我把喚醒間隔設(shè)成了5秒結(jié)果視頻會議終端每5秒才醒一次畫面卡成PPT。后來把TWT間隔改成1秒同時只對支持彈窗喚醒的終端開TWT才恢復(fù)正常。經(jīng)驗是TWT要分設(shè)備對待低延遲設(shè)備不給TWT或者設(shè)一個短于100ms的服務(wù)周期。4.4 RU分配不均導(dǎo)致交互應(yīng)用超時當某個終端在持續(xù)做TCP高速下載時AP調(diào)度器會傾向于給它分大RU和高MCS這看起來公平但如果旁邊有10個終端都在做實時語音就會出現(xiàn)“少數(shù)人占道”的局面。我一般會在AP配置里把調(diào)度公平策略從“吞吐最大化”改成“時間公平”。吞吐最大化會把RU按需分配大流量用戶吃到更多資源時間公平會讓每個終端大致占用相同的空口時間這樣大流量終端會被限速但整體交互體驗會穩(wěn)很多。適合高密交互場景。5. 項目落地AX調(diào)度選型與驗收清單5.1 企業(yè)AP選型時怎么考察調(diào)度能力同樣標著802.11ax不同AP的調(diào)度能力差得非常多。選型時不要只看峰值速率和天線數(shù)量要把“調(diào)度”當成一個獨立能力去考察。先看規(guī)格表里是否明確寫了“OFDMA Downlink/Uplink”和“MU-MIMO”同時支持。很多入門級AX AP只支持下行OFDMA上行需要額外許可證或固件版本才開。再看是否支持TWT的調(diào)度組管理而不只是廣播TWT。能按終端分組設(shè)置不同喚醒間隔的AP在高密場景里明顯更靈活。然后看調(diào)度算法有沒有可調(diào)參數(shù)。我比較看重“公平策略”和“RU分配傾向”這兩項。如果固件里只能開或關(guān)OFDMA沒有更細的調(diào)度策略那到了高密場景很難精調(diào)。有條件的話在項目招標前做一輪真實場景PoC同時連接50個AX終端跑上下行混合流量看抓包里Trigger幀的周期和RU分配合理性。5.2 一套AX調(diào)度驗收清單我在項目驗收時會把下面的幾項列進測試報告只要有一項不達標就說明AX調(diào)度沒有真正跑起來5G頻段信道上抓包能穩(wěn)定看到Beacon中的HE能力字段。下行流量高峰期抓包中HE MU PPDU數(shù)量占多用戶PPDU的50%以上。上行流量高峰時能看到周期性Trigger幀且同一個Trigger周期內(nèi)至少有2個及以上終端同時上行。開啟TWT后用打流終端監(jiān)測空口空閑時間的降低幅度幅度不明顯說明TWT參數(shù)沒生效。連續(xù)跑30分鐘并發(fā)業(yè)務(wù)AP測得的“每用戶空口公平指數(shù)”不低于0.8。這套清單不一定需要昂貴工具一臺支持monitor模式的網(wǎng)卡加Wireshark就能完成大部分驗證。6. 一點個人體會AX調(diào)度這個功能查資料不難難的是在一個真實的無線環(huán)境里把它的作用調(diào)出來。做了這幾年網(wǎng)絡(luò)優(yōu)化我越來越覺得WiFi 6的價值不在標稱速率而在空口資源的調(diào)度能力。先把環(huán)境里的傳統(tǒng)終端管好再開OFDMA最后用抓包結(jié)果驗證每次調(diào)整這套節(jié)奏基本不會走偏。如果你手頭的AP有比較完善的調(diào)度統(tǒng)計頁面一定要每周看一次里面的“RU利用率”和“每用戶空口占用時間”。這兩個指標比RSSI和信噪比更能反映用戶體驗。最后分享一個小技巧調(diào)AX調(diào)度時不要一上來就改參數(shù)先在同一個位置、同一個終端上用iperf3 -R和iperf3各跑一輪留下數(shù)據(jù)改完后再跑同樣的腳本對比上下行各分位數(shù)的抖動值用數(shù)據(jù)判斷調(diào)度策略是否值得保留。這樣至少不會再為了一個“看起來高大上”的開關(guān)去盲改。