Intel Omni-Path Architecture (OPA) 是一種與InfiniBand相似的網絡架構
可以用來避免以下PCI總線一些缺陷:
1、由於采用了基於總線的共享傳輸模式,在PCI總線上不可能同時傳送兩組以上的數據,當一個PCI設備占用總線時,其他設備只能等待;
2、隨着總線頻率從33MHz提高到66MHz,甚至133MHz(PCI-X),信號線之間的相互干擾變得越來越嚴重,在一塊主板上布設多條總線的難度也就越來越大;
3、由於PCI設備采用了內存映射I/O地址的方式建立與內存的聯系,熱添加PCI設備變成了一件非常困難的工作。目前的做法是在內存中為每一個PCI設備划出一塊50M到100M的區域,這段空間用戶是不能使用的,因此如果一塊主板上支持的熱插拔PCI接口越多,用戶損失的內存就越多;
4、PCI的總線上雖然有buffer作為數據的緩沖區,但是它不具備糾錯的功能,如果在傳輸的過程中發生了數據丟失或損壞的情況,控制器只能觸發一個NMI中斷通知操作系統在PCI總線上發生了錯誤;
首先來看Infiniband的協議層次與網絡結構
Infiniband的協議采用分層結構,各個層次之間相互獨立,下層為上層提供服務。其中,物理層定義了在線路上如何將比特信號組 成符號,然后再組成幀、 數據符號以及包之間的數據填 充等,詳細說明了構建有效包的信令協議等;鏈路層定義了數據包的格式以及數據包操作的協議,如流控、 路由選擇、 編碼、解碼等;網絡層通過在數據包上添加一個40字節的全局的路由報頭(Global Route Header,GRH)來進行路由的選擇,對數據進行轉發。在轉發的過程中,路由 器僅僅進行可變的CRC校驗,這樣就保證了端到端的數據傳輸的完整性;傳輸層再將數據包傳送到某個指定 的隊列偶(QueuePair,QP)中,並指示QP如何處理該數據 包以及當信息的數據凈核部分大於通道的最大傳輸單 元MTU時,對數據進行分段和重組。
Omni-Path Network Layers
Layer 1 – Physical Layer
Leverages existing Ethernet and InfiniBand PHY standards
Layer 1.5 – Link Transfer Protocol
Provides reliable delivery of Layer 2 packets, flow control and link control across a single link
Layer 2 – Data Link Layer
Provides fabric addressing, switching, resource allocation and partitioning
support
Layers 4-7 – Transport to Application Layers
Provide interfaces between software libraries and HFIs
Leverages Open Fabrics as the fundamental software infrastructure
網絡拓撲結構
Infiniband的網絡拓撲結構如圖,其組成單元主要分為四類:
(1)HCA(Host Channel Adapter),它是連接內存控制器和TCA的橋梁;
(2)TCA(Target Channel Adapter),它將I/O設備(例如網卡、SCSI控制器)的數字信號打包發送給HCA;
(3)Infiniband link,它是連接HCA和TCA的光纖,InfiniBand架構允許硬件廠家以1條、4條、12條光纖3種方式連結TCA和HCA;
(4)交換機和路由器;
無論是HCA還是TCA,其實質都是一個主機適配器,它是一個具備一定保護功能的可編程DMA(Direct Memory Access,直接內存存取 )引擎
OPA組件
Omni-Path主要有以下3部分組件:
HFI – Host Fabric Interface 提供主機,服務和管理節點的光纖連接
Switches 提供大規模的節點之間的任意拓撲連接
Fabric Manager 提供集中化的對光纖資源的provisioning 和監控
相比InfiniBand ,Intel Omni-Path Architecture 架構設計目標特性:
1. 通過CPU/Fabric integration 來提高cost, power, and density
2. Host主機端的優化實現來高速的MPI消息,低延遲的高擴展性的架構
3. Enhanced Fabric Architecture 來提供超低的端到端延遲,高效的糾錯和增強的QoS,並且超高的擴展性
RDMA
RDMA技術,最大的突破是將網絡層和傳輸層放到了硬件中,服務器的網卡上來實現,數據報文進入網卡后,在網卡硬件上就完成四層解析,直接上送到應用層軟件,四層解析CPU無需干預
RDMA技術的全稱叫做Remote Direct Memory Access,即遠程直接數據存取,就是為解決網絡傳輸中服務器端數據處理的延遲而產生的。RDMA通過網卡將數據直接傳入服務器的存儲區,不對操作系統造成任何影響,消除了外部存儲器復制和文本交換操作,解放內存帶寬和CPU資源。當一個應用執行RDMA讀或寫請求時,不執行任何數據復制。
在不需要任何內核內存參與的條件下,RDMA請求從運行在用戶空間中的應用中發送到本地網卡,然后經過網絡傳送到遠程服務器網卡。RDMA最早專屬於Infiniband架構,隨着在網絡融合大趨勢下出現了RoCE(RDMA over Converged Ethernet)和iWARP(RDMA over TCP/IP) ,這使高速、超低延時、極低CPU使用率的RDMA得以部署在目前使用最廣泛的數據中心網絡上。
具體來說, RDMA 技術特性帶來的好處如下圖所示:
NVMe 設備延遲很低,這就要求網絡延遲也必須很低, RDMA 正好滿足這一點。
以一個 NVMe 寫操作為例。 NVMe 主機驅動把寫命令及數據(從 NVMe 提交隊列取出一項)封裝一個與底層傳輸無關的命令膠囊(capsule);膠囊被放到主機 RDMA 網卡的發送隊列中,由 RDMA_SEND 發送出去;目標主機的 RDMA 網卡在接收隊列中收到這個膠囊,解除封裝,把 NVMe 命令及數據放到目標主機的內存中;目標主機處理 NVMe 命令及數據;完成后,目標主機封裝一個 NVMe 命令完成項,由 RDMA 傳輸到源主機。
三、兩種基於以太網的 RDMA 協議
第一種:以太網->IP->UDP->RoCE (RDMA over Converged Ethernet) v2
第二種:以太網->IP->TCP(去掉 TCP/IP 流量控制和管理)->iWARP
InfiniBand 與RoCE and iWARP同列
InfiniBand采用Cut-Through轉發模式,減少轉發時延,基於Credit流控機制,保證無丟包。RoCE性能與IB網絡相當,DCB特性保證無丟包,需要網絡支持DCB特性,但時延比IB交換機時延稍高一些。iWARP則是利用成熟IP網絡,繼承RDMA優點,但如果采用傳統IP網絡丟包對性能影響大。
iWARP技術的主要問題在於穩定性,一旦網絡有丟包,性能會奇差,而iWARP就是基於以太網協議實現的,以太網協議不可能沒有丟包,這使得iWARP技術沒有了應用空間。
IB性能最好,RoCE則用得最多,RoCE是伴隨着RDMA技術才普及起來的,相比於IB技術,RoCE技術仍基於以太網實現,但是增加了丟包控制機制,確保以太網處於一個無丟包的狀態,雖然延時比IB差些,但部署成本要低得多。
解析RDMA over TCP(iWARP)協議棧和工作原理
具備RNIC(RDMA-aware network interface controller)網卡的設備,不論是目標設備還是源設備的主機處理器都不會涉及到數據傳輸操作,RNIC網卡負責產生RDMA數據包和接收輸入的RDMA數據包,從而消除傳統操作中多余的內存復制操作。
RDMA協議提供以下4種數據傳輸操作(RDMA Send操作、RDMA Write操作、RDMA Read操作和Terminate操作),除了RDMA讀操作不會產生RDMA消息,其他操作都會產生一條RDMA消息
以太網憑借其低投入、后向兼容、易升級、低運營成本優勢在目前網絡互連領域內占據統治地位,目前主流以太網速率是100 Mb/s和1000 Mb/s,下一代以太網速率將會升級到10Gb/s。將RDMA特性增加到以太網中,將會降低主機處理器利用率,增加以太網升級到10 Gb/s的優點,消除由於升級到10 Gb/s而引入巨大開銷的弊端,允許數據中心在不影響整體性能的前提下拓展機構,為未來擴展需求提供足夠的靈活性。
圖4.2 RDMA over TCP (Ethernet)協議棧
圖4.2是RDMA over TCP (Ethernet)的協議棧,最上面三層構成iWARP協議族,用來保證高速網絡的互操作性。
RDMA層協議負責根據RDMA寫操作、RDMA讀操作轉換成RDMA消息,並將RDMA消息傳向Direct Data Placement (DDP)層。
DDP層協議負責將過長的RDMA消息分段封裝成DDP數據包繼續向下轉發到Marker-based, Protocol-data-unit-Aligned (MPA)層。
MPA層在DDP數據段的固定間隔位置增加一個后向標志、長度以及CRC校驗數據,構成MPA數據段。
TCP層負責對TCP數據段進行調度,確保發包能夠順利到達目標位置
IP層則在數據包中增加必要的網絡路由數據信息。
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的參與。
IB、以太網RoCE、以太網iWARP這三種RDMA技術使用統一的API
上層協議
InfiniBand為不同類型的用戶提供了不同的上層協議,並為某些管理功能定義了消息和協議。InfiniBand主要支持SDP、SRP、iSER、RDS、IPoIB和uDAPL等上層協議。
- SDP(SocketsDirect Protocol)是InfiniBand Trade Association (IBTA)制定的基於infiniband的一種協議,它允許用戶已有的使用TCP/IP協議的程序運行在高速的infiniband之上。
- SRP(SCSIRDMA Protocol)是InfiniBand中的一種通信協議,在InfiniBand中將SCSI命令進行打包,允許SCSI命令通過RDMA(遠程直接內存訪問)在不同的系統之間進行通信,實現存儲設備共享和RDMA通信服務。
- iSER(iSCSIRDMA Protocol)類似於SRP(SCSI RDMA protocol)協議,是IB SAN的一種協議 ,其主要作用是把iSCSI協議的命令和數據通過RDMA的方式跑到例如Infiniband這種網絡上,作為iSCSI RDMA的存儲協議iSER已被IETF所標准化。
- RDS(ReliableDatagram Sockets)協議與UDP 類似,設計用於在Infiniband 上使用套接字來發送和接收數據。實際是由Oracle公司研發的運行在infiniband之上,直接基於IPC的協議。
- IPoIB(IP-over-IB)是為了實現INFINIBAND網絡與TCP/IP網絡兼容而制定的協議,基於TCP/IP協議,對於用戶應用程序是透明的,並且可以提供更大的帶寬,也就是原先使用TCP/IP協議棧的應用不需要任何修改就能使用IPoIB。
- uDAPL(UserDirect Access Programming Library)用戶直接訪問編程庫是標准的API,通過遠程直接內存訪問 RDMA功能的互連(如InfiniBand)來提高數據中心應用程序數據消息傳送性能、伸縮性和可靠性。
其中IPoIB
The role of IPoIB is to provide an IP
network emulation layer on top of InfiniBand RDMA networks.
Because both iWARP and RoCE/IBoE networks are actually IP
networks with RDMA layered on top of their IP
link layer, they have no need of IPoIB. As a result, the kernel will refuse to create any IPoIB devices on top of iWARP or RoCE/IBoE RDMA devices.
IPoIB Limitations
IPoIB solves many problems for us. However, compared to a standard Ethernet network interface, it has some limitations:
- IPoIB supports IP-based application only (since the Ethernet header isn't encapsulated).
- SM/SA must always be available in order for IPoIB to function.
- The MAC address of an IPoIB network interface is 20 bytes.
- The MAC address of the network interface can't be controlled by the user.
- The MAC address of the IPoIB network interface may change in consecutive loading of the IPoIB module and it isn't persistent (i.e. a constant attribute of the interface).
- Configuring VLANs in an IPoIB network interface requires awareness of the SM to the corresponding P_Keys.
Non-standard interface for managing VLANs.
參考:
http://www.rdmamojo.com/2015/02/16/ip-infiniband-ipoib-architecture/
http://www.rdmamojo.com/2015/04/21/working-with-ipoib/
https://weibo.com/p/1001603936363903889917