关于高性能:高性能网络-SIG-月度动态长期投入得到业界认可新增一位-virtio-reviewer

39次阅读

共计 3424 个字符,预计需要花费 9 分钟才能阅读完成。

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

01 本月 SIG 整体停顿

本月高性能网络 SIG 的次要工作聚焦在 Anolis OS 内核网络、SMC 和 virtio 上。

本月要害停顿:

  • SIG 成员 Xuan Zhuo 成为上游 Linux kernel 社区 virtio core/virtio-net 子系统的 reviewer。Xuan Zhuo 过来三年在 virtio 社区的投入失去了宽泛的认可。
  • SIG 本月实现了上游 virtio-net 对 XDP socket 零拷贝的反对,能够大幅晋升 virtio 下 XDP socket 的发包性能。该个性在龙蜥的 ANCK 内核上曾经反对了一年多的工夫,当初,咱们将该个性奉献到 Linux 上游社区,目前社区已实现 virtio-net XDP 重构局部的 review,预计 5.8 窗口期后合入。

02 ANCK 内核网络

本月网络方向新增安全漏洞修复:CVE-2023-1074 (SCTP 相干)。

03 高性能网络协议栈 SMC

本月高性能网络 SIG 在 SMC 畛域的工作,次要聚焦在推动本机高性能通信,以及基于 eBPF 的策略替换两个计划在 Linux 上游社区的探讨。

本机高性能通信计划

