[精華] RDMA技術原理分析、主流實現對比和解析
摘要: 遠端直接記憶體訪問(即Remote Direct Memory Access)是一種直接記憶體訪問技術,它將資料直接從一臺計算機的記憶體傳輸到另一臺計算機,無需雙方作業系統的介入,本文旨在技術引導,詳細內容請通過文末“閱讀原文”參閱<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原理分析、對比和技術實現解析>電子書,資料目錄如下。
本書涉及到大部分的內容已在本號推送過,但是內容有所增加且經過梳理,如果怕麻煩零散閱讀,那就通過原文連結支付少量費用獲取吧,也算是您對我們們公號持續運營的支援。
通票贈送進行中... ...
溫馨提示:
請搜尋“ICT_Architect”或“掃一掃”二維碼關注公眾號,點選原文連結獲取更多技術資料。
求知若渴, 虛心若愚—Stay hungry, Stay foolish
相關文章
- 技術原理:Python中range和xrange對比Python
- oracle同步軟體技術實現對比Oracle
- 主流移動端元件庫的對比和分析元件
- 基於 SmartX 分散式儲存的 RDMA 與 TCP/IP 技術與效能對比分散式TCP
- 單點登入原理與技術實現比較
- Oracle DUL的工作原理和技術實現Oracle
- ORACLE同步軟體技術實現對比(轉載)Oracle
- Android訊息推送技術原理分析和實踐Android
- 容器技術和虛擬機器技術的對比虛擬機
- Hyperledger Fabric和FISCO BCOS技術對比
- 技術實踐的主流方向
- Docker 核心技術與實現原理Docker
- 前端路由原理解析和實現前端路由
- 爬蟲的實現原理和技術進行講解爬蟲
- 滑鼠螢幕取詞技術的原理和實現 (轉)
- 單點登入的原理、實現、及技術方案比較詳解
- 快速理解容器技術的實現原理
- 個推技術實現原理介紹
- 針對新型程式注入技術Ctrl-Inject原理分析
- 萬字長文解析AI Agent技術原理和應用AI
- Rainbond 對接 Istio 原理講解和程式碼實現分析AI
- Oracle、NoSQL和NewSQL 資料庫技術對比OracleSQL資料庫
- redux, koa, express 中介軟體實現對比解析ReduxExpress
- 記憶體資料庫解析與主流產品對比(三)記憶體資料庫
- 資料儲存加密的主流方案對比與難點解析加密
- 記憶體資料庫解析與主流產品對比(二)記憶體資料庫
- 記憶體資料庫解析與主流產品對比(一)記憶體資料庫
- ?【Alibaba中介軟體技術系列】「Nacos技術專題」配置中心載入原理和配置實時更新原理分析(中)
- ?【Alibaba中介軟體技術系列】「Nacos技術專題」配置中心載入原理和配置實時更新原理分析(上)
- 我對C++中THUNK一種實現技術的分析 (轉)C++
- KOA2框架原理解析和實現框架
- VMware 信創替代合集 | 技術路線、廠商評估、技術分析與對比
- 將強化學習引入NLP:原理、技術和程式碼實現強化學習
- HTML程式碼混淆技術:原理、應用和實現方法詳解HTML
- Oracle、NoSQL和NewSQL 資料庫技術對比(一)OracleSQL資料庫
- MySQL Binlog 技術原理和業務應用案例分析MySql
- Elasticsearch 技術分析(九):Elasticsearch的使用和原理總結Elasticsearch
- ConcurrentHashMap 實現原理和原始碼分析HashMap原始碼