高性能网络SIG月度动态:SMC loopback 完成协议支持及 virtio-net 统计能力增强

简介: 一键查收高性能网络 SIG 最新进展。

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

01 2023 年度总结

2023 年我们在 SMC 和 virtio net 上做了大量优化和增强,提升了 SMC 和 virito net 的可靠性、可用性和性能,包括但不限于以下特性及增强:

  • virtio XDP socket zerocopy
  • virtio-net XDP multibuffer 支持
  • virtio-net 中断合并,NetDIM 支持
  • virtio-net inner hash 隧道协议支持
  • virtio-net RSS 能力增强支持
  • virtio-net device stats 能力支持
  • SMC fallback 性能优化
  • SMC IP protocol 的支持
  • SMC 多项协议拓展,如 Single Link 支持、Link group 连接数量协商、拓展字段等
  • SMC ebpf 动态、细粒度 TCP 到 SMC 替换能力支持
  • SMC loopback 本地共享内存设备支持

除此之外,SIG 组修复了大量的龙蜥内核的 bug 和 CVE,其中 CVE 120 个。同时,SIG 同学积极参与 upstream 的工作,有 4 位同学正式成为上游 Linux 内核的 reviewer。

02 整体进展

本月高性能网络 SIG 的主要工作聚焦在 ANCK 内核网络、SMC 以及 Virtio 上。

本月关键进展:

1.SMC 支持虚拟 ISM 设备的补丁集正式合入 Linux 特性分支,允许 SMC-D 在非 s390 ISM 设备上加速 TCP 通信。

2.SIG 发起的 virtio specification 修复了自 2011 年存在的校验和问题,支持 virtio 加载 XDP 的场景中避免重复验证校验和节省虚拟机 CPU 利用率。

3.SIG 正在持续推进 Linux 支持 virtio 设备状态统计,允许虚拟机获取后端设备例如丢包原因等统计信息,便利网络问题定位。

03 ANCK 内核网络

3.1 安全

本月总计处理了 5 个 CVE 修复,预计进入版本 ANCK 4.19.91-027.8 和 ANCK 5.10.134-016.3。CVE 列表:

  • CVE-2023-39192
  • CVE-2023-2002
  • CVE-2023-28464
  • CVE-2023-6176
  • CVE-2023-3776

3.2 SMC

本月 SMC 工作主要集中在上游社区 SMCv2.1 虚拟 ISM 特性支持和稳定性问题修复上。

3.2.1 SMCv2.1 虚拟 ISM 设备支持

IBM SMCv2.1 中引入 SIG 提议的虚拟 ISM 设备支持特性作为 supplemental feature,使 SMC-D 可以配合其他非 s390 ISM 设备使用,在 IBM Z 平台以外系统上加速 TCP 通信。SIG 在本月提交到上游社区的虚拟 ISM 设备代码实现被合入到上游 net-next 分支:https://lore.kernel.org/netdev/20231219142616.80697-1-guwen@linux.alibaba.com/

3.2.2 上游 SMC 稳定性修复

本月 SIG 修复上游 2 个稳定性问题:

1.CLC 消息字节序修复:https://lore.kernel.org/netdev/1701882157-87956-1-git-send-email-guwen@linux.alibaba.com/

2.SMC-R 连接 dump 非法访问修复:https://lore.kernel.org/netdev/1703662835-53416-1-git-send-email-guwen@linux.alibaba.com/

3.2.3 Virtio

本月 virtio 工作主要聚焦于 device stats、virtio XDP checksum 和 virtio batch 请求优化上面。

device stats

virtio-net 设备上,过去我们没法拿到后端设备的一些统计信息,只能通过云厂商自定义接口来获取,而这些信息对于用户分析网络问题很有意义。高性能网络 SIG 基于之前已经推进成功的 virtio 规范,正在向 Linux 社区推进代码实现:

https://lore.kernel.org/all/20231226073103.116153-1-xuanzhuo@linux.alibaba.com/

virtio checksum 和 XDP 共存

高性能网络 SIG 为了支持 virtio checksum 和 XDP 共存过去作出了很多努力,包括[1]重新探测校验和的方法,[2] virtio 和其他网卡校验和现状 Survey,[3] 添加新的 feature bit 来指示 virtio 只交付新的 fully checksummed packets 等方法,这些方法都因为难以覆盖所有 corner 场景和没有从根本上解决问题而失败。最终,高性能网络 SIG 和 Linux 社区共同探讨出了最终的解决方案,并修复 virtio 自 2011 年来存在的长达10+年之久的 bug。该修复提案等待社区投票通过后,意味着后续我们就可以在 virtio 使用 XDP 的场景中,无需 guest os 重新验证校验和了!这会为 guest 节省最多 10+% cpu 利用率。

[1] https://lore.kernel.org/all/20230628030506.2213-1-hengqi@linux.alibaba.com/

[2] https://lists.oasis-open.org/archives/virtio-dev/202305/msg00291.html

[3] https://lore.kernel.org/all/7686cc30-8ec9-4320-8cc3-c39e9ca3de25@linux.alibaba.com/

virtio batch 请求

virtio 目前已经支持 netdim 功能,但是如果想最大限度发挥其能力,还需要对 virtio 作出优化。

virtio 目前更新设备配置的方式是通过 ctrlq,而 ctrlq 是一种轮询等待的机制,若后端持续不响应这些命令请求,会导致 guest cpu 空转,浪费资源。另外,netdim 配置设备的请求次数较多,频繁的 kick 设备会造成设备 cpu 资源紧张,并且加多设备 DMA 描述符的次数。针对上述两个问题,高性能网络小组提出 batch request 和 batch command 两种批量操作,极大的缓解了上述问题。

目前,高性能网络小组尝试标准化 batch request 方式,目前正在推进 virtio specification。

—— 完 ——

加入龙蜥社群

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

关于龙蜥

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


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

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

相关文章
|
4月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
164 2
|
4月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
154 1
|
4月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
121 0
|
2月前
|
监控 前端开发 安全
Netty 高性能网络编程框架技术详解与实践指南
本文档全面介绍 Netty 高性能网络编程框架的核心概念、架构设计和实践应用。作为 Java 领域最优秀的 NIO 框架之一,Netty 提供了异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨其 Reactor 模型、ChannelPipeline、编解码器、内存管理等核心机制,帮助开发者构建高性能的网络应用系统。
219 0
|
11月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
260 17
|
11月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
220 10
|
11月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
11月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
232 10
|
11月前
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。
|
11月前
|
存储 监控 安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
本文将探讨云计算与网络安全之间的关系,以及它们在云服务、网络安全和信息安全等技术领域中的融合与挑战。我们将分析云计算的优势和风险,以及如何通过网络安全措施来保护数据和应用程序。我们还将讨论如何确保云服务的可用性和可靠性,以及如何处理网络攻击和数据泄露等问题。最后,我们将提供一些关于如何在云计算环境中实现网络安全的建议和最佳实践。