高性能网络 SIG 月度动态:ANCK 首次支持 SMCv2.1,virtio 规范支持隧道报文内头部哈希

简介: 高性能网络 SIG 月度动态送达,一键了解 7 月各项目进展。

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

01 SIG 整体进展

本月关键进展

1、SIG 本月完成 SMC 在 ANCK 5.10-015 内核的集成和发布,ANCK 成为社区首个实现 SMCv2.1 的内核。ANCK 中 SMC 支持 SMCv2.1 协议新增的链路数量协商、链路承载连接数量协商、Vendor 能力拓展等特性,支持通过 AF_INET 协议族使用 SMC,支持部分场景基于 eBPF 的替换策略,以及其他多个优化与稳定性修复。

2、SIG 推进的关于隧道内头部哈希的 virtio 标准规范,经过 8 个月 445 封邮件的沟通,在本月终于成功进入 virtio SPEC 主线。该提案基于特征协商的机制,为 virtio 提供了隧道报文内头部哈希的能力。

02 ANCK 内核网络

修复

ANCK 5.10-015 版本回合多个 SIG 提交至上游的修复补丁:

  • net/smc: Reset connection when trying to use SMCRv2 fails
  • net/smc: Scan from current RMB list when no position specified
  • net/smc: Dont use RMBs not mapped to new link in SMCRv2 ADD LINK
  • net/smc: Avoid to access invalid RMBs MRs in SMCRv1 ADD LINK CONT

安全

本月网络方向共计修复 13 个 CVE,覆盖 sched/iscsi_tcp/rxrpc/netfilter/tap 等模块,CVE 列表:

ANCK-5.10:CVE-2023-3610,CVE-2023-2006,CVE-2023-2162,CVE-2023-35001,CVE-2023-31248,CVE-2023-3117,CVE-2023-1382。

ANCK-4.19:CVE-2023-35001,CVE-2023-3117,CVE-2023-1077,CVE-2023-1076,CVE-2023-35788,CVE-2023-1829。

特性

  • ANCK 5.10-015 版本网络部分增加多个 SMC 相关新特性,具体可见下方 SMC 一节。
  • ANCK 5.10-015 引入了 devlink 中 SF (Scalable Function) 管理的支持:!1827 devlink 支持 subfunction

03 SMC

本月高性能网络 SIG 在 SMC 领域的工作主要聚焦在:

  • 完成 SMC 在 ANCK 5.10-015 内核的集成和发布,提供生产级别可用性。
  • 推动上游 SMCv2.1 协议的发布并确定 SMC-D 协议拓展的基本方案。

版本发布

本次在 ANCK 5.10-015 内核发布的 SMC 主要包含以下优势:

1. 更强的性能,E2E 测试中 SMC + ERDMA 场景下,Redis 单进程 SMC 对比 TCP 有 40% 以上的性能提升,相同 PPS 下对比 TCP 节省 20% 以上 CPU。

2. 更高的稳定性:通过大规模和 CI 测试,涵盖了大部分的典型 E2E 网络通信场景,共完成 22 个上游或自研特性修复,已合入上游 4 个修复补丁。

3. 更灵活、高效的使用方式:部分场景提供基于 eBPF 透明策略选择以及基于 AF_INET 的高效回退的能力,具备判断应用连接模型并自动加速的能力。

详细的发布日志包括:

1. 社区首个 SMCv2.1 协议的实现,SIG 提出的 SMC 协议扩展从白皮书发布到实现已经全部完成,包含:

  • 在云上 eRDMA 场景下默认使用 SMCv2 协议。
  • 支持 SMCv2.1 版本协议的协商,包括 LGR 连接数、Link 数量和 vendor ID。
  • 提供 vendor 扩展的 RDMA write with IMM 特性支持。
  • 提供 vendor 扩展的基于 credit 流控算法。

2. 支持按 AF_INET 协议簇创建 SMC 套接字,使 fallback 后的性能达到 TCP 的 95%+。

3. 支持部分场景基于 eBPF 的替换策略,支持根据流量模型的连接维度替换。

4. 其他优化,包括支持 RDMA 资源诊断、高阶内存拆分、共享内存扩大等。

5. 大量修复,包括因各类竞争导致的 hung、UAF、memory leak、panic 等问题。

SMC V2.1 协议白皮书

本月 SIG 推动的 SMCv2.1 新特性已随 IBM SMC V2.1 协议白皮书发布,详细内容可见 IBM 白皮书,白皮书包含 SIG 提议的如下特性:

  • 基于 Vendor ID 的协议拓展,支持云厂商提供定制 SMC 特性。
  • 支持容灾链路数量的协商,以优化单链路场景的握手流程,提升建连效率。
  • 支持链路组中连接数量的协商,以适应不同的场景。

SMC-D 方案讨论

本月 SIG 与 IBM 讨论并确定了 SMC-D 设备拓展方案。为支持未来可能出现的 SMC-D 虚拟设备,如 SMC-D loopback 设备,SMC-D 协议将拓展现有 64bits GID 到 128 bits,并计划为虚拟设备预留最高位为 1 的 VCHID。通过这种方式,SMC-D 在完全保留现有 CLC 握手协商流程的前提下,提供了向前兼容的 SMC-D 虚拟设备支持。

04 Virtio

