![](https://s5-media.51cto.com/ost/pc/static/noavatar.gif)
高性能网络SIG月度动态:virtio技术委员会通过flow director提案,netdim调节特性正式合入上游社区
高性能网络 SIG(Special Interest Group) :在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想,打造高性能网络协议栈,提升云计算时代数据中心应用的网络性能。
01 整体进展
本月,高性能网络 SIG 的工作主要集中在 virtio 和 SMC 上,取得了以下关键进展:
1. 将 ANCK 自研的 IPPROTO_SMC 方案贡献至上游社区。
2. netdim 参数列表调节特性正式合入上游社区,并回合至 ANCK。
3. 与 Nvidia、Marvell 等公司协作推进的 virtio flow director 提案获得 virtio 技术委员会通过进入 virtio 规范。
02 ANCK 通用内核网络协议栈
安全
ANCK 5.10 (PR3413) 和 ANCK 4.19 (PR3416) 本月分别修复了 CVE-2023-52628。
03 SMC
本月 SIG 在 SMC 领域的主要工作包括上游 IPPROTO_SMC 的合并以及其它优化和修复。
IPPROTO_SMC 合入上游
IPPROTO_SMC 是 SIG 为 IP 协议族新增的一种协议类型,旨在提高 SMC 与 TCP 在功能上的一致性以及减少 SMC 回退时的性能损失。本月 SIG 在推进 IPPROTO_SMC 合入上游的过程中迭代了 4 个版本,优化了相关函数定义、文件结构、和社区敲定了 IPPROTO_SMC 的数值选择,最终正式合入上游 [1]。
上游其它优化与修复
- SMC-R sndbuf/RMB 上限突破 512 KB 的优化,已合并到上游[2],旨在大包场景下使用较大共享内存获得更好的吞吐表现。
- 针对 SMC 回退后 sk_{snd|rcv}buf 与直接使用 TCP 时不同的问题的修复,已合并到上游[3]。
04 virtio
本月 SIG 在 virtio 领域的主要工作集中于提供中断参数列表调节通道和 flow director。
NetDIM 参数列表调节
动态中断调节(netdim)可以根据当前流量状况,自动调整网卡的中断频率,从而提高数据处理效率。然而,不同网卡对中断参数列表的需求各不相同,例如 ICE 和 IDPF 等现代网卡对各自的中断参数列表进行了自定义配置。而 netdim 在 virtio-net 网卡上性能未达预期,主要原因之一也是不合适的中断参数列表。因此,SIG 为上游社区和 ANCK-5.10.134-17.y 支持了基于用户态工具 ethtool 设置中断参数列表的方法[4],以允许用户灵活调节 netdim,从而实现最佳的网络吞吐和时延。
接收队列选择 - Flow Director
Flow director 特性使网卡能够依据数据包的 MAC、IP 和 TCP 等头部字段进行匹配,将符合规则的数据流定向到特定接收队列,或选择将其丢弃,为用户提供灵活的数据流规则配置。为了在 virtio 中支持 flow director,SIG 与 Nvidia、Marvell 等公司合作发起了一项提案 [5]。经过 12 个月和 11 个版本的迭代,这一提案已获得 virtio 技术委员会得投票通过,将随 virtio specification 1.4 发布。
相关链接:
[1]https://lore.kernel.org/netdev/1718301630-63692-1-git-send-email-alibuda@linux.alibaba.com/
[2]https://lore.kernel.org/netdev/20240603030019.91346-1-guangguan.wang@linux.alibaba.com/
[3]https://lore.kernel.org/netdev/20240531085417.43104-1-guwen@linux.alibaba.com/
[4]https://lore.kernel.org/all/20240621101353.107425-1-hengqi@linux.alibaba.com/
高性能网络 SIG 主页:
https://openanolis.cn/sig/high-perf-network
注:更多龙蜥 SIG 月度动态可点击这里查看。
—— 完 ——
![](https://s5-media.51cto.com/ost/pc/static/noavatar.gif)