团队发布开源可编程调度网卡平台 SchedraNIC

作者:潘伟涛,文章来源:网络交换FPGA

把"灵活调度算法"装进"真实硬件"——一种支持 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 接口。它不替代商用智能网卡,而是为学术界提供一个开放、可复现、可扩展的可编程调度实验底座。

三大核心创新
创新①:RAM 链表多队列管理器——告别 8192:1 仲裁瓶颈
为支持数据中心场景下的细粒度流隔离,SchedraNIC 需要同时管理最多 8192 条并发流。传统方案依赖集中式仲裁(例如一颗 8192:1 的多路选择器),会带来三大问题:关键路径暴增、资源占用高、扩展性差,几乎每次扩容都要重做时序闭合。

SchedraNIC 用每流独立 RAM 链表取代集中仲裁:每个队列以链表形式缓存待调度报文,入队 / 出队是 O(1) 操作;并通过"触发式活跃队列维护"机制——仅当队首到达或dequeue 完成时才更新活跃队列集合——让活跃集规模与实时活跃流数自适应,避免了逐周期扫描所有队列的代价。最终,整个队列管理模块的资源复杂度降至 O(N) 线性级,并彻底摆脱了大型 MUX 的高扇出与时序压力。

创新②:时序优化的 BMW-PIFO 调度器——把 65536 项排序"塞进"250 MHz
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%。

创新③:统一 PUSH/POP 接口——一套硬件,跑通 SP / WFQ / EDF / SJF
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%

引入完整的可编程调度子系统后,LUT/FF/BRAM 仅小幅上升,URAM 反而下降——这与论文亮点中所描述的"约 3–5% 额外硬件代价"相吻合。

一张图理解 SchedraNIC

学术意义与社会价值
. 科研价值:作为首批把"硬件调度架构 + 可编程接口 + 系统级评测"整体集成进开源 NIC 框架的工作之一,SchedraNIC 把可编程调度研究从"仿真"和"孤立 FPGA"推进到了端到端真实平台。

. 工程价值:所有创新点都强调线性资源复杂度与时序闭合可行性,能在主流 100 Gbps FPGA NIC 上稳定运行,便于复现与扩展。

. 生态价值:基于业界广泛采用的 Corundum 框架,社区可无缝继承已有的 PCIe/DMA/Linux 驱动栈,并快速嫁接自己的调度策略;硬件团队也可借助 cocotb 仿真在写 RTL 之前先验证算法效果。

. 未来方向:SchedraNIC 后续可承载更先进的可编程调度算法、更丰富的 QoS 策略,并在数据中心、边缘网络等场景做端到端系统评测。