高效能網路SIG月度動態:SMC 與 IBM 就擴充套件協議達成一致,virtio 支援 XDP 新特性

OpenAnolis小助手發表於2023-02-10


高效能網路 SIG(Special Interest Group) :在雲端計算時代,軟硬體高速發展,雲原生、微服務等新的應用形態興起,讓更多的資料在程式之間流動,而網路則成為了這些資料流的載體,在整個雲時代扮演者前所未有的重要角色。在這個萬物互聯的時代,雲上的網路通訊效率對各種服務至關重要,高效能網路興趣組致力於利用 XDP、RDMA、VIRTIO 等新高效通訊技術,結合軟硬體一體化的思想,打造高效能網路協議棧,提升雲端計算時代資料中心應用的網路的效能.

01 本月 SIG 整體進展

1 月高效能網路 SIG 的工作在上游社群得到了積極響應,SMC、virtio 和業界相關參與方建立了持續的溝通機制。

關鍵進展:

  • 春節前龍蜥社群高效能網路 SIG 成員和 IBM SMC 團隊相關開發人員進行了一次視訊會議,討論關於 SMC 協議擴充套件以及龍蜥社群高效能網路 SIG 小組在 SMC 上近期的一些工作,並建立起定期溝通機制。

  • 繼 2022 年 12 月我們將 SMC loopback 和 virtio-ism 裝置提交到 Linux 社群後,本月陸續得到了上游社群的反饋。針對 SMC 裝置擴充,上游 Linux 社群合入了 SMC-D 和 ISM 裝置的解耦修改,為後續 SMC loopback 和 virtio-ism 的支援鋪平了道路。

  • SMC fallback 加速功能已開發完成,SIG 內部 review 中。fallback 加速將確保 SMC 在 fallback 回 TCP 後效能不會出現損失,彌補當前 SMC fallback 到 TCP 時短連線效能不足的問題。

  • SIG 開發的針對 virtio-net 的 xdp multi-buffer 的支援已被上游 Linux 社群接收。預設情況下,xdp 和 jumbo frame 是衝突的,本特性允許我們在使用 jumbo frame 場景下也使用 xdp。

  • SIG 提交的 virtio-net 支援 XDP socket zerocopy 功能本月已完成開發並提交到上游 Linux 社群討論。virtio-net 之前不支援 XDP socket 的零複製功能,本特性使 virtio-net 完成了 XDP socket 零複製的支援,大幅提升 XDP Socket 的收發包效能。

02 Anolis OS

問題修復

本月 ANCK 網路方向共計修復 17 個 CVE(包含一個高危 CVE-2023-0179),覆蓋 netfilter/tcp/udp/bluetooth/net.packet/proc/xen/slip 等模組,CVE 列表:CVE-2022-4378,CVE-2022-20368,CVE-2022-42895,CVE-2022-42896,CVE-2022-3564,CVE-2022-3566,CVE-2022-2588,CVE-2022-36879,CVE-2022-1966,CVE-2022-3535,CVE-2022-3524,CVE-2022-42722,CVE-2022-33741,CVE-2022-1966,CVE-2022-1204,CVE-2022-41858,CVE-2023-0179。

03 SMC

外部會議

本月與 IBM SMC 團隊進行了一次視訊會議,針對 SMC 協議擴充套件以及龍蜥社群高效能網路 SIG 小組在 SMC 上近期的一些工作進行了討論,並建立起定期溝通機制,加強了雙方的瞭解與合作。

SMC-D 擴充套件

  • 上游 Linux 社群已合入 SMC-D 和 ISM 裝置解耦修改,旨在提供一個更通用的擴充套件 SMC-D 能力(),為我們推送上游 Linux 社群的 SMC loopback 和 SMC + virtio-ism 方案准備。

  • SMC loopback 方案推送上游 Linux 社群後,陸續得到了上游社群的反饋,其中一些技術細節仍在討論中()。SMC loopback 和 SMC + virtio-ism 方案本質上都依賴 SMC-D 針對更多裝置的擴充套件能力,這其中一些共同的工作我們將會一起在上游 Linux 社群推進(https://lists.oasis-open.org/archives/virtio-dev/202212/msg00041.html)。

SMC fallback 加速

加速 SMC fallback 的方案已經開發完成,該方案旨在提供一種快速、輕量回退 TCP 的能力,拓寬 SMC 的使用場景。預計下個月推送上游 Linux 社群。

04 virtio

virtio-net tunnel

背景:網路包使用 tunnel 相關技術的時候, 一般會有一個 outer header 和一個 inner header。而基於已經有 virtio-net spec 定義, 在做佇列選擇的時候, 會基於 outer header 進行 hash 計算。而一般情況下, tunnel 的資料包的 outer header 是固定的或相似的, 這樣只會有少量的網路卡佇列會被選擇, 無法發揮多佇列網路卡的優勢。

Heng Qi hengqi@linux.alibaba.com 發起了 virtio_net: support inner header hash 的提案,目前針對熱遷移還有一些收尾的點需要討論(https://lists.oasis-open.org/archives/virtio-dev/202301/msg00051.html)。

virtio-net split header

背景:將資料包的 header 和 payload 進行分離,在例如零複製等方向具有十分重要的意義,例如 Eric 提出的零複製方法()和 Jonathan Lemon 提出的零複製方法等(連結見下)。

Xuan Zhuo 發起了 virtio_net: support for split transport header 的提案,並和 Heng Qi 共同社群推動,目前 Nvidia 的 Parav Pandit 也提出了一些新的想法參與到這個功能的討論中,正在討論(https://lists.oasis-open.org/archives/virtio-dev/202301/msg00306.html)。

virtio-net multi-buffer xdp

本月 SIG 成員 Heng Qi 提交的 virtio-net 對於 xdp multi-buffer 的補丁被合入到 linux 主線()。XDP multi-buffer 允許一個 XDP ebpf 程式訪問多個收方向的 buffer,而像 Jumbo frame 一類的特性,9K 的 MTU 導致一個包的大小可能會超過 1 個 PAGE,而沒有 XDP multi-buffer 之前,XDP 程式只能訪問一塊連續的記憶體。因此,jumbo frame 和 XDP 存在衝突,透過 multi-buffer XDP 的支援,可以解決 jumbo frame 和 XDP 不能共存的問題。

virtio-net XDP Socket(AF_XDP) zerocopy

在完成了 per-queue reset 的 spec 及 kernel 工作的前期下, 最新版本的 virtio-net 支援 XDP socket zerocopy 的 patch set 終於提交給社群, 等社群進一步的討論。這個特性之前在龍蜥的核心上透過其他方式完成了支援,並且基於 ExpressUDP 和 XQUIC 在阿里巴巴的入口閘道器大規模上線,現在我們把這個特性貢獻給上游社群。關於 ExpressUDP 和 XQUIC 實踐,參考 ExpressUDP()。

—— 完 ——


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2934815/,如需轉載,請註明出處,否則將追究法律責任。

相關文章