本月高性能网络 SIG 在 virtio 领域的工作,主要聚焦在推动动态中断调节和隧道外部源端口哈希的实现方案上,SIG 推进的关于隧道内头部哈希的 virtio 标准规范,经过 8 个月 445 封邮件的沟通,终于成功进入 virtio spec 主线。

隧道报文内头部哈希

传统隧道协议由于在外头部中缺少足够的熵,导致收包时报文容器汇聚到单个队列上,无法发挥多队列收包的优势;同时,现代隧道协议在某些场景需要通过将同一条流接收在同一个队列上以获得性能收益,而外头部不容易做到此。

基于上述目的,龙蜥社区发起了针对隧道报文进行内头部哈希的提案 [PATCH v21] virtio-net: support inner header hash](),目前该提案取得 OASIS Open: Committees 14 票( 14/16 )通过票,进入规范主线。该提案基于特征协商的机制,为 virtio 提供了隧道报文内头部哈希的能力。该提案中,设备可以通过配置空间为驱动提供设备支持内头部哈希的隧道类型,驱动可以动态配置使能的隧道类型。同时,内头部哈希与 RSS 收包机制互相正交,提升了内头部哈希的扩展灵活性。最后,为了防止使用该特性带来的可能的安全问题,本规范也给出了一些防护的介绍和建议,具体请参见规范补丁。

动态中断调节

Net DIM 动态中断调节算法算法通过统计当前网络中单个队列的流量信息和中断次数,自适应计算中断调整方向和步长,并将结果配置下发到设备,以达到提升网络吞吐量的目的。

SIG 为了让 virtio 获益到动态中断调节算法带来的性能提升,推动了已经进入 virtio 规范标准的 [PATCH v14] virtio-net: support the virtqueue coalescing moderation](),以支持 virtio driver 基于单个队列配置中断汇聚参数。同时正在推进 Linux 社区代码实现的补丁集合:[RFC PATCH 0/6] virtio-net: support dynamic coalescing moderation - Heng Qi]()。

外部源端口号哈希

针对不分应用场景在使用隧道协议时存在对称哈希的需求,我们既可以通过上述的隧道报文内头部哈希解决,也可以通过隧道外部源端口号哈希解决。但是由于某些 virtio 设备的实现可能存在解析资源受限的问题(例如可能最高支持 200B 的 header), 例如 GENEVE 这种 Option 字段就长达 256B 的隧道报文,这种 virtio 设备的实现就无法使用内头部哈希。幸运的是,存在外部传输头的隧道协议,其标准规范会“推荐”使用外部源端口号来唯一的标记一条内部流(由于是“推荐”,而不是“必须”,会存在不可靠的问题),因此,使用外部源端口号计算哈希可以达到对称哈希的目的。高性能网络小组推进了外部源端口号哈希的 virtio 规范提案:[PATCH] virtio-net: support the outer source port hash for UDP-encapsulated packets](),该提案旨在扩展 RSS (Receive Side Scaling) 的能力,让有对称哈希需求且解析资源受限的 virtio 设备可以轻易的达到同一条流散列到同一接收队列的目的。

相关链接:

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

注:更多龙蜥 SIG 月度动态可点击这里查看。

—— 完 ——

加入龙蜥社群

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


关于龙蜥

龙蜥社区是立足云计算打造面向国际的 Linux  服务器操作系统开源根社区及创新平台。龙蜥操作系统(Anolis OS)是龙蜥社区推出的 Linux 发行版,拥有三大核心能力:提效降本、更加稳定、更加安全。

目前,Anolis OS 23 已发布,全面支持智能计算,兼容主流 AI 框架,支持一键安装 nvidia GPU 驱动、CUDA 库等,完善适配 Intel、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密支持。

加入我们,一起打造面向云时代的操作系统!

相关文章
|
1月前
|
大数据 云计算
中国网络大会专题论坛 | 下一代超大规模高性能公共云网络
中国计算机学会ChinaNet上,阿里云洛神云网络将与知名学术届代表一起共话下一代超大规模高性能公共云网络的关键技术。
|
3月前
|
编解码 分布式计算 网络协议
Netty高性能网络框架(一)
Netty高性能网络框架(一)
|
6天前
|
数据采集 监控 安全
公司网络监控软件:Zig 语言底层优化保障系统高性能运行
在数字化时代,Zig 语言凭借出色的底层控制能力和高性能特性,为公司网络监控软件的优化提供了有力支持。从数据采集、连接管理到数据分析,Zig 语言确保系统高效稳定运行,精准处理海量网络数据,保障企业信息安全与业务连续性。
27 4
|
1月前
|
消息中间件 编解码 网络协议
Netty从入门到精通:高性能网络编程的进阶之路
【11月更文挑战第17天】Netty是一个基于Java NIO(Non-blocking I/O)的高性能、异步事件驱动的网络应用框架。使用Netty,开发者可以快速、高效地开发可扩展的网络服务器和客户端程序。本文将带您从Netty的背景、业务场景、功能点、解决问题的关键、底层原理实现,到编写一个详细的Java示例,全面了解Netty,帮助您从入门到精通。
140 0
|
1月前
|
大数据 云计算
2024 CCF中国网络大会专题论坛丨下一代超大规模高性能公共云网络 精彩回顾
中国计算机学会ChinaNet上,阿里云洛神云网络将与知名学术届代表一起共话下一代超大规模高性能公共云网络的关键技术。
|
9天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
47 17
|
19天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
20天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
42 10
|
22天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
46 10

热门文章

最新文章