天天看點

RDMA網絡最新技術

RDMA網絡最新技術

一年一度的雲栖大會近日在杭州如約舉行。今年的雲栖大會上阿裡雲釋出了第四代神龍架構,其中彈性 RDMA 加速能力尤其值得關注。基于彈性 RDMA,阿裡雲作業系統 Alibaba Cloud Linux 3 和龍蜥社群作業系統 Anolis OS 在網絡方面基于社群 SMC-R 優化形成相容 socket 的 RDMA 産品方案,旨在幫助雲上應用無修改的享受 RDMA 帶來的性能提升。本文将為您闡述 SMC-R 的産生背景、原理架構以及部分性能資料。

作者:古聞、無牙、榮旸

近些年,随着雲計算的飛速發展,特别是阿裡雲神龍、AWS Nitro 等硬體虛拟化方案的出現,雲上的虛拟化網絡性能有了質的飛躍。相比于雲網絡的欣欣向榮,CPU 的性能提升卻似“擠牙膏”一般有些力不從心。是以,将部分原本由 CPU 承擔的工作解除安裝到後端硬體的解決思路成為了雲計算領域研究的一個“熱點”。遠端記憶體直接通路 (Remote Direct Memory Access, RDMA) 這項追求極緻性能,曾經主要應用在高性能計算、高頻交易等特定場景中的技術也是以進入了雲廠商的資料中心。

從 TCP 到 RDMA

RDMA 作為一種旁路核心的遠端記憶體直接通路技術,被廣泛應用于資料密集型和計算密集型場景中,是高性能計算、機器學習、資料中心、海量存儲等領域的重要解決方案。RDMA 在阿裡巴巴已大規模穩定運作多年,支撐了阿裡雲 ESSD、PolarDB 等核心業務,并在雙十一等重大場景得到充分驗證。RDMA 具有零拷貝、協定棧解除安裝的特點。RDMA 将協定棧的實作下沉至 RDMA 網卡 (RNIC),繞過核心直接通路遠端記憶體中的資料。由于不經過系統核心協定棧,RDMA 與傳統 TCP/IP 實作相比不僅節省了協定處理和資料拷貝所需的 CPU 資源,同時也提高了網絡吞吐量、降低了網絡通信時延。

RDMA網絡最新技術

在過去,RDMA 隻能在一些資料中心網絡中通過網卡和交換機緊密配合使用,部署複雜度高。但如今,阿裡雲彈性 RDMA 将複雜的 RDMA 技術帶到雲上,使普通的 ECS 使用者也能使用高性能的 RDMA 傳輸,無需關心底層複雜的網卡、交換機等實體網絡環境配置,使其成為一種親民、普惠的技術。

從 verbs 到 socket

不過,雖然 RDMA 性能優異,但是由于 RDMA 使用的 IB verbs 接口和常用的 POSIX socket 接口存在巨大的差異,普通應用要使用 RDMA 将面臨着大量的業務改造,高效的将 RDMA 應用于現有業務存在較高的技術門檻。是以,曆史上存在一些将 RDMA 的 IB verbs 語義封裝成 socket 接口的嘗試,典型如 rsocket、libvma。其中,libvma 通過 LD_PRELOAD 攔截 socket 接口,轉而使用使用者态 verbs 完成資料傳輸。但這些方案存在一些缺陷:由于轉換發生在使用者态,一方面缺少核心統一資源管理,另一方面在相容性上也存在一些問題。從資源管理和相容的角度上看,在核心中實作 socket 接口相比于使用者态來說有着天然的優勢。在 Alibaba Cloud Linux 3 和 Anolis OS 中,我們提供并優化了基于 RDMA 的共享記憶體通信 (Shared Memory Communications over RDMA, SMC-R) 技術,這是一次基于核心 RDMA 實作 TCP 應用相容的嘗試。原生的 SMC-R 支援标準 RoCE 網絡,我們對其進行了擴充,首次實作對 iWARP 的支援,可以完美的支援阿裡雲自研的彈性 RDMA,進而實作雲上應用零修改的享受 RDMA 帶來的性能紅利。

兼備 socket 和 RDMA 的核心實作:SMC-R

用一句話來描述,SMC-R 是一套與 TCP/IP 平行的向上相容 TCP socket 接口,底層使用 RDMA RC 進行資料傳輸的協定族。SMC-R 工作于核心空間,處于 socket 層和核心 RDMA 的 IB verbs 層之間。SMC-R 像是一個能力卓越的翻譯兼管家,它接收使用者傳達的 socket 指令,轉而使用 RDMA 的 IB verbs 接口管理 RDMA 資源,完成底層基于 RDMA 的資料傳輸。是以,使用者隻需将原有 socket 接口使用的協定族從 AF_INET(6) 修改為 AF_SMC 即可完成從 TCP 協定棧到 SMC-R 協定棧的轉變。但這還不夠,我們希望在零修改的前提下完成協定替換。為此,Alibaba Cloud Linux 3 和 Anolis OS 在 socket 層增加協定族替換相關的 sysctl 和白名單,提供了 net namespace 和單個應用次元下的 TCP 至 SMC-R 協定棧透明替換能力,使應用不需要任何修改即可讓資料在 RDMA 鍊路這條高速公路上飛馳起來。

