RDMA技術原理分析、主流實現對比和解析
RDMA技術最早出現在Infiniband網路,用於HPC高性能計算集群的互聯。傳統的基於Socket套接字(TCP/IP協議棧)的網路通信,需要經過操作系統軟體協議棧,數據在系統DRAM、處理器Cache和網卡Buffer之間來回拷貝搬移,因此佔用了大量的CPU計算資源和內存匯流排帶寬,也加大了網路延時。舉例來說,40Gbps的TCP/IP流能耗盡主流伺服器的所有CPU資源;RDMA則解決了傳統TCP/IP通信的技術痛點。例如,在40Gbps場景下,CPU佔用率從100%下降到5%,網路延時從ms級降低到10us以下。
RDMA是一種新的內存訪問技術,RDMA讓計算機可以直接存取其他計算機的內存,而不需要經過處理器耗時的處理。RDMA將數據從一個系統快速移動到遠程系統存儲器中,而不對操作系統造成任何影響。RDMA技術的原理及其與TCP/IP架構的對比如下圖所示。
因此,RDMA可以簡單理解為利用相關的硬體和網路技術,伺服器的網卡之間可以直接讀內存,最終達到高帶寬、低延遲和低資源利用率的效果。應用程序不需要參與數據傳輸過程,只需要指定內存讀寫地址,開啟傳輸並等待傳輸完成即可。
RDMA最早在Infiniband傳輸網路上實現,技術先進,但是價格高昂(只有Mellanox和Intel供應商提供全套網路解決方案),後來業界廠家把RDMA移植到傳統Ethernet乙太網上,降低了RDMA的使用成本,推動了RDMA技術普及。在Ethernet乙太網上,根據協議棧融合度的差異,分為iWARP和RoCE兩種技術,而RoCE又包括RoCEv1和RoCEv2兩個版本(RoCEv2的最大改進是支持IP路由),各RDMA網路協議棧的對比如下圖所示。
Infiniband,支持RDMA的新一代網路協議。 由於這是一種新的網路技術,因此需要支持該技術的NIC和交換機。
RoCE,一個允許在乙太網上執行RDMA的網路協議。 其較低的網路標頭是乙太網標頭,其較高的網路標頭(包括數據)是InfiniBand標頭。 這支持在標準乙太網基礎設施(交換機)上使用RDMA。 只有網卡應該是特殊的,支持RoCE。
iWARP,一個允許在TCP上執行RDMA的網路協議。 IB和RoCE中存在的功能在iWARP中不受支持。 這支持在標準乙太網基礎設施(交換機)上使用RDMA。 只有網卡應該是特殊的,並且支持iWARP(如果使用CPU卸載),否則所有iWARP堆棧都可以在軟體中實現,並且喪失了大部分RDMA性能優勢。
RDMA應用和RNIC(RDMA-aware Network Interface Controller)之間的傳輸介面層(Software Transport Interface)被稱為Verbs或RDMA API,RDMA API (Verbs)主要有兩種Verbs:
內存Verbs(Memory Verbs),也叫One-SidedRDMA。包括RDMA Reads, RDMA Writes, RDMA Atomic。這種模式下的RDMA訪問完全不需要遠端機的任何確認。
消息Verbs(Messaging Verbs),也叫Two-SidedRDMA。包括RDMA Send, RDMA Receive。這種模式下的RDMA訪問需要遠端機CPU的參與。
RDMA over TCP(iWARP)協議能夠工作在標準的基於TCP/IP協議的網路,如目前在各個數據中心廣泛使用的乙太網。iWARP並沒有指定物理層信息,所以能夠工作在任何使用TCP/IP協議的網路上層。iWARP允許很多傳輸類型來共享相同的物理連接,如網路、I/O、文件系統、塊存儲和處理器之間的消息通訊。
從RDMA over TCP的協議棧來看,最上面三層構成iWARP協議族,用來保證高速網路的互操作性。
RDMA over Converged Ethernet(RoCE)是一種網路協議,允許應用通過乙太網實現遠程內存訪問。目前RoCE有兩個協議版本。
RoCE v1是一種鏈路層協議,允許在同一個廣播域下的任意兩台主機直接訪問。
RoCE v2是一種Internet層協議,即可以實現路由功能。雖然RoCE協議這些好處都是基於融合乙太網的特性,但是RoCE協議也可以使用在傳統乙太網網路或者非融合乙太網絡中。
目前,雖然IB、乙太網RoCE、乙太網iWARP這三種RDMA技術使用統一的API,但它們有著不同的物理層和鏈路層。在乙太網解決方案中,RoCE相對於iWARP來說有著明顯的優勢,這些優勢體現在延時、吞吐率和 CPU負載。RoCE被很多主流的方案所支持,並且被包含在Windows服務軟體中。
RDMA技術基於傳統網路的概念,但與IP網路又有些不同。最關鍵的不同是RDMA提供了一種消息服務, 利用這種服務,應用程序可以直接訪問遠程計算機上的虛擬內存。消息服務可以用來進行網路中進程間通信(IPC)、遠程伺服器通信和在一些上層協議的協助下與存儲設備進行數據傳遞。上層應用協議ULPs(Upper Layer Protocols)有很多,例如iSCSI的RDMA擴展(iSER)、SCSI RDMA協議(SRP)等,主流的SMB、Samba 、Lustre、ZFS等也支持RDMA。
RoCE和InfiniBand,一個定義了如何在乙太網上運行RDMA,而另一個則定義了如何在IB網路中運行RDMA。RoCE期望能夠將IB的應用(主要是基於集群的應用)遷移到融合乙太網中,而在其他應用中,IB網路仍將能夠提供比RoCE更高的帶寬和更低的時延。RoCE和IB協議的技術區別:
擁塞控制:RoCE所依賴的無丟包網路基於乙太網流控或PFC(Priority Flow Control)來實現。RoCEv2 則是定義了擁塞控制協議,使用ECN做標記和CNP幀來做確認。而IB則是使用基於信用的演算法來保證HCA-HCA之間的無丟包通信。
時延:當前IB交換機普遍要比以太交換機擁有更低的時延,乙太網交換機一般的Port-to-Port時延在230ns,相比IB交換機在同樣埠數的情況下100ns的時延,以太交換機還是要高出不少。
配置:配置一個DCB乙太網絡要遠比配置一個IB網路要複雜的多,同理,運維也要複雜的多。
RoCE和iWARP,一個是基於無連接協議UDP,一個是基於面向連接的協議(如TCP)。RoCEv1隻能局限在一個二層廣播域內,而RoCEv2和iWARP都能夠支持三層路由。相比RoCE,在大型組網的情況下,iWARP的大量TCP連接會佔用大量的額內存資源,對系統規格要求更高。另外,RoCE支持組播,而iWARP還沒有相關的標準定義。
Intel收購了Qlogic的InfiniBand業務的Intel又另闢新徑,推出了一整套叫做「True Scale Fabric」的高性能計算架構的解決方案(包括IB和Omni-Path),獨立提出了一套Omni-Path Host Fabric Interface介面和對應的交換機產品。提供Verbs和PSM(性能擴展消息庫)兩個編程介面,PSM是專門面向 MPI 通信設計的介面。
Intel在CPU上集成了Omni-Path相關功能,這也意味著Omni-Path通信效率上更加高效,但會讓自己的網路依賴於CPU,至少在處理器上開放性還是做的比較有局限性。
通過收購Cray互聯部門,Intel在 Omni-Path引入了1.5層的概念。它被稱作鏈接傳輸層(Link Transport Layer),基於Cray的Aries基礎互聯技術優化底層數據通信,提供可靠的2層數據包交付、流控和單連璐控制。這也算是對收購Cray的Aries技術的充分利用。
基於作者對RDMA理解,已經對相關技術總結整理成的RDMA原理分析、對比和技術實現解析>電子書,資料目錄如下。
通票贈送進行中... ...
求知若渴, 虛心若愚—Stay hungry,Stay foolish
※容器技術架構、網路和生態詳解
※HPC高性能計算知識:主要應用場景和軟體
TAG:架構師技術聯盟 |