高性能网络 SIG :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时代扮演者前所未有的重要角色。在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想,打造高性能网络协议栈,提升云计算时代数据中心应用的网络的性能。
01 本月 SIG 整体进展
12 月高性能网络 SIG 的主要工作聚焦在 Anolis OS 通用内核网络、SMC 和 virtio 上。以下为关键进展:
龙蜥社区高性能网络 SIG 提出的 virtio 设备:virtio-ism 的 spec 提交到 virtio 社区,相应的设备 ID 经过 virtio TC 的投票已经进入 virtio 规范。
龙蜥社区高性能网络 SIG 提出的 SMC loopback 设备的支持的 RFC 提交到 linux 社区讨论。
ANCK-5.10 即将发布 013 版本,SMC 做了大量的优化和修复。
02 Anolis OS
问题修复
12 月 ANCK 网络方向共计修复 33 个 CVE(包含一个高危 CVE-2022-4378),覆盖 tcp/netfilter/ip/tc/vsock/wifi/bluetooth/can 等模块,CVE 列表:CVE-2022-42895、CVE-2022-3435、CVE-2022-3633、CVE-2022-3535、CVE-2022-0812、CVE-2022-39190、CVE-2022-42719、CVE-2022-1015、CVE-2022-42895、CVE-2021-4203、CVE-2022-1204、CVE-2022-1012、CVE-2021-33135、CVE-2022-1012、CVE-2022-1966、CVE-2022-1966、CVE-2022-1679、CVE-2022-3028、CVE-2022-3028、CVE-2022-2663、CVE-2022-3567、CVE-2022-3586、CVE-2022-41674、CVE-2022-42722、CVE-2022-42721、CVE-2022-42720、CVE-2022-3566、CVE-2022-3521, CVE-2022-3524、CVE-2022-3435、CVE-2022-3564、CVE-2022-3625、 CVE-2022-4378。
功能增强
PR908 5.10 内核 ipvs 支持通过 run_estimation sysctl 关闭 estimation。
03 SMC
版本发布
12 月 SMC 最新稳定版将随着 ANCK 5.10-013 发布。本次发布的版本将包括如下更新:
- 支持使用 SMC-R v2 + eRDMA RoCE v2。与现有 SMC-R v1 + eRDMA iWARP 相比没有性能区别。运行 SMC-R v2 前需要加载兼容模式 eRDMA 驱动,并使用 smc-tools 在通信两侧设置相同的 ueid。
- 增加 CQ event_handler 采集 CQ 信息。
- 增加 DIM proc file 显示 DIM 状态。
- 去除 sndbuf 清空操作。
- 引入 lockfree CQ。
- 允许 SMC-R 连接同时进行建连过程,而不是互斥等待。
- 修复 SMC-R 中内存被错误覆盖导致应用程序数据被破坏问题。
- 修复 SMC-R 中创建额外的 Link 导致的 panic 问题。
SMC loopback
SMC loopback 特性由高性能网络 SIG 成员 Wen Gu 提交 RFC 至上游社区(patch 链接)。SMC loopback 特性提供了一种更高性能的本机 loopback 通信方式,特别是对于容器通信的场景,从而借助 SMC 自动选择最优加速方式,例如跨主机 RDMA 和本机 loopback。从 Wen Gu 给出的数据来看,吞吐对比 TCP loopback 提升 88%,时延降低 49%,在 ipc-benchmark 场景下,对比 UNIX domain 也有 30% 的性能优势。
04 virtio
virtio ism
virtio-ism 是由龙蜥社区高性能网络 SIG 提出的一种在相邻的 vm 之间进行内存共享的 virtio 设备。配合 smc 可以实现 vm 之间的高性能通信。同时也可以用于容器与容器或容器与虚拟机之间的高速共享内存通信。
目前 virtio ism id (44)已经被 virtio 社区接受。
链接地址:https://github.com/oasis-tcs/virtio-spec/issues/150
后续关于设备定义的 spec 以及相应实现的 RFC 已经提交到 virtio 邮件列表讨论:
https://lists.oasis-open.org/archives/virtio-comment/202212/msg00030.html
virtio-net tunnel
网络包使用 tunnel 相关技术的时候, 一般都会有一个 outer header 和一个 inner header。而基于已经有 virtio-net spec 定义, 在做队列选择的时候, 会基于 outer header 进行 hash 计算。而一般情况下, tunnel 的数据包的 outer header 是固定的或相似的, 这样只会有少量的网卡队列会被选择, 无法发挥多队列网卡的优势。
Heng Qi hengqi@linux.alibaba.com 发起了 virtio_net:support inner header hash 的提案。
链接地址:
https://lists.oasis-open.org/archives/virtio-comment/202212/msg00020.html
经过多轮讨论, 这个提案的 v4 版本目前已经基本完成了 review,预计在 2023.1 月在 virtio TC 进行投票。
virtio-net xdp multi-buffer
Heng Qi hengqi@linux.alibaba.com本月提交了 virtio-net 对于 xdp multi-buffer 的支持的 patch set 到 linux 社区。目前这个 patch set 的 9 个 patch 大部分也已经被 ack 了,还有少量问题还在和 Linux 社区讨论中。
高性能网络 SIG 主页链接地址:
https://openanolis.cn/sig/high-perf-network
—— 完 ——
加入龙蜥社群
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。