高性能网络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、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密支持。

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

相关文章
|
3天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
4天前
|
存储 网络协议 安全
15.网络协议-Radius协议
15.网络协议-Radius协议
|
4天前
|
存储 网络协议 网络安全
14.网络协议-邮件协议
14.网络协议-邮件协议
|
8天前
|
存储 JSON 前端开发
网络原理(4)HTTP协议(下)
网络原理(4)HTTP协议
21 0
|
11天前
|
存储 网络协议 Linux
|
11天前
|
安全 SDN 数据中心
|
12天前
|
网络协议 安全 网络性能优化
|
21天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
20 0
|
1月前
|
安全 网络协议 数据安全/隐私保护
网络技术基础(18)——PPP与PPPoE协议
【3月更文挑战第5天】本文介绍了广域网的基本架构和PPP协议。广域网涉及CE(用户边缘设备)、PE(服务提供商边缘设备)和P(服务提供商设备),其中CE为企业出口,PE类似光猫,P为运营商内部设备。PPP是数据链路层协议,用于点到点连接,提供PAP和CHAP安全认证,并通过LCP和NCP协商链路和网络层参数。PPP协商包括链路层、认证(可选)和网络层三个阶段。PPPoE协议结合了PPP和以太网优点,用于以太网上进行PPP认证和计费,其会话建立包含发现、会话和终结阶段。配置PPP或PPPoE时,需在对应接口设置账号密码和认证方式。
|
1月前
|
NoSQL Java Linux
【Linux IO多路复用 】 Linux 网络编程 认知负荷与Epoll:高性能I-O多路复用的实现与优化
【Linux IO多路复用 】 Linux 网络编程 认知负荷与Epoll:高性能I-O多路复用的实现与优化
61 0