高性能网络 SIG(Special Interest Group) :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时代扮演着前所未有的重要角色。在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想,打造高性能网络协议栈,提升云计算时代数据中心应用的网络的性能。
01 整体进展
本月高性能网络 SIG 的主要工作聚焦在 ANCK 内核网络、SMC 以及 Virtio 上。
本月关键进展:
1. ANCK 5.10 上支持了 virtio NetDIM(动态中断调节)和 XDP csum 优化,提升龙蜥内核 virtio-net 网卡性能。
2. SMCv2.1 Emulated-ISM 特性随 SMCv2.1 release 4 白皮书正式发布,以允许 SMC-Dv2 支持除 s390 Z 平台 ISM 以外的类 ISM 设备。
02 ANCK 内核网络
修复
ANCK 5.10 本月共修复 7 个异常问题,预计进入下个版本,包括:
- 修复 net/sched 中在特定场景下的内存泄漏问题。
- 修复 tcp 双方同时握手场景下产生的 panic 问题。
- 修复 netfilter 异常的错误处理导致的内存泄漏问题。
- 修复 ovs 在 ovs_flow_tbl_lookup 中错误使用掩码导致 ovs-appctl 添加规则失败的问题。
- 修复 ovs 异常的错误处理导致的内存泄漏问题。
- 修复 virtio force_xdp 模块参数重新加载驱动时缺少 RSS 相关 feature 的问题。
- 修复 smc 中的潜在 hung 问题。
安全
ANCK 5.10 共修复了 5 个 CVE,预计随 ANCK 5.10.134-16.3 版本发布,包括:
CVE-2023-4622、CVE-2023-6932、CVE-2023-28464、CVE-2023-39192、CVE-2023-6176。
ANCK 4.19 共修复了 5 个 CVE,预计随 ANCK 4.19.91-27 版本发布,包括:
CVE-2023-6932、CVE-2023-2002、CVE-2023-39192、CVE-2023-1390、CVE-2023-31083。
03 SMC
本月 SIG 在 SMC 上的工作主要集中在与上游沟通特性以及稳定性修复上。
SMCv2.1 Emulated-ISM 支持
本月 SIG 提议的 SMCv2.1 Emulated-ISM(旧称 virtual ISM)特性随 SMCv2.1 release 4 白皮书正式发布(链接见文末)。Emulated-ISM 特性允许 SMC-Dv2 支持除 s390 Z 平台 ISM 以外的类 ISM 设备。
上游稳定性修复
本月 SIG 修复 3 个稳定性问题:
- SMC-R connection dump 在特定条件下的 crash:net/smc: fix invalid link access in dumping SMC-R connections。
- SMC-D connection dump 竞争问题:net/smc: fix illegal rmb_desc access in SMC-D connection dump。
- SMC-D link group 匹配逻辑错误:net/smc: fix incorrect SMC-D link group matching logic。
04 virtio
本月 SIG 在 virtio 上的工作主要集中于 checksum for xdp 和动态中断调节(NetDIM)上。
Checksum for XDP
virtio 网卡使用 VIRTIO_NET_F_GUEST_CSUM 特性,表明虚拟机支持接收部分校验和的报文和设备验证校验和的能力。但是,由于 XDP 程序可能会修改报文元数据,导致校验和出现错误并引发丢包问题,为了避免此问题,当 XDP 程序加载时,virtio 会禁用 VIRTIO_NET_F_GUEST_CSUM 的校验和卸载功能。这就意味着设备验证校验和的功能也被禁用,导致所有接收到的报文都必须在虚拟机内部重新进行校验和验证,这无疑增加了虚拟机 CPU 的计算负担。
为了解决这一问题,高性能网络小组对 virtio 规范进行了改进,从而在 virtio 框架上修复了这个缺陷。这项修复预计将随 ANCK 5.10.134-17 版本一起发布。基于这一改进,即使在 XDP 程序加载之后,设备的校验和处理能力仍然保持可用状态。这样,虚拟机就无需再次进行校验和验证,从而节约了 CPU 资源,提高了虚拟机的计算效率。
动态中断调节
在过去,virtio 网卡的一个限制是无法调整中断聚合参数,这意味着固定的聚合参数设置不足以灵活应对多样化的流量条件。例如,在高吞吐量环境下,过多的中断可能导致数据包丢失,而在低流量负载下,又可能不必要地增加了延迟。相比之下,Linux 上的主流物理网卡通常具备动态中断聚合能力,能依据实时的队列流量状况智能调整中断聚合参数,从而优化数据接收性能。
鉴于此,高性能网络团队在 virtio 规范更新后,为龙蜥社区的 ANCK 5.10 内核引入了 virtio 动态中断聚合功能。这一新增特性预期将包含在即将发布的 ANCK 5.10.134-17 版本中。需要注意的是,启用该功能必须有 virtio 后端设备的支持。
相关链接:
SMCv2.1 release 4 白皮书:https://www.ibm.com/support/pages/node/7112343
高性能网络 SIG 主页:https://openanolis.cn/sig/high-perf-network
注:更多龙蜥 SIG 月度动态可点击这里查看。
—— 完 ——
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。