1. 程式人生 > >InfiniBand技術和協議架構分析

InfiniBand技術和協議架構分析

from protoc range iat 指定 org atp 智能 ipv6地址

Infiniband開放標準技術簡化並加速了服務器之間的連接,同時支持服務器與遠程存儲和網絡設備的連接。

IB技術的發展

1999年開始起草規格及標準規範,2000年正式發表,但發展速度不及Rapid I/O、PCI-X、PCI-E和FC,加上Ethernet從1Gbps進展至10Gbps。所以直到2005年之後,InfiniBand Architecture(IBA)才在集群式超級計算機上廣泛應用。全球Top 500大效能的超級計算機中有相當多套系統都使用上IBA。

技術分享

隨著越來越多的大廠商正在加入或者重返到它的陣營中來,包括Cisco、IBM、HP、Sun、NEC、Intel、LSI等。InfiniBand已經成為目前主流的高性能計算機互連技術之一。為了滿足HPC、企業數據中心和雲計算環境中的高I/O吞吐需求,新一代高速率56Gbps的FDR (Fourteen Data Rate) 和EDR InfiniBand技術已經出現。

IB技術的優勢

Infiniband大量用於FC/IP SAN、NAS和服務器之間的連接,作為iSCSI RDMA的存儲協議iSER已被IETF標準化。目前EMC全系產品已經切換到Infiniband組網,IBM/TMS的FlashSystem系列,IBM的存儲系統XIV Gen3,DDN的SFA系列都采用Infiniband網絡。

相比FC的優勢主要體現在性能是FC的3.5倍,Infiniband交換機的延遲是FC交換機的1/10,支持SAN和NAS。

存儲系統已不能滿足於傳統的FC SAN所提供的服務器與裸存儲的網絡連接架構。HP SFS和IBM GPFS 是在Infiniband fabric連接起來的服務器和iSER Infiniband存儲構建的並行文件系統,完全突破系統的性能瓶頸。

Infiniband采用PCI串行高速帶寬鏈接,從SDR、DDR、QDR、FDR到EDR HCA連接,可以做到1微妙、甚至納米級別極低的時延,基於鏈路層的流控機制實現先進的擁塞控制。

InfiniBand采用虛通道(VL即Virtual Lanes)方式來實現QoS,虛通道是一些共享一條物理鏈接的相互分立的邏輯通信鏈路,每條物理鏈接可支持多達15條的標準虛通道和一條管理通道(VL15)。

技術分享

RDMA技術實現內核旁路,可以提供遠程節點間RDMA讀寫訪問,完全卸載CPU工作負載,基於硬件傳出協議實現可靠傳輸和更高性能。

技術分享

相比TCP/IP網絡協議,IB使用基於信任的、流控制的機制來確保連接的完整性,數據包極少丟失,接受方在數據傳輸完畢之後,返回信號來標示緩存空間的可用性,所以IB協議消除了由於原數據包丟失而帶來的重發延遲,從而提升了效率和整體性能。

TCP/IP具有轉發損失的數據包的能力,但是由於要不斷地確認與重發,基於這些協議的通信也會因此變慢,極大地影響了性能。

IB基本概念

IB是以通道為基礎的雙向、串行式傳輸,在連接拓樸中是采用交換、切換式結構(Switched Fabric),在線路不夠長時可用IBA中繼器(Repeater)進行延伸。每一個IBA網絡稱為子網(Subnet),每個子網內最高可有65,536個節點(Node),IBA Switch、IBARepeater僅適用於Subnet範疇,若要通跨多個IBASubnet就需要用到IBA路由器(Router)或IBA網關器(Gateway)。

每個節點(Node) 必須透過配接器(Adapter)與IBA Subnet連接,節點CPU、內存要透過HCA(Host Channel Adapter)連接到子網;節點硬盤、I/O則要透過TCA(TargetChannel Adapter)連接到子網,這樣的一個拓撲結構就構成了一個完整的IBA。

IB的傳輸方式和介質相當靈活,在設備機內可用印刷電路板的銅質線箔傳遞(Backplane背板),在機外可用銅質纜線或支持更遠光纖介質。若用銅箔、銅纜最遠可至17m,而光纖則可至10km,同時IBA也支持熱插拔,及具有自動偵測、自我調適的Active Cable活化智能性連接機制。

IB協議簡介

InfiniBand也是一種分層協議(類似TCP/IP協議),每層負責不同的功能,下層為上層服務,不同層次相互獨立。 IB采用IPv6的報頭格式。其數據包報頭包括本地路由標識符LRH,全局路由標示符GRH,基本傳輸標識符BTH等。

技術分享

1、物理層

物理層定義了電氣特性和機械特性,包括光纖和銅媒介的電纜和插座、底板連接器、熱交換特性等。定義了背板、電纜、光纜三種物理端口。

並定義了用於形成幀的符號(包的開始和結束)、數據符號(DataSymbols)、和數據包直接的填充(Idles)。詳細說明了構建有效包的信令協議,如碼元編碼、成幀標誌排列、開始和結束定界符間的無效或非數據符號、非奇偶性錯誤、同步方法等。

