Linux 7.0 正式发布,带来重大网络功能升级

Linux 7.0 内核现已正式发布,对于网络专业人员而言,这是多年来影响最为深远的一次版本更新。

Linux 内核是 Linux 操作系统发行版的核心组成部分,被广泛应用于云计算基础设施及网络系统底层。尽管 7.0 这个版本号看起来是一次重大跨越,但 Linux 创始人 Linus Torvalds 在确定主版本号时并没有严格的规律,通常是在上一个系列的子版本号积累过高之后,才会比较随意地升级到新的主版本号。

对此 Torvalds 解释道:"我们之所以换了一个新的主版本号,纯粹是因为我容易搞混、不擅长处理大数字。"

尽管如此,对于网络专业人员来说,Linux 7.0 包含了一系列值得关注的重要增强功能,主要包括以下几点:

精准显式拥塞通知(AccECN)成为默认配置

UDP 性能大幅提升

IPv6 功能增强

CAKE MQ(Common Applications Kept Enhanced)网络调度器集成

AccECN 正式成为默认配置

AccECN 支持现已默认集成于 Linux 中,旨在提供更优质的 TCP 拥塞处理能力。

在网络拥塞时,路由器传统上通过丢包来响应,迫使发送方检测到丢失后主动降速。2001 年,显式拥塞通知(ECN)机制对此进行了改进,允许路由器在不丢包的情况下发出拥塞信号,从而减少重传次数,并为视频流媒体等高带宽应用提供更流畅的性能表现。

然而,现有的 ECN 机制过于粗糙,AccECN 正是为解决这一问题而生。IETF 的 AccECN 草案规范指出:"ECN 最初在 TCP 中的设计方式,导致每个往返时延(RTT)内只能传输一个反馈信号。"

这对于基础拥塞控制已经足够,但现代高速协议需要知道拥塞程度究竟有多严重,而不仅仅是拥塞是否发生。AccECN 在此基础上大幅延伸。传统 ECN 只告诉发送方"发生了拥塞",而 AccECN 能精确告知拥塞的具体程度。这一区别使发送方可以精细调整响应策略,而不是一遇到问题就简单降速。

UDP 性能显著提升

此次获得性能提升的不只是 TCP 流量。

Linux 7.0 内核对网络栈的计时机制进行了重要优化,专门针对高速 UDP 流量中存在的性能瓶颈进行了改进。

内核现在可以降低关键热路径上函数调用所带来的额外开销。这一改动尤为重要,因为编译器通常无法在内核核心与以模块形式编译的网络驱动之间自动完成此类优化。

这项改动的实际效果已由谷歌工程师通过 100 Gbps 网络接口的压力测试得到验证,UDP 接收吞吐量提升了 12.3%。

该改进源于现代传输协议对硬件时间戳的依赖程度不断提高,在繁忙服务器上,这一特定代码路径每秒触发次数可超过 1 亿次。通过消除每个数据包的调用开销,该补丁显著降低了每包的 CPU 周期数,使数据密集型应用能够实现更高的线速处理能力。

CAKE MQ 多队列调度器集成

CAKE(Common Applications Kept Enhanced)是内置于 Linux 内核的网络调度器,负责管理数据包在网络接口上的排队与发送方式。

尽管 CAKE 多年来表现良好,但它始终绑定于单个 CPU 核心。随着网络接口速率不断提升,单个 CPU 核心已无法在线速条件下满足流量整形规则的执行需求。

Linux 7.0 通过由红帽工程师开发的新型多队列变体 cake_mq 解决了这一问题。cake_mq 不再运行单一的 CAKE 实例,而是在接口的每个硬件队列上分别安装一个 CAKE 实例,将处理负载分散到多个 CPU 核心上。

IPv6 功能持续增强

Linux 长期以来支持 IPv6,但随着运营商不断发现新问题,这一领域仍在持续改进之中。

7.0 版本网络栈中影响最为显著的变化之一,是对 IPv6 TCP 输出路径进行了优化,引入了流信息缓存机制。该更新面向高性能环境,旨在减少为每个出站数据包重复计算流数据所带来的额外开销。

Linux 7.0 内核还修复了 IPv4 与 IPv6 之间长期存在的路由不一致问题,即所谓的"下一跳设备不匹配"问题。具体而言,Linux 内核现在能够更智能地处理 IPv6 中下一跳通过非预期虚拟或物理路径到达的情况,不再因下一跳设备与内核路由表规则不完全匹配而报错或丢弃连接。

这一下一跳机制的改进旨在防止复杂软件定义网络(SDN)环境及容器网格网络中出现丢包现象。

目前,Linux 7.0 已正式面向公众发布,但各 Linux 发行版完成采用和全面部署仍需一定时间。

Q&A

Q1:Linux 7.0 中的 AccECN 和传统 ECN 有什么区别?

A:传统 ECN 只能告诉发送方"网络发生了拥塞",每个往返时延内仅能传输一个反馈信号,反馈信息较为粗糙。AccECN 则能精确告知拥塞的具体程度,让发送方根据实际情况精细调整传输策略,而不是一遇到拥塞信号就简单降速。这对现代高速网络协议尤为重要,能更有效地提升传输效率和网络利用率。

Q2:Linux 7.0 的 UDP 性能提升了多少?是怎么实现的?

A:根据谷歌工程师在 100 Gbps 网络接口上进行的压力测试,Linux 7.0 的 UDP 接收吞吐量提升了 12.3%。这一提升主要来自对网络栈计时机制的优化,通过减少关键热路径上的函数调用开销实现。在繁忙服务器上,相关代码路径每秒触发超过 1 亿次,消除每个数据包的调用开销后,CPU 每包处理周期数显著下降,线速处理能力因此大幅提高。

Q3:CAKE MQ 解决了什么问题?和原来的 CAKE 有什么不同?

A:原有的 CAKE 网络调度器始终绑定于单个 CPU 核心,随着网络接口速率提升,单核已无法满足线速流量整形的需求。Linux 7.0 引入的 cake_mq 是多队列变体,由红帽工程师开发,能在网络接口的每个硬件队列上分别运行一个 CAKE 实例,将处理负载分散到多个 CPU 核心,从而突破单核性能瓶颈,适应现代高速网络场景。

展开阅读全文

更新时间:2026-04-15

标签:数码   功能   网络   内核   队列   接口   开销   性能   核心   路径   机制   流量

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302035593号

Top