高性能网络 SIG(Special Interest Group) :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时代扮演着前所未有的重要角色。在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想,打造高性能网络协议栈,提升云计算时代数据中心应用的网络的性能。
本月高性能网络 SIG 的主要工作聚焦在 virtio 对 NetDIM 的支持以及多个 virtio 提案的发起。
本月关键进展:
1. SIG 推动完成了 NetDIM 的 virtio 标准和 OS 代码,修复了多个上游问题并在 sockperf benchmark 中获得 20%+ 的吞吐提升。
2. SIG 与 Nvidia、Marvell 等合作发起了 [PATCH requirements v5 5/7] net-features: Add n-tuple receive flow filter]() 的提案,让 virtio 支持接收流过滤的能力,提供灵活的流规则配置方法。以及 [PATCH v2] virtio-net:support the RSS context]() 提案,使 virtio 支持多个 RSS (Receive Side-Scaling) 配置上下文。
本月网络方向共计修复 9 个 CVE,覆盖 sched/ipvlan/ipv6/netfilter/xfrm 等模块,CVE 列表:
CVE-2023-3609、CVE-2023-3611、CVE-2023-3090、CVE-2023-2156、CVE-2023-3773、CVE-2023-3776、CVE-2023-3812、CVE-2023-3390、CVE-2023-4147。
本月高性能网络 SIG 在 SMC 领域的工作主要聚焦在上游 SMC-D 虚拟设备拓展方案的推动。
SMC-D 被用于物理机内部的 SMC 加速,在过去只能配合 IBM s390 架构中的 ISM 设备使用。SIG 积极推动 SMC-D 虚拟设备拓展,以便于在其他架构中享受 SMC-D 带来的性能提升。
本月的 SMC 开发者会议上确定了使用 UUID 作为 SMC-D 虚拟设备的 GID,从而在无中心的情况下确保虚拟设备 GID 的唯一性。在 Linux 中将使用最为常用的 UUIDv4 作为 SMC-D loopback 等虚拟设备 GID 的实现方式。此外,除 0-0x7FFF 以外的 VCHID 将预留 4K 个给 SMC-D 虚拟设备,以帮助 SMC-D 握手时快速分辨对端虚拟设备是否可达。
本月高性能网络 SIG 在 virtio 领域的工作,主要聚焦在:
(1)测试动态中断调节性能数据。
(2)推动接收流过滤、RSS Context 的标准方案。
动态中断调节 NetDIM 算法通过统计设备队列的流量信息,自适应调整网卡中断频率,以达到吞吐提升的目的。
高性能网络小组推动完成了 NetDIM 的 virtio 标准和 OS 代码,发现并修复了多个上游内核问题。测试结果显示,在 sockperf benchmark 中可以最大提升 20+% 的吞吐。
高性能网络小组进一步分析了 NetDIM 的时延影响,发现 NetDIM 会对低载小包时延产生不利影响,这是由于 NetDIM 算法设计更加关注吞吐提升,没有针对性关注时延提升而造成的。我们会针对此时延问题尝试作出进一步的优化。
接收流过滤(Receive Flow Filter)能力提供接收方向的数据流处理,包括数据流导向、数据流过滤等,为用户提供了灵活的流规则配置方法。数据流导向功能基于用户在 virtio 网卡上配置的数据流规则,可以将匹配了某个规则的数据流导到对应的单个或多个目的队列。数据流过滤功能可以将匹配了某个规则的数据报文丢弃。
高性能网络小组与 Nvidia、Marvell 等合作发起了 [PATCH requirements v5 5/7] net-features:Add n-tuple receive flow filter]() 的提案,让 virtio 支持接收流过滤的能力,同时在设计时考虑了网络通用加速方法 Accelerated RFS 的实现要求,可作为后续流规则相关配置方法的基础能力。
当前 virtio 仅支持单个默认 RSS (Receive Side-Scaling) 配置,这无法满足一些场景对队列流量隔离等的需求,导致网络设备流量管理不灵活的问题。针对此问题,高性能网络小组发起了 [PATCH v2] virtio-net: support the RSS context]() 提案,以支持 virtio 实现多个 RSS 配置上下文。该提案支持查询设备能力,修改、删除、新增 RSS context等。
高性能网络小组一直以来都在主导推进 virtio-net 对于 AF_XDP 的支持。2年多以来,我们已经解决了多个相关的基础依赖问题。
目前这块的工作取得了一些决定性的进展:Virtio Core 支持 dma premapped 的特性目前已经被合并进入了 Linux 6.6。这意味着, virtio-net 支持 AF_XDP 的最后一块依赖被补齐了。我们会尽快整理后续 virtio-net 支持 AF_XDP 的 patch 提交到上游社区,完成这一工作。
注意:基于龙蜥 Alinux3 及 Alinux2 携带的 ANCK 内核都已经包含了 virtio-net 支持 AF_XDP 的特性。欢迎尝试!
相关链接:
高性能网络 SIG 主页:
https://openanolis.cn/sig/high-perf-network
注:更多龙蜥 SIG 月度动态可点击这里查看。
—— 完 ——