RDMA
遠程直接數據存取
RDMA是Remote Direct Memory Access的縮寫,意思是遠程直接數據存取,就是為了解決網路傳輸中伺服器端數據處理的延遲而產生的。
RDMA(Remote Direct Memory Access)技術全稱遠程直接數據存取,就是為了解決網路傳輸中伺服器端數據處理的延遲而產生的。它消除了外部存儲器複製和上下文切換的開銷,因而能解放內存帶寬和CPU周期用於改進應用系統性能。
傳統意義上的DMA
直接內存訪問(DMA) 方式,是一種完全由硬體執行I/O交換的工作方式。在這種方式中, DMA 控制器從CPU 完全接管對匯流排的控制,數據交換不經過CPU ,而直接在內存和IO設備之間進行.DMA工作時,由DMA 控制器向內存發出地址和控制信號,進行地址修改,對傳送字的個數計數,並且以中斷方式向CPU 報告傳送操作的結束。
使用DMA 方式的目的是減少大批量數據傳輸時CPU 的開銷。採用專用DMA 控制器(DMAC) 生成訪存地址並控制訪存過程。優點有操作均由硬體電路實現,傳輸速度快;CPU 基本不干預,僅在初始化和結束時參與, CPU 與外設并行工作,效率高。
普通網卡集成了支持硬體校驗和的功能,並對軟體進行了改進,從而減少了發送數據的拷貝量,但無法減少接收數據的拷貝量,而這部分拷貝量要佔用CPU 的大量計算周期。普通網卡的工作過程如下:先把收到的數據包緩存到系統上,數據包經過處理后,相應數據被分配到一個TCP 連接;然後,接收系統再把主動提供的TCP 數據同相應的應用程序聯繫起來,並將數據從系統緩衝區拷貝到目標存儲地址。這樣,制約網路速率的因素就出現了:應用通信強度不斷增加和主機CPU 在內核與應用存儲器間處理數據的任務繁重使系統要不斷追加主機CPU 資源,配置高效的軟體並增強系統負荷管理。問題的關鍵是要消除主機CPU 中不必要的頻繁數據傳輸,減少系統間的信息延遲。
RDMA 是通過網路把資料直接傳入計算機的存儲區,將數據從一個系統快速移動到遠程系統存儲器中,而不對操作系統造成任何影響,這樣就不需要用到多少計算機的處理功能。它消除了外部存儲器複製和文本交換操作,因而能騰出匯流排空間和CPU 周期用於改進應用系統性能. 通用的做法需由系統先對傳入的信息進行分析與標記,然後再存儲到正確的區域。整體結構如圖所示。
RDMA 的工作過程如下:
1)當一個應用執行RDMA 讀或寫請求時,不執行任何數據複製。在不需要任何內核內存參與的條件下, RDMA 請求從運行在用戶空間中的應用中發送到本地NIC( 網卡)。
2) NIC 讀取緩衝的內容,並通過網路傳送到遠程NIC。
3) 在網路上傳輸的RDMA 信息包含目標虛擬地址、內存鑰匙和數據本身。請求完成既可以完全在用戶空間中處理(通過輪詢用戶級完成排列) ,或者在應用一直睡眠到請求完成時的情況下通過內核內存處理.RDMA 操作使應用可以從一個遠程應用的內存中讀數據或向這個內存寫數據。
4) 目標NIC 確認內存鑰匙,直接將數據寫入應用緩存中。用於操作的遠程虛擬內存地址包含在RDMA 信息中。
• 3.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、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的四大優點基於標準的協議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)。