Infiniband架构和技术实战(第二版)已经更新完成,主要更新内容包括InfiniBand架构、安装、Socket Direct技术等,购买过InfiniBand架构和技术实战架构师技术资料全店打包(全)的读者,可通过在微店留言,提供历史购买记录免费获取新版本。


传统的TCP/IP协议的多层次结构使得复杂的缓冲管理带来很大的网络延迟和操作系统的额外开销,随着网络技术的发展,网络需要一种开放、高带宽、低延迟、高可靠以及满足集群无限扩展能力的以交换为核心的体系架构,在这种技术背景下,InfiniBand(简称IB)应运而生。


根据IB高带宽、低延时、高可靠以及满足集群无限扩展能力的特点,IB主要定位于存储网络和计算网络的应用。IB使用RDMA(Remote Direct Memory Access远程直接内存存取)技术,通过一个虚拟的寻址方案,让服务器知道和使用其他服务器的部分内存,无需操作系统的内核干预,既直接继承了总线的高带宽和低时延,又降低了CPU的处理负担,这对于像存储这样的集群来说很合适。

 

InfiniBand技术特点


相比网络协议(如TCP/IP),IB具有更高的传输效率。原因在于许多网络协议具有转发损失的数据包的能力,但是由于要不断地确认与重发,基于这些协议的通信也会因此变慢,极大地影响了性能。


需要说明的是,TCP协议是一种被大量使用的传输协议,从冰箱到超级计算机等各种设备上都可以看到它的身影,但是使用它必须付出高昂的代价:TCP协议极其复杂、代码量巨大并且充满了各种特例,而且它比较难卸载。


与之相比,IB使用基于信任的、流控制的机制来确保连接的完整性,数据包极少丢失。使用IB,除非确认接收缓存具备足够的空间,否则不会传送数据。接受方在数据传输完毕之后,返回信号来标识缓存空间的可用性。通过这种办法,IB消除了由于原数据包丢失而带来的重发延迟,从而提升了效率和整体性能。

 

InfiniBand体系架构


InfiniBand是一种网络通信协议,能为网络中的计算、存储等节点间提供高带宽、低时延的可靠传输。InfiniBand与传统的TCP/IP网络最大的区别就在于前者以进行通信的应用为中心,而后者以网络中的设备节点为中心。这一点是通过RDMA技术实现的。


​Infiniband架构和技术实战(第二版)_java


数据的传输任务直接交给InfiniBand设备完成,无需经过网络节点操作系统的转发(Kernel Bypass)。这一方面提升了数据的传输效率,另一方面提高了CPU的利用率CPU (offload)。InfiniBand也是一个分层协议,覆盖了OSI网络模型的1~4层。


1、物理层(Physical Layer)


InfiniBand使用串行数据流进行数据传输,但目前实际的IB设备中通常包括4条链路,其传输速率为:

 

​Infiniband架构和技术实战(第二版)_java_02


2、链路层(Link Layer)


InfiniBand链路层使用Credit Based Flow Control,即发送数据包之前,发送方和接收方需要协商数据量credit,接收方保证有足够的Buffer,之后传输才能进行。


​Infiniband架构和技术实战(第二版)_java_03

 

InfiniBand链路层支持QoS,通过VL(Virtual Lanes)实现。每条物理链路最多支持15条标准VL(VL0-14)和1条管理VL(VL15),VL15只用来传输管理包,如上文提到的credit协商。通过SL(Server Level)可以定义VL的优先级,从而实现QoS。

 

3、网络层(Network Layer)


InfiniBand网络层处理跨Subnet的数据传输,通过在Global Route Header(GRH)中保存的128位IPv6地址识别。

 

4、传输层(Transport Layer)


传输层负责报文的分发、通道多路复用、基本传输服务和处理报文分段的发送、接收和重组。传输层的功能是将数据包传送到各个指定的队列(QP)中,并指示队列如何处理该数据包。当消息的数据路径负载大于路径的最大传输单元(MTU)时,传输层负责将消息分割成多个数据包。


负责分发报文到期望的目的端,并负责对超过MTU的报文进行分段和重组;主要负责报文的分发、通道多路复用和基本传输服务,此外还负责处理报文分段的发送、接收和重组。


Infiniband Fabric架构和工作原理


IB标准定义了一套用于系统通信的多种设备,包括通道适配器(Channel Adapter)、交换机(Switch)和路由器(Router)。其原因在于IB是以通道Channel为基础的双向、串行式传输,在连接拓朴中是采用交换、切换式结构(Switched Fabric)。


所以会有所谓的IBA交换器(Switch),此外在线路不够长时可用IBA中继器(Repeater)进行延伸。而每一个IBA网络称为子网(Subnet),每个子网内最高可有65536个节点(Node),IBA Switch、IBARepeater仅适用于Subnet范畴,若要通跨多个IBASubnet就需要用到IBA路由器(Router)或IBA网关器(Gateway)。


