兩種以太網 RDMA 協議: iWARP 和 RoCE


本文是講演 How Ethernet RDMA Protocols iWARP and RoCE Support NVMe over Fabrics【1】的摘要。
如果 NVMe 存儲系統與主機是分離的,顯然需要某種 fabric 把它們連接,這樣主機才能使用存儲系統。目前,支持遠程連接的 fabric 包括:
  • RDMA 協議:底層可以是以太網( RoCE 或者 iWARP )或者 Infiniband
  • Fibre Channel 協議:底層可以是 FC 網絡或者以太網(FCoE)
一、為什么需要 RDMA ?
RDMA (Remote Direct Memory Access) 是一種繞過主機 (host-offload/host-bypass) 技術:一個應用(包括存儲)<--發送/接收數據-->另外一個(遠程)應用的內存空間。
  • Source Application <-- (發送/接收、完成)隊列 --> 帶 RDMA 功能的網卡 <-- 可靠的網絡連接 --> 帶RDMA 功能的網卡 <-- (發送/接收、完成)隊列 --> Target Application
 由上圖可知,應用程序可以從一台(物理的或者虛擬的)機器直接傳送數據到另外一台機器,這既提高了帶寬又降低了延遲、抖動和 CPU 消耗。
各種操作系統支持 RDMA :
  • Windows Server: 從 Windows HPC Server 2008 開始支持 Network Direct userspace API ;從 Windows Server 2012 開始支持 Network Direct kernel API
  • Linux: 從2004年開始,由 OpenFabrics Alliance 提供 userspace/kernel API , RHEL 和 SLES 已經自帶, Ubuntu 要自己安裝?
  • FreeBSD 9.0+ 支持 OpenFabrics Alliance userspace/kernel API
具體來說, RDMA 技術特性帶來的好處如下圖所示:
  NVMe 設備延遲很低,這就要求網絡延遲也必須很低, RDMA 正好滿足這一點。
二、用 RDMA 發送 NVMe 寫命令
 以一個 NVMe 寫操作為例。 NVMe 主機驅動把寫命令及數據(從 NVMe 提交隊列取出一項)封裝一個與底層傳輸無關的命令膠囊(capsule);膠囊被放到主機 RDMA 網卡的發送隊列中,由 RDMA_SEND 發送出去;目標主機的 RDMA 網卡在接收隊列中收到這個膠囊,解除封裝,把 NVMe 命令及數據放到目標主機的內存中;目標主機處理 NVMe 命令及數據;完成后,目標主機封裝一個 NVMe 命令完成項,由 RDMA 傳輸到源主機。
三、兩種基於以太網的 RDMA 協議
第一種:以太網->IP->UDP->RoCE (RDMA over Converged Ethernet) v2
第二種:以太網->IP->TCP(去掉 TCP/IP 流量控制和管理)->iWARP
不同協議的網卡之間並不兼容,也就說支持 RoCE 協議的網卡不能與支持 iWARP 協議的網卡交換數據。
兩種協議的供應商上台系統不一樣,
 對底層網絡基礎設施的要求也不一樣:
 了解更多細節,
【1】How Ethernet RDMA Protocols iWARP and RoCE Support NVMe over Fabrics https://www.brighttalk.com/webcast/663/185909


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM