高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性

高性能网络 SIG(Special Interest Group) :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时代扮演者前所未有的重要角色。在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想,打造高性能网络协议栈,提升云计算时代数据中心应用的网络的性能.

01

本月 SIG 整体进展

1 月高性能网络 SIG 的工作在上游社区得到了积极响应,SMC、virtio 和业界相关参与方建立了持续的沟通机制。

关键进展:

  • 春节前龙蜥社区高性能网络 SIG 成员和 IBM SMC 团队相关开发人员进行了一次视频会议,讨论关于 SMC 协议扩展以及龙蜥社区高性能网络 SIG 小组在 SMC 上近期的一些工作,并建立起定期沟通机制。

  • 继 2022 年 12 月我们将 SMC loopback 和 virtio-ism 设备提交到 Linux 社区后,本月陆续得到了上游社区的反馈。针对 SMC 设备拓展,上游 Linux 社区合入了 SMC-D 和 ISM 设备的解耦修改,为后续 SMC loopback 和 virtio-ism 的支持铺平了道路。

  • SMC fallback 加速功能已开发完成,SIG 内部 review 中。fallback 加速将确保 SMC 在 fallback 回 TCP 后性能不会出现损失,弥补当前 SMC fallback 到 TCP 时短连接性能不足的问题。

  • SIG 开发的针对 virtio-net 的 xdp multi-buffer 的支持已被上游 Linux 社区接收。默认情况下,xdp 和 jumbo frame 是冲突的,本特性允许我们在使用 jumbo frame 场景下也使用 xdp。

  • SIG 提交的 virtio-net 支持 XDP socket zerocopy 功能本月已完成开发并提交到上游 Linux 社区讨论。virtio-net 之前不支持 XDP socket 的零拷贝功能,本特性使 virtio-net 完成了 XDP socket 零拷贝的支持,大幅提升 XDP Socket 的收发包性能。

02

Anolis OS

问题修复

本月 ANCK 网络方向共计修复 17 个 CVE(包含一个高危 CVE-2023-0179),覆盖 netfilter/tcp/udp/bluetooth/net.packet/proc/xen/slip 等模块,CVE 列表:CVE-2022-4378,CVE-2022-20368,CVE-2022-42895,CVE-2022-42896,CVE-2022-3564,CVE-2022-3566,CVE-2022-2588,CVE-2022-36879,CVE-2022-1966,CVE-2022-3535,CVE-2022-3524,CVE-2022-42722,CVE-2022-33741,CVE-2022-1966,CVE-2022-1204,CVE-2022-41858,CVE-2023-0179。

03

SMC

外部会议

本月与 IBM SMC 团队进行了一次视频会议,针对 SMC 协议扩展以及龙蜥社区高性能网络 SIG 小组在 SMC 上近期的一些工作进行了讨论,并建立起定期沟通机制,加强了双方的了解与合作。

SMC-D 扩展

  • 上游 Linux 社区已合入 SMC-D 和 ISM 设备解耦修改,旨在提供一个更通用的扩展 SMC-D 能力https://lwn.net/Articles/921057/,为我们推送上游 Linux 社区的 SMC loopback 和 SMC + virtio-ism 方案准备。

SMC fallback 加速

加速 SMC fallback 的方案已经开发完成,该方案旨在提供一种快速、轻量回退 TCP 的能力,拓宽 SMC 的使用场景。预计下个月推送上游 Linux 社区。

04

virtio

virtio-net tunnel

背景:网络包使用 tunnel 相关技术的时候, 一般会有一个 outer header 和一个 inner header。而基于已经有 virtio-net spec 定义, 在做队列选择的时候, 会基于 outer header 进行 hash 计算。而一般情况下, tunnel 的数据包的 outer header 是固定的或相似的, 这样只会有少量的网卡队列会被选择, 无法发挥多队列网卡的优势。

Heng Qi hengqi@linux.alibaba.comHeng Qi hengqi@linux.alibaba.com 发起了 virtio_net: support inner header hash 的提案,目前针对热迁移还有一些收尾的点需要讨论https://lists.oasis-open.org/archives/virtio-dev/202301/msg00051.html

virtio-net split header

背景:将数据包的 header 和 payload 进行分离,在例如零拷贝等方向具有十分重要的意义,例如 Eric 提出的零拷贝方法https://lwn.net/Articles/754681/和 Jonathan Lemon 提出的零拷贝方法等(链接见下)。

https://lore.kernel.org/io-uring/20221007211713.170714-1-jonathan.lemon@gmail.com/

Xuan Zhuo 发起了 virtio_net: support for split transport header 的提案,并和 Heng Qi 共同社区推动,目前 Nvidia 的 Parav Pandit 也提出了一些新的想法参与到这个功能的讨论中,正在讨论https://lists.oasis-open.org/archives/virtio-dev/202301/msg00306.html

virtio-net multi-buffer xdp

本月 SIG 成员 Heng Qi 提交的 virtio-net 对于 xdp multi-buffer 的补丁被合入到 linux 主线https://lore.kernel.org/all/20230114082229.62143-1-hengqi@linux.alibaba.com/。XDP multi-buffer 允许一个 XDP ebpf 程序访问多个收方向的 buffer,而像 Jumbo frame 一类的特性,9K 的 MTU 导致一个包的大小可能会超过 1 个 PAGE,而没有 XDP multi-buffer 之前,XDP 程序只能访问一块连续的内存。因此,jumbo frame 和 XDP 存在冲突,通过 multi-buffer XDP 的支持,可以解决 jumbo frame 和 XDP 不能共存的问题。

virtio-net XDP Socket(AF_XDP) zerocopy

在完成了 per-queue reset 的 spec 及 kernel 工作的前期下, 最新版本的 virtio-net 支持 XDP socket zerocopy 的 patch set 终于提交给社区, 等社区进一步的讨论。这个特性之前在龙蜥的内核上通过其他方式完成了支持,并且基于 ExpressUDP 和 XQUIC 在阿里巴巴的入口网关大规模上线,现在我们把这个特性贡献给上游社区。关于 ExpressUDP 和 XQUIC 实践,参考 ExpressUDPhttps://openanolis.cn/sig/high-perf-network/doc/414166381455196595

高性能网络 SIG 主页链接地址:
https://openanolis.cn/sig/high-perf-network

—— 完 ——

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OpenAnolis小助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值