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 核心,從而突破單核性能瓶頸,適應現代高速網路場景。