本机的 loopback 和容器间(跨 netns)通信曾经是一种常见的数据门路,在数据处理和云原生场景有着十分宽泛的应用。例如云原生场景下,service mesh 通过 proxy 过程与业务过程、sidecar 进行通信。SMC 提供了本机(loopback 和容器间)的高性能通信计划,比照传统的用户态 IPC、以及内核的 TCP loopback 或者 UNIX domain socket 等计划,除了性能具备劣势之外(具体数据可参考 LWN 链接 https://lwn.net/Articles/929934/),同时对于利用通明无侵入、无批改。

在之前版本的 review 中,社区给出了一些踊跃的反馈:s390 PCI maintainer Niklas 认可了应用 64bit 随机 GID + 64 bit token 组成的 loopback 协商流程。从概率上看,要达到 10^(-15) 的抵触概率,须要尝试 8.2×10^11 次,因而随机 GID 能够承受。咱们与 IBM 的协定所有者 Jerry 进行了充沛的沟通,接下来期待社区探讨实现并确定最终的计划。

本月 SIG 发送了 SMC loopback 的计划 v5 版本至 Linux 上游社区,新版本中减少 SEID 的抉择逻辑,修复 unregister_dmb 的潜在问题,修复在 s390 架构下运行异样的问题。

基于 eBPF 策略替换计划

SMC 提供了动静回退 TCP 的能力,以后的回退策略的决策因素次要是由 RDMA / ISM 连贯建设是否胜利。因为 SMC 短链接性能不如 TCP,为了让 SMC 更加通用,因而打算给 SMC 减少基于策略的回退 TCP 的能力,帮忙 SMC 更好的适配不同利用模型和场景。

本月发送了 RFC 和正式的替换补丁到 Linux bpf 和 net 社区,失去了 eBPF maintainer 的反馈,包含一些模块符号到处、文件名等问题,咱们正在批改并持续推动 SMC 和 bpf 社区承受计划。

04 virtio

社区影响力

本月高性能网络 SIG 成员 Xuan Zhuo 成为 linux kernel 社区 virtio core/virtio-net 子系统的 reviewer。Xuan Zhuo 过来三年在 virtio 社区的投入失去了社区的宽泛认可。

本月 SIG 还修复一个 virtio net 的在 xdp 场景下的 bug:[PATCH net] virtio_net: bugfix overflow inside xdp_linearize_page() – Xuan Zhuo

virtio-net 反对 AF_XDP zerocopy

AF_XDP 是一个 bypass 内核协定栈的新收发包框架。它能够把驱动的收包间接传递到用户态, 也能够把包间接从用户态传递到驱动发送进来。它的性能相比于内核的 UDP 协定栈能够晋升 3-7 倍 PPS。然而它依赖驱动进行 zerocopy 的反对。这个工作分成几个局部:

  • virtio core 反对 DMA premapped

这部分是让 virtio core 框架反对提交 DMA address 操作(链接)。目前的实现中所有的 DMA 操作都在 virito core 外面实现,咱们要让驱动反对传递 DMA address 给 virtio core,因为 AF_XDP 会提前完成所有的地址的 DMA 操作以及一些 virtqueue reset 相干的操作。

这部分波及到了 virtio 的 DMA 相干的 API 应用问题。因为 virtio 在一些场景下不能应用 DMA API,咱们心愿 DMA API 或 AF_XDP 能够反对 virtio 这一场景。这引发了绝对宽泛的探讨,目前的论断是:

  • AF_XDP 在将来可能会转向应用 dma-bufs 来解决 DMA API。
  • DMA API 不反对 virtio 这样的非凡场景。

这些因素导致咱们的推动工作陷入了十分大的艰难。通过思考与探讨, 咱们思考临时不反对 virtio 没有 VIRTIO_F_ACCESS_PLATFORM 的场景,这通常呈现在一些旧的 virtio 设施上。

  • virtio-net XDP 重构

这部分曾经实现 review,将会在 5.8 窗口期之后再提交一个版本。

virtio-net inner header hash

隧道协定有时会将不同流的数据包封装成外头部五元组雷同的数据流,这些数据流会被散列到雷同的接管队列,进而损失 RSS 的性能。为了让 virtio 对隧道协定反对内头部哈希,高性能网络 SIG 发动了 virtio_net: support inner header hash 的提案,心愿将其在 virtio 中标准化下来。

本月 v12->v13 和 virtio 社区探讨了之前 inner header hash 的设计把设施侧反对的隧道类型搁置在 PCI device-specific 的配置空间的问题,这种设计的长处是作为设施常驻能力能够在初始化时只被驱动读取一次,然而随着 virtio 当初越来越多新个性的减少,让设施特定的配置空间越来越臃肿对一些 tiny 设施是非常不敌对的,因而探讨之后将从设施配置空间移到 control queue(新办法的毛病是每次用户的 GET 查问都会返回 configured 和 supported 两种字段,然而可承受的)。

另外,inner header hash 反对的隧道类型的数量社区仍在质疑,社区更加偏向于对 legacy 协定的反对,以让 legacy 协定享受到熵增加带来的 rss 性能晋升,例如 GRE-2784 等,然而咱们想反对更多的 modern 隧道协定,例如 VXLAN/GENEVE 等,以让这些协定能够基于内头部来做对称哈希,在某些场景下获取到 less locking,warm cache 等性能晋升,这块仍需探讨。

以上为 4 月高性能网络 SIG 月度动静,欢送大家退出共建。更多 SIG 动静返回龙蜥官网获取。

相干链接

高性能网络 SIG 主页:

https://openanolis.cn/sig/high-perf-network

SMC loopback 计划 v5 版本:

https://lore.kernel.org/netdev/1682252271-2544-1-git-send-ema…

DMA address 操作:

https://lore.kernel.org/all/20230425073613.8839-1-xuanzhuo@li…

virtio-net XDP 重构链接:

https://lore.kernel.org/all/20230508061417.65297-1-xuanzhuo@l…

virtio_net: support inner header hash:

https://lists.oasis-open.org/archives/virtio-dev/202304/msg00…

—— 完 ——

为给大家提供更好的内容和服务,龙蜥社区诚挚地邀请大家参加问卷调研,请扫描下方二维码或点此链接填写,咱们将筛选出优质反馈,送出龙蜥周边!

正文完
 0