RDMA介紹
RDMA(Remote Direct Memory Access)技術全稱遠程直接數據存取,就是為了解決網路傳輸中伺服器端數據處理的延遲而產生的。RDMA通過網路把資料直接傳入計算機的存儲區,將數據從一個系統快速移動到遠程系統存儲器中,而不對作業系統造成任何影響,這樣就不需要用到多少計算機的處理功能。它消除了外部存儲器複製和上下文切換的開銷,因而能解放記憶體頻寬和CPU周期用於改進套用系統性能。
RDMA的理解
傳統意義上的DMA
直接記憶體訪問(
DMA) 方式,是一種完全由硬體執行I/O交換的工作方式.在這種方式中, DMA 控制器從CPU 完全接管對匯流排的控制,
數據交換不經過CPU ,而直接在記憶體和IO設備之間進行.DMA工作時,由DMA 控制器向記憶體發出地址和控制信號,進行地址修改,對傳送字的個數計數,並且以中斷方式向CPU 報告傳送操作的結束。
使用DMA 方式的目的是減少大批量數據傳輸時CPU 的開銷.採用專用DMA 控制器(DMAC) 生成訪存地址並控制訪存過程.優點有操作均由硬體電路實現,傳輸速度快;CPU 基本不干預,僅在初始化和結束時參與,
CPU 與外設並行工作,效率高。
RDMA工作原理
普通網卡集成了支持硬體校驗和的功能,並對軟體進行了改進,從而減少了傳送數據的拷貝量,但無法減少接收數據的拷貝量,而這部分拷貝量要占用CPU 的大量計算周期.普通網卡的工作過程如下:先把收到的數據包快取到系統上,數據包經過處理後,相應數據被分配到一個TCP 連線;然後,接收系統再把主動提供的TCP 數據同相應的應用程式聯繫起來,並將數據從系統緩衝區拷貝到目標存儲地址.這樣,制約網路速率的因素就出現了:套用通信強度不斷增加和主機CPU 在核心與套用存儲器間處理數據的任務繁重使系統要不斷追加主機CPU 資源,配置高效的軟體並增強系統負荷管理.問題的關鍵是要消除主機CPU 中不必要的頻繁數據傳輸,減少系統間的信息延遲。
RDMA 是通過網路把資料直接傳入計算機的存儲區,將數據從一個系統快速移動到遠程系統存儲器中,而不對作業系統造成任何影響,這樣就不需要用到多少計算機的處理功能.它消除了外部存儲器複製和文本交換操作,因而能騰出匯流排空間和CPU 周期用於改進套用系統性能. 通用的做法需由系統先對傳入的信息進行分析與標記,然後再存儲到正確的區域.整體結構如圖所示。
RDMA 的工作過程如下:
1)當一個套用執行RDMA 讀或寫請求時,不執行任何數據複製.在不需要任何核心記憶體參與的條件下, RDMA 請求從運行在用戶空間中的套用中傳送到本地NIC( 網卡)。
2) NIC 讀取緩衝的內容,並通過網路傳送到遠程NIC。
3) 在網路上傳輸的RDMA 信息包含目標虛擬地址、記憶體鑰匙和數據本身.請求完成既可以完全在用戶空間中處理(通過輪詢用戶級完成排列) ,或者在套用一直睡眠到請求完成時的情況下通過核心記憶體處理.RDMA 操作使套用可以從一個遠程套用的記憶體中讀數據或向這個記憶體寫數據。
4) 目標NIC 確認記憶體鑰匙,直接將數據寫入套用快取中.用於操作的遠程虛擬記憶體地址包含在RDMA 信息中。
零拷貝網路技術使NIC 可以直接與套用記憶體相互傳輸數據,從而消除了在套用記憶體與核心記憶體之間複製數據的需要.核心記憶體旁路使套用無需執行核心記憶體調用就可向NIC 傳送命令.在不需要任何核心記憶體參與的條件下, RDMA 請求從用戶空間傳送到本地NIC,並通過網路傳送給遠程NIC ,這就減少了在處理網路傳輸流時核心記憶體空間與用戶空間之間環境切換的次數.RDMA 中的零拷貝技術主要實現方法如圖所示。
在上圖中,右邊是傳統TCP/IP 協定以及普通網卡進行的通信操作過程.很明顯,當套用層想從網卡獲得數據報文時需要經過2 個緩衝區和正常TCPIIP 協定錢,其中由軟中斷負責從第一個接收佇列緩衝區讀取數據報文,再拷貝到MSGBuff 中,最後由套用層通過系統調用將數據報文讀到用戶態.而左邊則是利用RDMA來實現的零拷貝過程,規則如下:
1) RDMA 及其LLP( Lower Layer Protocol)可以在NIC 上實現(稱為RNIC)。
2) 在1)中所說的2 種實現都是經過以下步驟:將收發的數據快取到一個已經標記好的存儲空間中,然後根據LLP 和RDMA 雙方協商的規則直接將此存儲空間映射到套用空間,這樣就減少了傳統實現方法中的至少2次記憶體拷貝,即實現零拷貝.其中細線表示數據流動方向,其實標記快取就是通過RDMA 直接映射成為用戶快取空間的。
[編輯]
RDMA的構成
如上圖為RDMA 的構成,RDMA的實現由RDMA、DDP 、MPA3 種協定共間實現,構成了iWARP協定族,用來保證高速網路的互操作性。RDMA 層用於將RMDA 讀、寫及Send 操作訊息轉化成RDMA 訊息,並將RDMA 訊息傳送至DDP(Direct Data Placement)層,DDP應將RDMA訊息分段封裝成DDP 數據包轉發到下層Marker-based,Protocol-data-unit-Aligned (MPA)層, MPA 層將DDP 數據包插入標識符,長度及CRC 校驗,構成MPA 數據段。TCP 層負責對TCP 數據段進行調度,確保發包能夠順利到達目標位置。IP 層則在數據包中增加必要的網路路由數據信息。
[編輯]
數據操作方法
RDMA 協定為遠端直接數據快取提供7 種類型的控制操作.除了遠端緩衝區讀取操作之外,每一種RDMA 控制操作都只產生一個對應的RDMA 訊息。
1)Send: 傳送操作使用Send 訊息將傳送方套用的數據直接傳送到數據接收方套用尚未明確聲明的緩衝區中.故Send 訊息使用的是DDP 的無標記的緩衝區數據傳遞模型,將上層套用訊息傳遞到接收方套用的元標記佇列式緩衝區中。
2) Send with Invalidate: 在Send 基礎上,加了一個導航標記Stag. 當該訊息快取在Stag 所指定對端套用緩衝區中,並將訊息到達通知傳達給接收方套用後,接收方套用就再不允許傳送方套用介入該緩衝區,直到接收方套用重新聲明該緩衝區可用後才可以供傳送方套用繼續使用。
3) Send with Solicited Event (Send with SE): 該訊息用來將傳送方套用的數據直接傳送到數據接收方套用的無標記佇列式緩衝區中,具備Send 所有的功能同時增加對訊息的反饋。
4) Send with Solicited Event and Invalidate (Send with SE and Invalidate): 該訊息所對應的操作是將傳送方套用的數據直接傳送到數據接收方套用尚未明確聲明的緩衝區中,具備Send with SE 所有的功能同時增加對訊息的反饋。
5) Remote Direct Memory Access W出e: 對應於RDMA 寫操作,用來將傳送方套用的數據傳遞到接收方套用已聲明的緩衝區中.在這個操作中,接收方套用事先應該己經分配出帶標記的套用接收緩衝區,並允許傳送方套用直接進行緩衝區寫操作.同時,傳送方套用還在聲明中得到了上述緩衝區的位置、大小和相應的Stag 等信息.之後傳送方套用開始發起RDMA 寫操作,該操作使用DDP 的帶標記的緩衝區數據傳遞模型,將傳送方套用的訊息直接傳遞到接收方套用所聲明的帶標記緩衝區中。
6) Remote Direct Memory Access Read: 對應於RDMA 讀操作,將對端(對應於數據源)帶標記套用緩衝區的數據傳遞到本地(對應於數據接收方)的帶標記套用緩衝區.數據源的上層套用首先需要事先分配出帶標記的套用緩衝區,並允許對該緩衝區內容直接進行讀操作.同時,數據源上層套用還要將待聲明的數據源緩衝區的位置、大小和相應的Stag 等信息傳遞到本地上層套用.數據接收方上層套用在得到上述聲明後,分配相應的帶標記套用緩衝區,開始從對端讀取數據操作。
7) Terminate: 終止操作使用Terminate 訊息將本地發生的錯誤信息通知給對端套用,以終止當前數據直接快取操作.終止操作使用DDP 的元標記緩衝區模型將Terminate 傳遞到對端的無標記緩衝區。
[編輯]
套用
RDMA 的套用
RDMA 的優勢在於,可利用傳統的網路硬體,以TCP/IP 及乙太網絡標準來建立
網際網路。RDMA 將被用來把小型伺服器連線為一個群集;可以處理現今一些十幾顆處理器的高端伺服器才能夠處理的大型資料庫。如果把RDMA 、TOE 以及10GB 乙太網絡放在一起,這是個相當吸引人的技術。RDMA 正在迅速成為高速集群和伺服器區域網的一種基本特性。InfiniBand網路和實現虛擬接口架構的網路支持RDMA; 套用於帶傳輸卸載引擎網卡的RDMA over TCP/IP 正在開發之中;採用RDMA 來獲取高性能的協定,包括Sockets Direct Protocol、 SRP(SCSI RDMA Protocol) 和DAFS(Direct Access File System);採用RDMA 的通信庫,包括DAPL(Direct Access Provider Library) 、MPI(Message Passing Interface)和VIPL(Virtual Interface Provider Library)。運行分散式應用程式的集群是RDMA 能夠大顯身手的領域之一;通過DAPL 或VIPL以及集群上運行的資料庫軟體來使用RDMA ,可在相同的節點數目下獲得更高的性能和更好的延展性。使用MPI的集群科技運算應用程式,通過支持互連RDMA 實現了低延遲時間低開銷和高吞吐量,這一結果也使它獲得了巨大的性能提升其他初期的RDMA 套用;還有通過DAFS 的遠程檔案伺服器訪問、通過SRP 的存儲設備訪問RDMA 技術正在迅速成為高速集群系統和存儲域網路的基本特徵技術,其中i W A R P /R D M A 是一類基本構造塊;此外還有iSER,它是用於RDMA 的iSCSI 擴展,充分利用了RDMA 的功能。RDMA 的其他早期套用包括通過DAFS的遠程檔案伺服器訪問和通過SRP 的刀片伺服器存儲訪問。RDMA 正在迅速成為高速集群和伺服器區域網的一種基本特性。
NAS 和SAN 中的套用
傳統的直接連線存儲DAS DirectAccess Storage 是以伺服器為中心的存儲結構這一存儲體系結構存在容量限制連線距離有限不易於共享和管理等不可克服的缺點已經不能夠滿足網路時代的套用需求網路時代的到來使存儲技術發生了巨大變化
網路附加存儲N A SNetwork Attatched Storage
存儲區域網路S A N(Storage Area Network)既能為網路上的套用系統提供豐富快速簡便的存儲資源又能共享存儲資源並對其實施
集中管理成為當今理想的存儲管理和套用模式NAS結構存在一些難以解決的問題如傳輸能力有限可擴展性有限數據備份能力有限並且不能對資料庫服務提供有效的支持DAFS 把RDMA 的優點和N A S的存儲能力集成在一起全部讀寫操作都直接通過RDMA 驅動器執行從而降低了網路檔案協定所帶來的系統負載今後的NAS 存儲系統將採用DAFS 技術提高系統性能並且在性能和價格上與SAN 存儲系統進行有力的競爭。
Infiniband
Infiniband的四大優點基於標準的協定10 GB/s 性能RDMA 和傳輸卸載優勢在於R D M A 傳輸卸載高速度InfiniBand網路和採用虛擬接口架構的網路支持RDMA 使用具有傳輸卸載引擎的NIC 的RDMA over TCP/IP 支持Infiniband的伺服器使用主機通道適配器HCA 把協定轉換到伺服器內部的PCI-X 或者PCI-Xpress 匯流排H C A 具有R D M A 功能有時也稱之為核心旁路(Kernel Bypass)。