高性能网络SIG月度动态:两大特性合入 Linux 主线,提供高速本地通信加速及丰富的设备信息

简介: 高性能网络SIG月度动态送达。

高性能网络 SIG(Special Interest Group)在这个万物互联的时代,云上的网络通信效率对各种服务至关重要,高性能网络兴趣组致力于利用 XDP、RDMA、VIRTIO 等新高效通信技术,结合软硬件一体化的思想,打造高性能网络协议栈,提升云计算时代数据中心应用的网络性能。

01 整体进展

本月高性能网络 SIG 的主要工作聚焦在 SMC 和 virtio 上。

本月关键进展:

1. SIG 推进的 virtio device stats 特性本月正式合入上游 Linux 主线,为 virtio 用户提供丰富的设备统计信息。

2. SIG 推进的 loopback-ism 特性本月正式合入上游 Linux 主线,提供了 OS 内通信的高效加速方式。

02 ANCK 内核网络

修复

ANCK 5.10 本月修复若干异常问题,主要问题包括:

  • 修复了 tcf_skbmod_dump() 中内核栈泄漏的安全问题。(PR3058)
  • 修复了构建 IPv6 PMTU时异常越界访问的问题。(PR2852)
  • 修复了在特定架构下 ndisc_send_skb() 中可能出现访问未对齐内存警告的问题。(PR2849)

ANCK 4.19 修复了__skb_datagram_iter() 统一调用导致 kmap/kunmap 性能回退的问题。(PR3050)

03 SMC

本月高性能网络 SIG 在 SMC 领域的工作,主要聚焦在推动 SMC-D loopback-ism 合入上游。

loopback-ism

SMC 内核网络协议根据底层共享内存操作方式的不同分为基于 RDMA 设备的 SMC over RDMA(SMC-R) 和基于 ISM 设备的 SMC over DMA(SMC-D)。不同于 RDMA 技术,ISM 功能目前仅在 IBM z 系列大型机上提供,用于加速 CPC 内部通信。为了使 SMC-D 普惠,高性能网络 SIG 持续与 IBM 合作,使 SMCv2 协议支持软件实现的 Emulated-ISM。loopback-ism 就是一种 Emulated-ISM,配合 SMC-D 可提供同 OS 内部(进程间/容器间)的通信加速。本月经过 v5,v6,v7 三个版本的迭代,loopback-ism 系列补丁合入上游[1]

04 virtio

本月高性能网络 SIG 在 virtio 领域的工作,主要聚焦在 virtio-net 支持 device states 和 ring resize。

Device States

Virtio-net 设备统计(device stats)是一个高效的机制,旨在提供设备在处理数据包时生成的详细统计数据,提升网络设备的运维监控能力。


过去,virtio-net 不支持获取后端设备的统计信息,从 Guest 内无法通过 ethtool -S 的方式获取到后端的统计信息,要获取到后端的异常信息,只能通过云厂商的监控系统来实现。基于 virtio-net 的设备统计方式,通过驱动的控制通道,用户可以访问 virtio 网卡提供的综合统计信息,涵盖从校验和错误、缓冲区溢出导致的数据包丢失到数据包合并处理以及设备正常处理请求等的各种情况。这些数据,特别是关于数据包丢失的信息,为用户提供了有效的故障定位和问题诊断的参考。


在之前的工作中,高性能网络 SIG 已经完成了相关的 spec 标准化工作。最新的进展是,virtio-net 设备统计正式在上游内核中得到了支持[2]

Ring Resize

Virtio-net 的 "ring resize" 特性提供了一个机制,能够让用户在运行时动态调整网卡队列的大小,优化网络性能,特别是在特定场景中可以降低延迟和减少数据包丢失。这一调整过程通过用户空间的 “ethtool -G”命令实现,使得网络配置更为灵活。该特性建立在高性能网络 SIG 先前定义的 “virtio vq reset” 功能之上。此特性正在 ANCK-5.10 上回合 review 中[3]


相关链接:

[1]https://lore.kernel.org/netdev/20240428060738.60843-1-guwen@linux.alibaba.com/

[2]http://lore.kernel.org/all/20240426033928.77778-1-xuanzhuo@linux.alibaba.com

[3] https://gitee.com/anolis/cloud-kernel/pulls/3110

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


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

—— 完 ——

相关文章
|
4月前
|
C++
基于Reactor模型的高性能网络库之地址篇
这段代码定义了一个 InetAddress 类,是 C++ 网络编程中用于封装 IPv4 地址和端口的常见做法。该类的主要作用是方便地表示和操作一个网络地址(IP + 端口)
284 58
|
4月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
175 2
|
4月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
157 1
|
4月前
|
负载均衡 算法 安全
基于Reactor模式的高性能网络库之线程池组件设计篇
EventLoopThreadPool 是 Reactor 模式中实现“一个主线程 + 多个工作线程”的关键组件,用于高效管理多个 EventLoop 并在多核 CPU 上分担高并发 I/O 压力。通过封装 Thread 类和 EventLoopThread,实现线程创建、管理和事件循环的调度,形成线程池结构。每个 EventLoopThread 管理一个子线程与对应的 EventLoop(subloop),主线程(base loop)通过负载均衡算法将任务派发至各 subloop,从而提升系统性能与并发处理能力。
270 3
|
4月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
122 0
|
2月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
99 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
4月前
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
293 60
|
4月前
基于Reactor模型的高性能网络库之Channel组件篇
Channel 是事件通道,它绑定某个文件描述符 fd,注册感兴趣的事件(如读/写),并在事件发生时分发给对应的回调函数。
241 60
|
4月前
|
安全 调度
基于Reactor模型的高性能网络库之核心调度器:EventLoop组件
它负责:监听事件(如 I/O 可读写、定时器)、分发事件、执行回调、管理事件源 Channel 等。
287 57
|
4月前
基于Reactor模型的高性能网络库之时间篇
是一个用于表示时间戳(精确到微秒)**的简单封装类
197 57