面向儲存的無損以太網:DCB、PFC、ECN
以太網在擁塞時會丟幀;而為光纖通道(Fibre Channel)或 RDMA 設計的儲存協議則假定永遠不會丟包。數據中心橋接(DCB)通過按優先級的流量控制和頻寬分配彌補了這一差距,RoCE 在此基礎上再加入擁塞信令。整個體系的無損程度取決於其中最差的那條鏈路:一個每百萬幀丟一幀的臨界光模組就足以釀成儲存故障。本頁說明這些機制,並將其轉化為物理層要求。
DCB 工具集
| 標準 | 名稱 | 作用 |
|---|---|---|
| IEEE 802.1Qbb | PFC——基於優先級的流量控制 | 按流量類別(0–7)發送暫停幀:擁塞的接收端可以只暫停某一類流量,而不用暫停整個端口 |
| IEEE 802.1Qaz | ETS——增強型傳輸選擇 | 為各類別保證頻寬份額(例如儲存佔 50%,局域網佔 50%) |
| IEEE 802.1Qaz | DCBX——DCB 交換協議 | 基於 LLDP,在交換機與 NIC 之間協商 PFC/ETS 設定 |
| IEEE 802.1Qau | CN——擁塞通知 | 很少部署 |
| RFC 3168 + DCQCN | ECN 標記 + 速率控制 | 佇列積壓時交換機對報文打標;RoCE NIC 據此降速,從而在觸發 PFC 之前化解擁塞 |
RoCE 如何保持無損
- 儲存/RDMA 流量通過 DSCP 或 802.1p 打上專用優先級標記(通常是 3 或 4)。
- 路徑上每個端口都只為該優先級啟用 PFC,緩衝區的餘量(headroom)根據鏈路速率和線纜長度(在途位元組數)來配置。
- ECN 閾值提前對報文打標;NIC 運行 DCQCN 來降低發送速率,使 PFC 只在萬不得已時才觸發。
- ETS 在局域網負載下仍為儲存類別保證其頻寬。
- DCBX 保持 NIC 與交換機設定一致;一旦不匹配,無損性就會在不知不覺中被破壞。
FC 和 InfiniBand 預設就在每條鏈路上通過信用(credit)機制實現同樣的效果;以太網則需要人工配置、驗證和監測(FC 協議基礎、 InfiniBand 傳輸)。
可能出現的問題
| 問題 | 影響 | 檢測 |
|---|---|---|
| 某一跳未啟用 PFC / 優先級配置錯誤 | 負載下丟包;RDMA 重傳;時延突增 | 本該非零的暫停幀計數為零;該類別出現丟包 |
| PFC 風暴 | 卡死的接收端無限期暫停上游;擁塞蔓延至整個網絡 | 暫停幀氾濫;看門狗計數器 |
| PFC 死鎖 | Clos 網絡中出現循環緩衝依賴;該類別所有流量停止 | 需要死鎖檢測/看門狗機制來打破 |
| 餘量對長線纜/光模組來說不夠 | 即使啟用 PFC 仍丟包 | 暫停幀計數在增長的同時仍有丟包 |
| ECN 閾值設定錯誤 | 過早:吞吐量下降;過晚:PFC 氾濫 | ECN 標記計數器、NIC 上的 CNP 計數器 |
| 鏈路上的物理層錯誤(CRC、FEC 不可糾正) | 幀丟失,任何流量控制都無法挽回 | 端口錯誤計數器、FEC 計數器——VDM 與 FEC 指標 |
不使用 DCB 的 iSCSI
iSCSI 運行於 TCP 之上,能夠承受丟包,但代價是時延和重傳。無論是否使用 DCB,以下都是最佳實踐:
- 每個網絡使用專用 VLAN/子網,雙網絡冗餘,主機側啟用 MPIO;
- 端到端啟用巨型幀(MTU 9000);
- 發起端與目標端之間不超訂;25G/100G 上聯鏈路按儲存陣列的需求配置容量;
- 每條 25G 以上鏈路都啟用 FEC;CRC 計數器保持為零;
- 可選地為 iSCSI 類別啟用 PFC 以平滑微突發流量(許多儲存陣列廠商建議這樣做)。
物理層要求
| 要求 | 原因 | 做法 |
|---|---|---|
| 每條 25G 以上鏈路都啟用並匹配 FEC | RoCE 無法容忍未加保護的 25G/50G 通道的原始誤碼率 | FEC 與鏈路訓練 |
| CRC 與不可糾正 FEC 計數為 0 | 每丟失一幀都會阻塞一個佇列 | 一旦計數增加立即警報 |
| 接收功率處於窗口內且留有餘量 | 臨界光模組在溫度變化下會突發錯誤 | Rx 功率與鏈路預算 |
| 速率/雙工/自動協商一致 | DAC 需要兩端都啟用自動協商 + 鏈路訓練 | 銅纜與 DAC |
| 線纜長度符合餘量假設 | 餘量是按在途位元組數計算的 | 機櫃內優先用 DAC,列間用 SR/AOC,機房間用 DR/LR |
| 身份資訊被 NIC 和交換機接受 | 被拒絕的光模組會導致無鏈路或降速運行 | 廠商鎖定 |
監測清單
- 每端口:按優先級統計的暫停幀收發數、ECN 標記數、各類別丟包數、CRC、FEC 可糾正/ 不可糾正計數、鏈路抖動次數。
- 每 NIC:CNP 收發數、重傳數、亂序數、超時數。
- 每個光模組:接收/發射功率與溫度趨勢(監測)。
- 將儲存尾部時延突增與上述指標進行關聯分析——出問題的往往是物理層,而不是儲存陣列本身。
在 CodingBox 中
無損網絡是由普通光模組構建的,只是對其要求更高。在實驗室進行的進廠檢驗——身份資訊、校驗和、將實時 DDM 與典型值對比、保存基線數據——正是將臨界模組擋在網絡之外的方法,因為在這樣的網絡中,一條壞鏈路就足以讓應用的時延 SLA 失守(Check transceiver、 DDM)。
PFC 和 ECN 在其他轉發機制中的位置,以及物理層錯誤如何在其中顯現: 轉發基礎。