RDMA的3種Queue Pair型別

2021-10-03 06:25:14 字數 2205 閱讀 4609

在編寫rdma應用程式時(就像在套接字上編寫應用程式時一樣),應該決定使用哪種qp型別。

在這篇文章中,我將詳細描述每種傳輸型別的特徵。

在rdma中,有三種qp型別。它們可以表示為: xy

x可以是:

可靠的(reliable): 有乙個保證,即訊息最多被傳遞一次,有順序,沒有損壞。

不可靠(unreliable): 不能保證訊息將被傳遞,也不能保證包的順序。

在rdma中,每個包都有乙個crc,被破壞的包被丟棄(對於任何傳輸型別)。qp傳輸型別的可靠性是指整個訊息的可靠性。

y可以是:

連線(connected): 乙個qp只與乙個qp 發生send/receive操作

無連線(unconnected):乙個qp可與任意個qp發生send/receive操作

在rdma中使用了以下機制:

* crc: crc欄位,用於驗證包是否沿路徑損壞。

* psn: 資料報序列號確保訂單接收到資料報。這有助於檢測丟失的包和包複製。

* ack: (僅在可靠的連線(rc)中)只有在應答方成功寫入訊息後,才會將ack包傳送回請求方。如果請求者沒有接收到ack,它將根據qp的屬性重新傳送訊息。如果qp中沒有任何ack(或nack),它將報告有乙個錯誤(重試超出)。如果在響應端(保護、資源等)有任何型別的錯誤,乙個ack將被傳送到請求者,它將報告有乙個錯誤。

reliable connected(rc) qp

乙個rc qp被可靠地連線到乙個rc qp上(即傳送和接收訊息)。可以保證訊息從請求者最多一次傳遞到響應者,且順序正確且沒有損壞。支援的最大訊息大小為2gb(這個值可能更低,取決於支援的rdma裝置屬性)。rc qp支援send操作(w/o immediate)、rdma writ操作(w/o immediate)、rdma read操作和atomic操作(取決於原子操作中的rdma裝置支援級別)。

如果訊息大小大於mtu,則它在傳送資料的端被分割,在接收端被重新組裝。

請求者一旦接收到來自響應方將訊息讀/寫進記憶體的ack,就認為訊息傳遞完成了。

接收端在訊息被讀/寫其(本地)記憶體後,認為乙個訊息操作完成。

unreliable connected(uc) qp

乙個uc qp正在以不可靠的方式連線到乙個uc qp上(即傳送和接收訊息)。不能保證訊息將被另一方接收:損壞的或序列不一致的包將被丟棄。如果乙個資訊包被丟棄,那麼它所屬的整個訊息都將被丟棄。在這種情況下,接收端不會停止,而是繼續接收傳入的資料報。包的順序沒有任何保證。支援的最大訊息大小為2gb(這個值可能更低,取決於支援的rdma裝置屬性)。rc qp支援send操作(w/o即時)和rdma write操作(w/o即時)。

如果訊息大小大於mtu,則它在傳送資料的端被分割,在接收端被重新組裝。

請求者認為,在將所有訊息傳送到鏈路之後,訊息操作就完成了。

接收端在訊息被讀/寫其(本地)記憶體後,認為乙個訊息操作完成。

unreliable datagram(ud) qp

乙個qp可以不可靠地以單播(一對一)或多播(一對多)的方式向任何其他ud qp傳送和接收訊息。不能保證訊息將被另一方接收:損壞的或順序不一致的包將被丟棄。包的順序沒有任何保證。支援的最大訊息大小是最大mtu。ud qp只支援send操作。

請求者認為,在將所有訊息傳送到鏈路之後,訊息操作就完成了。

接收端在訊息被讀/寫其(本地)記憶體後,認為乙個訊息操作完成。

選擇正確的qp型別對於應用的正確性(correction)和可拓展性(scalability)至關重要。

在下列情況下,應選擇rc qp:

網路的可靠性是需要的

網路頻寬不高或集群很大,但並非所有節點都向同一節點傳送流量(乙個受害者)

rc qp的幾種用途是:rdma上的ftp或rdma上的檔案系統。

在下列情況下,應選擇ud qp:

不需要網路保證可靠性(例如,可靠性根本不重要,或者由應用程式處理)

網路頻寬很高,所有節點和每個節點都向網路中的任何其他節點傳送訊息。ud是解決可拓展性問題的最佳解決方案之一。

需要多播訊息

ud qp的乙個用途是:通過rdma語音。

RDMA程式設計的基本流程

通常情況下,乙個rdma通訊程式的編寫由以下幾個步驟組成 1 得到裝置清單,清單上的每乙個裝置都要有乙個名字和乙個全球唯一識別符號 globally unique identifier,簡稱guid 具體參見2.3.2中devices functions 2 根據名字或者guid開啟指定裝置,返回i...

個人總結的RDMA網路原理

一 基本知識 rdma remote direct memory access 技術全稱遠端直接記憶體訪問,就是為了解決網路傳輸中客戶端與伺服器端資料處理的延遲而產生的。它將資料直接從一台計算機的記憶體傳輸到另一台計算機,無需雙方作業系統的介入。這允許高吞吐 低延遲的網路通訊,尤其適合在大規模並行計...

new的3種用法

總結c 中三種關於 new 的使用方法 雖然有三種new的用法,但是分為兩大類也未嘗不可,那麼是哪兩類呢?其一是new operator,也叫new表示式 其二是operator new,也叫new操作符。這兩個英文名稱起的也太絕了,很容易搞混,那就記中文名稱吧。new表示式比較常見,也最常用,例如...