RDMA網絡最新技術

然而,僅本地一廂情願的使用 SMC-R 可不行,遠端節點同樣得具備 SMC-R 能力才能讓高速公路有始有終。是以,SMC-R 具備自動協商和安全回退 TCP 的能力。SMC-R 建立 RDMA 鍊路時,首先會與通信對端建立 TCP 連接配接,雙方在握手過程中通過特殊的 TCP 選項表明自身支援 SMC-R。協商成功後,SMC-R 将為使用者态應用申請必要的 RDMA 資源,将接收資料緩沖區注冊為可被遠端節點直接通路的遠端記憶體緩沖區 (Remote Memory Buffer, RMB),并将對應的通路密鑰以及緩沖區起始位址封裝成遠端通路令牌 (RToken) 告知遠端節點,作為其通路 RMB 的重要驗證資訊。特殊情況下,若在協商過程中發現收發兩端其一不具備 RDMA 傳輸條件時,将觸發安全回退機制。SMC-R 會使用協商過程中建立的 TCP 連接配接完成後續的資料傳輸,保證網絡的可靠穩定。

RDMA網絡最新技術

資料傳輸的高速公路建立起來後,交通規則也要安排妥當。顧名思義,SMC-R 是一種通過 RDMA 實作共享記憶體的通信方式,其将環形 RMB 作為共享記憶體,配合資料遊标實作高效的資料傳輸。SMC-R 使用 RDMA WRITE 單邊操作的方式将網絡應用傳遞至核心的資料直接、高效地寫入遠端節點環形 RMB 中。同時使用 RDMA SEND/RECV 雙邊操作的方式互動連接配接資料管理 (Connection Data Control, CDC) 消息,用于更新、同步 RMB 中的資料遊标 (Cursor)。針對一側 RMB,讀者更新消費者遊标 (Consumer Cursor),辨別即将讀取的下一位元組位址。為避免資料丢失,寫者不會将資料寫入超過消費者遊标的 RMB 空間中。相似的,寫者更新生産者遊标 (Producer Cursor),辨別即将寫入的下一位元組位址。為確定資料的正确性,讀者不會讀取超過生産者遊标的 RMB 空間中的内容。就這樣,兩個資料遊标在環形 RMB 上你追我趕,貫穿網絡資料傳輸的始終,確定傳輸的安全與可靠。

RDMA網絡最新技術

最後,資料在高速公路上飛馳難免會遇到差錯,為了保證一切都在掌控之中,Alibaba Cloud Linux 3 和 Anolis OS 為 SMC-R 提供了一系列監控診斷接口和工具,包括控制透明替換的 sysctl、查詢 SMC-R socket 狀态的 proc 檔案、擷取 SMC-R 各次元資訊的 smc-tools 工具集等,以保障網絡的可監控性和易運維性。通過上述架構概述和理論分析,SMC-R 展現了其相容 socket 接口,透明替換 TCP,使用 RDMA 完成底層資料傳輸的能力。基于這些,我們終于可以總結出 SMC-R 的核心優勢:高性能

  • 更輕薄的協定棧;
  • 使用 RDMA 進行通信,網絡時延更低、CPU 占用更少、吞吐量更高;
  • 高效可靠的遠端環形緩沖區直接通路。

透明替換

  • 相容 socket 接口的 RDMA 可靠流式傳輸;
  • 自動協定協商和安全回退 TCP 能力;
  • net namespace 和應用次元的協定棧無損透明替換;
  • 底層相容彈性 RDMA iWARP 和标準 RoCE 網絡。

性能表現

基于上面的介紹,我們知道 SMC-R 的一個主要優勢在于保證相容的情況下提供更好的性能,但性能到底如何?我們一起來看看 SMC-R 配合阿裡雲彈性 RDMA 在幾個典型應用場景中的表現吧。測試環境

  • CPU:Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz 104 核
  • 網卡:彈性 RDMA * 1
  • OS:Alibaba Cloud Linux 3

「時延敏感的資料庫」 場景redis

  • 不同 data size 場景下,redis-benchmark 測試 SMC-R 對比 TCP 性能資料
RDMA網絡最新技術
  • 不同 clients 數量場景下,redis-benchmark 測試 SMC-R 對比 TCP 性能資料
  • 不同類型 RPC 接口下使用 TCP 和 SMC-R 所得 QPS 對比 
  • 不同類型 RPC 接口下使用 TCP 和 SMC-R 所得 QPS 對比 

繼續閱讀