把"靈活調度算法"裝進"真實硬件"——一種支持 8192 并發流、25.5% 單流吞吐提升的開源多隊列智能網卡,讓可編程報文調度研究告別"只能仿真"的尷尬。
報文調度(Packet Scheduling)是決定網絡吞吐、時延、公平性與服務質量的核心機制。長期以來,商用智能網卡把調度邏輯封裝在私有軟硬件棧中,研究者難以復現、對比與改良;而現有開源 NIC 框架(Corundum、PNA、OpenNIC 等)雖提供數據通路或接口擴展,卻普遍缺乏原生的硬件調度原語。最新綜述顯示,相關工作中近 40 項研究仍只能依賴仿真器或孤立 FPGA 驗證,難以形成"設計—部署—評測"一體化的研究平臺。
為彌合這一鴻溝,西安電子科技大學團隊(Weitao PAN、Yichen DENG、Zekun WANG、Binghao YUE、Jiangyi SHI)推出了SchedraNIC——一款面向真實部署的開源可編程多隊列智能網卡平臺。該工作已被中國計算機學會期刊 Frontiers of Computer Science (FCS) 收錄(DOI: 10.1007/s11704-026-51906-2,2026-03-23 錄用)。代碼已在 GitHub 開源:
https://github.com/nViol3t/SchedraNIC。
SchedraNIC = Corundum 數據通路 + RAM 鏈表多隊列管理器 + 流水線化 BMW-PIFO 調度器 + 統一 PUSH/POP 接口。它不替代商用智能網卡,而是為學術界提供一個開放、可復現、可擴展的可編程調度實驗底座。
為支持數據中心場景下的細粒度流隔離,SchedraNIC 需要同時管理最多 8192 條并發流。傳統方案依賴集中式仲裁(例如一顆 8192:1 的多路選擇器),會帶來三大問題:關鍵路徑暴增、資源占用高、擴展性差,幾乎每次擴容都要重做時序閉合。
SchedraNIC 用每流獨立 RAM 鏈表取代集中仲裁:每個隊列以鏈表形式緩存待調度報文,入隊 / 出隊是 O(1) 操作;并通過"觸發式活躍隊列維護"機制——僅當隊首到達或dequeue 完成時才更新活躍隊列集合——讓活躍集規模與實時活躍流數自適應,避免了逐周期掃描所有隊列的代價。最終,整個隊列管理模塊的資源復雜度降至 O(N) 線性級,并徹底擺脫了大型 MUX 的高扇出與時序壓力。
PIFO(Push-In-First-Out)是 SIGCOMM 2016 提出的可編程調度抽象——它把所有調度策略統一表達為「rank 計算 + PUSH/POP 序列」,讓算法與硬件解耦。SIGCOMM 2023 的 BMW Tree(平衡多路排序樹)進一步把 PIFO 擴展到大規模。
SchedraNIC 采用 8 層 4-way 的 BMW-PIFO,單結構容量約 65536 項,但加深比較樹會顯著拉長關鍵路徑——250 MHz 下極易時序違例。
團隊提出了一項結構級流水化優化:
把原本"單周期完成"的 RAM 讀—比較—寫操作,拆解為時間上分離的"讀階段"與"寫階段"。
這一改造在保持功能正確的前提下:
關鍵路徑顯著縮短,緩解了高扇出時序壓力;
僅增加一拍調度延遲,對 NIC 端到端時延幾乎無感;
吞吐和資源占用基本不受影響——屬于可控、可量化的工程取舍。
實測在 XCU50 + 250 MHz 下穩定收斂,且URAM 占比甚至從基線 3.59% 下降到 1.72%。
SchedraNIC 在驅動層引入新寄存器 MQNIC_QUEUE_RANK_WQE = 0x14,軟件只需算出每個包的 rank(高 13 bit)與 wqe(低 3 bit)一并寫入——硬件即按 rank 全局排序、按 PUSH/POP 原語執行。不同調度策略只是rank 計算函數的不同:
SP(嚴格優先級):rank = priority
WFQ / WF2Q:rank = quantize(virtual_finish_time)
EDF(最早截止):rank = deadline
SJF / SRPT:rank = packet_size 或 remaining_bytes
由此,算法演進與硬件迭代徹底解耦,未來探索學習型調度、多目標調度等也無需重做 RTL。
團隊在 Xilinx XCU50 FPGA 上實現了 SchedraNIC 原型,并搭建了"兩臺 Intel Core i3-13100 + 100GbE 直連"的真實測試床,與開源 Corundum 在相同硬件平臺、相同 250 MHz 頻率下做了嚴格的同構對比。
| 場景 | SchedraNIC | Corundum | 提升 |
|---|---|---|---|
| 單流 (iperf3) | 18.20 Gbps | 14.50 Gbps | +25.5% |
| 8 流聚合 | 91.42 Gbps | 89.01 Gbps | +2.7% |
單流場景的顯著領先,源于用 RAM 鏈表通路替代了 Corundum 中開銷較高的仲裁邏輯。
測試條件:10 個隊列,1000 包,相同 rank 計算與主機控制。
| 策略 | 關鍵指標 | SchedraNIC | Corundum |
|---|---|---|---|
| SP | 優先級反轉次數 | 0 | 16 |
| WFQ | 完成位差(越大越好) | 344 | 71(≈ 4.9×) |
| EDF | 截止違約率 | 5.2% | 86.4% |
| SJF | size-aware 特性 | 部分捕獲 | 基本無關 |
在 SP / WFQ / EDF 三類策略上,SchedraNIC 全面優于 Corundum,證明了硬件級可編程調度的可行性與高保真度。
| 指標 (% of XCU50) | SchedraNIC | Corundum |
|---|---|---|
| LUT | 8.77% | 6.78% |
| FF | 5.73% | 5.05% |
| BRAM | 15.40% | 12.87% |
| URAM | 1.72% | 3.59% |
引入完整的可編程調度子系統后,LUT/FF/BRAM 僅小幅上升,URAM 反而下降——這與論文亮點中所描述的"約 3–5% 額外硬件代價"相吻合。

科研價值:作為首批把"硬件調度架構 + 可編程接口 + 系統級評測"整體集成進開源 NIC 框架的工作之一,SchedraNIC 把可編程調度研究從"仿真"和"孤立 FPGA"推進到了端到端真實平臺。
工程價值:所有創新點都強調線性資源復雜度與時序閉合可行性,能在主流 100 Gbps FPGA NIC 上穩定運行,便于復現與擴展。
生態價值:基于業界廣泛采用的 Corundum 框架,社區可無縫繼承已有的 PCIe/DMA/Linux 驅動棧,并快速嫁接自己的調度策略;硬件團隊也可借助 cocotb 仿真在寫 RTL 之前先驗證算法效果。
未來方向:SchedraNIC 后續可承載更先進的可編程調度算法、更豐富的 QoS 策略,并在數據中心、邊緣網絡等場景做端到端系統評測。