高性能網(wǎng)絡(luò) SIG 月度動態(tài):推動 virtio 支持動態(tài)中斷調(diào)節(jié)及更靈活的分流機制
發(fā)布時間:2023-09-21 15:14:07
01 SIG 整體進展
本月高性能網(wǎng)絡(luò) SIG 的主要工作聚焦在 virtio 對 NetDIM 的支持以及多個 virtio 提案的發(fā)起。
本月關(guān)鍵進展:
SIG 推動完成了 NetDIM 的 virtio 標準和 OS 代碼,修復了多個上游問題并在 sockperf benchmark 中獲得 20%+ 的吞吐提升。
SIG 與 Nvidia、Marvell 等合作發(fā)起了 [PATCH requirements v5 5/7] net-features: Add n-tuple receive flow filter]() 的提案,讓 virtio 支持接收流過濾的能力,提供靈活的流規(guī)則配置方法。以及 [PATCH v2] virtio-net:support the RSS context]() 提案,使 virtio 支持多個 RSS (Receive Side-Scaling) 配置上下文。
02 ANCK
安全
本月網(wǎng)絡(luò)方向共計修復 9 個 CVE,覆蓋 sched/ipvlan/ipv6/netfilter/xfrm 等模塊,CVE 列表:
CVE-2023-3609、CVE-2023-3611、CVE-2023-3090、CVE-2023-2156、CVE-2023-3773、CVE-2023-3776、CVE-2023-3812、CVE-2023-3390、CVE-2023-4147。
03 SMC
本月高性能網(wǎng)絡(luò) SIG 在 SMC 領(lǐng)域的工作主要聚焦在上游 SMC-D 虛擬設(shè)備拓展方案的推動。
SMC-D 虛擬設(shè)備拓展
SMC-D 被用于物理機內(nèi)部的 SMC 加速,在過去只能配合 IBM s390 架構(gòu)中的 ISM 設(shè)備使用。SIG 積極推動 SMC-D 虛擬設(shè)備拓展,以便于在其他架構(gòu)中享受 SMC-D 帶來的性能提升。
本月的 SMC 開發(fā)者會議上確定了使用 UUID 作為 SMC-D 虛擬設(shè)備的 GID,從而在無中心的情況下確保虛擬設(shè)備 GID 的唯一性。在 Linux 中將使用最為常用的 UUIDv4 作為 SMC-D loopback 等虛擬設(shè)備 GID 的實現(xiàn)方式。此外,除 0-0x7FFF 以外的 VCHID 將預(yù)留 4K 個給 SMC-D 虛擬設(shè)備,以幫助 SMC-D 握手時快速分辨對端虛擬設(shè)備是否可達。
04 Virtio
本月高性能網(wǎng)絡(luò) SIG 在 virtio 領(lǐng)域的工作,主要聚焦在:
(1)測試動態(tài)中斷調(diào)節(jié)性能數(shù)據(jù)。
(2)推動接收流過濾、RSS Context 的標準方案。
動態(tài)中斷調(diào)節(jié)
動態(tài)中斷調(diào)節(jié) NetDIM 算法通過統(tǒng)計設(shè)備隊列的流量信息,自適應(yīng)調(diào)整網(wǎng)卡中斷頻率,以達到吞吐提升的目的。
高性能網(wǎng)絡(luò)小組推動完成了 NetDIM 的 virtio 標準和 OS 代碼,發(fā)現(xiàn)并修復了多個上游內(nèi)核問題。測試結(jié)果顯示,在 sockperf benchmark 中可以最大提升 20+% 的吞吐。
高性能網(wǎng)絡(luò)小組進一步分析了 NetDIM 的時延影響,發(fā)現(xiàn) NetDIM 會對低載小包時延產(chǎn)生不利影響,這是由于 NetDIM 算法設(shè)計更加關(guān)注吞吐提升,沒有針對性關(guān)注時延提升而造成的。我們會針對此時延問題嘗試作出進一步的優(yōu)化。
接收流過濾
接收流過濾(Receive Flow Filter)能力提供接收方向的數(shù)據(jù)流處理,包括數(shù)據(jù)流導向、數(shù)據(jù)流過濾等,為用戶提供了靈活的流規(guī)則配置方法。數(shù)據(jù)流導向功能基于用戶在 virtio 網(wǎng)卡上配置的數(shù)據(jù)流規(guī)則,可以將匹配了某個規(guī)則的數(shù)據(jù)流導到對應(yīng)的單個或多個目的隊列。數(shù)據(jù)流過濾功能可以將匹配了某個規(guī)則的數(shù)據(jù)報文丟棄。
高性能網(wǎng)絡(luò)小組與 Nvidia、Marvell 等合作發(fā)起了 [PATCH requirements v5 5/7] net-features:Add n-tuple receive flow filter]() 的提案,讓 virtio 支持接收流過濾的能力,同時在設(shè)計時考慮了網(wǎng)絡(luò)通用加速方法 Accelerated RFS 的實現(xiàn)要求,可作為后續(xù)流規(guī)則相關(guān)配置方法的基礎(chǔ)能力。
RSS Context
當前 virtio 僅支持單個默認 RSS (Receive Side-Scaling) 配置,這無法滿足一些場景對隊列流量隔離等的需求,導致網(wǎng)絡(luò)設(shè)備流量管理不靈活的問題。針對此問題,高性能網(wǎng)絡(luò)小組發(fā)起了 [PATCH v2] virtio-net: support the RSS context]() 提案,以支持 virtio 實現(xiàn)多個 RSS 配置上下文。該提案支持查詢設(shè)備能力,修改、刪除、新增 RSS context 等。
virtio-net + AF_XDP
高性能網(wǎng)絡(luò)小組一直以來都在主導推進 virtio-net 對于 AF_XDP 的支持。2 年多以來,我們已經(jīng)解決了多個相關(guān)的基礎(chǔ)依賴問題。
目前這塊的工作取得了一些決定性的進展:Virtio Core 支持 dma premapped 的特性目前已經(jīng)被合并進入了 Linux 6.6。這意味著, virtio-net 支持 AF_XDP 的最后一塊依賴被補齊了。我們會盡快整理后續(xù) virtio-net 支持 AF_XDP 的 patch 提交到上游社區(qū),完成這一工作。