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

简介: 高性能网络 SIG 在 4 月都有哪些项目进展?

高性能网络 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 链接),同时对于应用透明无侵入、无修改。

在之前版本的 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

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
1月前
|
大数据 云计算
中国网络大会专题论坛 | 下一代超大规模高性能公共云网络
中国计算机学会ChinaNet上,阿里云洛神云网络将与知名学术届代表一起共话下一代超大规模高性能公共云网络的关键技术。
|
1月前
|
消息中间件 编解码 网络协议
Netty从入门到精通:高性能网络编程的进阶之路
【11月更文挑战第17天】Netty是一个基于Java NIO(Non-blocking I/O)的高性能、异步事件驱动的网络应用框架。使用Netty,开发者可以快速、高效地开发可扩展的网络服务器和客户端程序。本文将带您从Netty的背景、业务场景、功能点、解决问题的关键、底层原理实现,到编写一个详细的Java示例,全面了解Netty,帮助您从入门到精通。
105 0
|
1月前
|
大数据 云计算
2024 CCF中国网络大会专题论坛丨下一代超大规模高性能公共云网络 精彩回顾
中国计算机学会ChinaNet上,阿里云洛神云网络将与知名学术届代表一起共话下一代超大规模高性能公共云网络的关键技术。
|
1天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
34 17
|
12天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
13天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
36 10
|
14天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
43 10
|
14天前
|
存储 监控 安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
本文将探讨云计算与网络安全之间的关系,以及它们在云服务、网络安全和信息安全等技术领域中的融合与挑战。我们将分析云计算的优势和风险,以及如何通过网络安全措施来保护数据和应用程序。我们还将讨论如何确保云服务的可用性和可靠性,以及如何处理网络攻击和数据泄露等问题。最后,我们将提供一些关于如何在云计算环境中实现网络安全的建议和最佳实践。
|
16天前
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。