至于节点部分,Node想与IBA Subnet接轨必须透过配接器(Adapter),若是CPU、内存部分要透过HCA(Host Channel Adapter),若为硬盘、I/O部分则要透过TCA (Target Channel Adapter),之后各部分的衔接称为联机(Link)。上述种种构成了一个完整的IBA。

 

​Infiniband架构和技术实战(第二版)_java_04


通道适配器(Channel Adapter)指节点接入InfiniBand的适配器,可分为Host CA 和 Target CA。用于同其他设备连接,包括主机通道适配器(HCA)用于主控NODE,和目标通道适配器(TCA)用于外设NODE,使IO设备脱离主机而直接置于网络中,通道适配器实现物理层,链路层,网络层和传输层的功能。


通道适配器是IB网络接口的一个重要组成部分,是带有特定保护特性的可编程DMA器件,允许本地和远端的DMA操作。

 

交换机(Switch)包括多个端口,用于连接CA,Router或其它Switch。通过Layer 2 Local Route Header(LRH)中的LID进行转发。是IB结构中的基本组件,负责在IB子网里转发报文。


路由器(Router)也是IB结构中的基本组件,负责在不同的IB子网间转发报文。Router用于连接不同的Subnet,通过GRH中的IPv6地址进行转发。转发时将修改数据包中的LID。

 

每个Subnet都必须有一个Subnet Manager来管理,例如分配LID,Subnet Manager通过Subnet Management Agent与InfiniBand设备进行交流。

 

OpenFabrics Enterprise Distribution (OFED) / OpenFabrics Software(OFS)是用于RDMA应用程序的开源软件栈。OFS用于需要高效网络,存储连接和并行计算的商业,研究和科学环境。随着计算向需要极速,大规模可扩展性和实用级可靠性的应用发展,该软件为高性能计算站点和企业数据中心提供了灵活性和投资保护。


​Infiniband架构和技术实战(第二版)_java_05


OFED包括内核态驱动程序,面向通道的RDMA和发送/接收操作,操作系统的内核旁路,用于并行消息传递(MPI)的内核态/用户态应用程序编程接口(API)和服务,套接字数据交换(如RDS,SDP),NAS和SAN存储(例如iSER,NFS-RDMA,SRP)和文件系统/数据库系统。OFED支持的网络架构包括10G以太网、 iWARP、RoCE(RDMA over Converged Ethernet)和InfiniBand。

 

Mellanox的Socket Direct技术


Mellanox公司针对当前服务器中普遍应用的Dual Socket结构提供Socket Direct的方案。其基本原理如图所示,将PCIe x16的HCA卡分成2张PCIe x8卡(Main Card和Auxilary Card),并连接到不同Socket上,原本需要通过inter-processor bus的通信可以直接通过HCA卡进行,从而减少CPU间的通信,提升系统性能。


​Infiniband架构和技术实战(第二版)_java_06


Mellanox Socket Direct可以把两张PCIe卡通过一种独特网络组网形态,实现把PCIe通道分割在两张PCIe卡之间网络技术。PCIe适配器卡为多路服务器带来的一个关键好处是消除了多路CPU之间通过内部总线进行的网络流量,从而显著降低了开销和延迟。

 

下图显示了Mellanox Socket Direct适配器的图片,该方案不但有效地集成了主板上的单个网络适配器,同时集成了一个辅助的PCIe连接卡和连接二者的SAS线缆。

​Infiniband架构和技术实战(第二版)_java_07


Socket Direct如何工作?当把两个PCIe插槽直接连接到两个CPU插槽,并启用Socket Direct功能时,该方案允许每个CPU通过其专用的PCIe接口直接访问网络。


​Infiniband架构和技术实战(第二版)_java_08


测试比较了基于ConnectX 的SocketDirect (安装在双路服务器中)和标准PCIe x16100Gb/s适配器卡的性能(仅连接到一个CPU)。测试范围覆盖TCP吞吐量、延迟和CPU利用率,以及RDMA基准测试。

 

​Infiniband架构和技术实战(第二版)_java_09


上图比较了Socket Direct适配器与标准网络适配器的平均延迟。该图显示,与标准适配器组网相比,使用ocket Direct适配器时,延迟减少了80%。由于CPU传输的数据流量套接字都采用了直接路径来访问网络,并且在CPU之间均匀地分布TCP流,所以降低了网络时延。

 

Mellanox Socket Direct 适配器为最苛刻的应用提供了最高的性能和最灵活的解决方案。Socket Direct通过最大的吞吐量来扩展服务器性能和利用率。多路或双路服务器中的SocketDirect 适配器允许两个CPU直接连接到网络,从而提供更低的延迟、降低CPU利用率,提供更高的网络吞吐量。