2、 鏈路層

鏈路層描述了數據包的格式和數據包操作的協議,如流量控制和子網內數據包的路由。鏈路層有鏈路管理數據包和數據包兩種類型的數據包。

3、 網絡層

網絡層是子網間轉發數據包的協議,類似於IP網絡中的網絡層。實現子網間的數據路由,數據在子網內傳輸時不需網絡層的參與。

數據包中包含全局路由頭GRH,用於子網間數據包路由轉發。全局路由頭部指明了使用IPv6地址格式的全局標識符(GID)的源端口和目的端口,路由器基於GRH進行數據包轉發。GRH采用IPv6報頭格式。GID由每個子網唯一的子網 標示符和端口GUID捆綁而成。

4、 傳輸層

傳輸層負責報文的分發、通道多路復用、基本傳輸服務和處理報文分段的發送、接收和重組。傳輸層的功能是將數據包傳送到各個指定的隊列(QP)中,並指示隊列如何處理該數據包。當消息的數據路徑負載大於路徑的最大傳輸單元(MTU)時,傳輸層負責將消息分割成多個數據包。

接收端的隊列負責將數據重組到指定的數據緩沖區中。除了原始數據報外,所有的數據包都包含BTH,BTH指定目的隊列並指明操作類型、數據包序列號和分區信息。

5、上層協議

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)來提高數據中心應用程序數據消息傳送性能、伸縮性和可靠性。

IB應用場景

Infiniband靈活支持直連及交換機多種組網方式,主要用於HPC高性能計算場景,大型數據中心高性能存儲等場景,HPC應用的共同訴求是低時延(<10微秒)、低CPU占有率(<10%)和高帶寬(主流56或100Gbps)

技術分享

一方面Infiniband在主機側采用RDMA技術釋放CPU負載,可以把主機內數據處理的時延從幾十微秒降低到1微秒;另一方面InfiniBand網絡的高帶寬(40G、56G和100G)、低時延(幾百納秒)和無丟包特性吸取了FC網絡的可靠性和以太網的靈活擴展能力。

這兩天了解了一些 parallel file system 比如 PVFS2/OrangeFS, Lustre,它們都聲稱支持 InfiniBand 網絡連接技術,好奇之下查了下,發現這個技術規範很牛逼,另外也因此知道了 RDMA 技術,指不通過 OS 內核以及 TCP/IP 協議棧在網絡上傳輸數據,因此延遲非常低,CPU 消耗非常少。

兩篇講述 InfiniBand 的趣文:

  • 關於Infiniband的一些介紹 http://aze12.blog.163.com/blog/static/8620441220086411596665/
  • InfiniBand:還會有多少人想起我?http://www.360doc.com/content/07/0904/16/494_718778.shtml

看起來 InfiniBand, FibreChannel, 10Gbps Ethernet 競爭的硝煙還有一陣日子可看。

RDMA 技術有好幾種規範來達到:

  • InfiniBand: 這是正統,InfiniBand 設計之初就考慮了 RDMA,InfiniBand 從硬件級別保證可靠傳輸;
  • iWARP: 基於 TCP or SCTP 做 RDMA,利用 TCP or SCTP 達到可靠傳輸,對網絡設備的要求比較少;
  • RoCE: 基於 Ethernet 做 RDMA,消耗的資源比 iWARP 少,支持的特性比 iWARP 多,需要FCoE做可靠傳輸。從wikipedia的評價看 RoCE 還是比正統的 InfiniBand 差點。

上面三種實現都是需要硬件支持的,IB 需要支持 IB 規範的網卡和交換機,iWARP 和 RoCE 都可以使用普通的以太網交換機,但是需要支持 iWARP 或者 RoCE 的網卡。軟件上 Solaris、Linux、Windows 都有支持,在 API 層面這篇文章有個入門的介紹:Introduction to Remote Direct Memory Access (RDMA) ,可以使用 http://www.openfabrics.org/ 提供的 libibverbs 庫(Debian Linux 有提供),這個庫似乎也支持 Windows 上的原聲 RDMA API "Network Direct"。另外也有一些其它 API 規範,比如 DAT 組織制定的 kDAPL(讓 kernel driver 可以訪問 RDMA 功能) 和 uDAPL(讓 user space 進程可以訪問 RDMA 功能), OpenGroup 制定的 IT-API 和 RNICPI:

  • https://software.intel.com/en-us/articles/access-to-infiniband-from-linux
  • http://www.zurich.ibm.com/sys/rdma/interfaces.html
  • http://rdma.sourceforge.net/

另外 IETF 制定了 iSCSI Extensions for RDMA(iSER) 和 SDP(Sockets Direct Protocol, 基於 RDMA 替換 TCP 的流式傳輸層協議, RDMA 本身提供了可靠傳輸機制) 兩個協議。Java 7 引入了對 SDP 的支持: https://docs.oracle.com/javase/tutorial/sdp/sockets/index.html,Apache Qpid 消息隊列也支持 RDMA:https://packages.debian.org/sid/librdmawrap2 .

InfiniBand技術和協議架構分析