InfiniBand调研
IB简介
IB是一个基于交换机的点对点的互连体系结构。
InfiniBand Layers
IB网络一共分为以下五层。
- 物理层
- 链路层
- 网络层
- 传输层
- 应用层
我们可以看到,与传统的OSI网络模型相比,InfiniBand是比较简单的,只有五层。
![[OSI七层网络模型.png]]物理层
物理层主要定义了IB网络的电气特性和机械特性,例如插口,电缆等。
在物理层InfiniBand定义了三个链接速度(1X, 4X, 12X)。每个线路提供了在2.5Gb/s,全双工链接。每个方向两条线。
Link Layer
链路层是IB网络的核心,链路层包括数据包设计,点对点链接操作和本地子网交换等。
Packets
在链路层一共有两种类型的数据包。分别是管理包(Management Packet)和数据包(Data Packet)。
- 管理包:用于链路配置和维护。用于确定设备信息,例如虚拟通道(Virtual Lane)支持。
在子网中,包的转发和交换都在链路层进行。子网内的所有设备都有一个由子网管理器分配的本地16位本地ID(Local ID,LID)。子网内发送的所有数据包都是用LID进行寻址。
LRH:Local Route Header,本地路由头部。
链路层交换将分组转发到LRH中目的LID指定的设备上去。LRH存在于所有数据包之中。QoS
- Infiniband通过Virtual Lane支持QoS。通过VL,SL等概念,实现了QoS。
- VL(Virtual Lane)是共享单个物理链路的独立逻辑通信链路。每个(物理)链路最多可支持15个标准VL和一个管理通道(VL 15)。VL15的优先级最高,VL0的优先级最低。管理数据包专门使用VL15。每个设备必须至少支持VL0和VL15,其他VL是可选的。
- 其中又定义了SL(Service Level)以确保其QoS等级,每个链路可以有不同的VL,且SL向每个链路提供期望的通信优先级。
- 每一个交换机或者路由器有一个SL到VL的映射表。该映射表由子网管理器设置,以根据每条链路支持的VL数量保持适当的优先级。
- 个人认为SL是用户定义的等级,然后由交换机或者路由器映射为VL。用户无法感知到VL。
Credit Based Flow Control
- Flow Control用于管理点对点链路中的数据流。Flow Control是在VL的基础上处理的,允许不同的虚拟fabrics使用相同的物理介质保持通信。
- 链路中的每一个接收端,向链路上的发送设备指定一个credit,以指定在不丢失数据的情况下可以接收的数据量。
- credit在链路中的传递,通过一个专用的packet进行。只有当credit指示缓冲区空间可用时,才可以传送数据。
Data integrity
这段应该是对链路层数据包进行差错检测。
在链路层级别,每个Packet有两种CRC,分别是Variant CRC (VCRC)和Invariant CRC
(ICRC)。 - VCRC:16位。包括数据包的所有字段,每一跳都要重新计算。
- ICRC:32位。32位的ICRC只涵盖不会随每一跳而改变的字段。
在OSI网络体系结构中,数据链路层的差错控制也可以使用CRC检测。Network Layer
在网络层处理数据包的时候,如果需要从一个子网到另外一个子网。需要有一个GRH(Global Router Header)。GRH包含了分组的源和目的的128位IPv6地址。
子网之间的数据包转发,通过路由器根据每台设备的64位全球唯一的GUID(GUID, Global Unique ID)进行转发。
路由器会根据子网内的地址修改LRH。因此路径中最后的一个路由器用目的地址端口的LID替换LRH中的LID。Transport Layer
传输层负责数据包的按序抵达,信道复用和传输服务。基本上的功能和TCPIP的传输层类似。InfiniBand Element
InfiniBand为了系统通信,定义了几种设备。 - Channel Adapter
- Switch
- Router
- Subnet Manager
在子网内,每个终端节点必须要有一个通道适配器,并且必须要有一个子网管理器来设置和维护链路。
所有的Channel Adapter和Switch必须有一个Subnet Management Agent(SMA),并且通过SMA与subnet Manager通信。Channel Adapter
Channel Adapter将其他设备接入到IB网络。一共分为以下两种。 - TCA:Target Channel Adapter
- HCA:Host Channel Adapter
从下图中可以看到,IO和HOST之间也需要通过IB Switch,那么可能会涉及到RDMA的内容。IB网络和RDMA的细节暂时还没深入了解。HCA
HCA为主机设备提供接口,并支持InfiniBand定义的所有Software Verbs。 - verbs:定义了客户端软件和HCA功能之间接口。
TCA
TCA提供从InfiniBand到I/O设备的连接,其中包含每个设备特定操作所需的HCA功能子集。Switch
交换机是InfiniBand结构的基本组件。交换机包含多个InfiniBand端口,并根据第二层本地路由报头中包含的LID将数据包从一个端口转发到另一个端口。
除管理数据包外,交换机不消耗或生成数据包。与通道适配器一样,交换机需要实现SMA来响应子网管理数据包。
交换机可以配置为转发单播数据包(到单个位置)或多播数据包(寻址到多个设备)。Router
InfiniBand路由器将数据包从一个子网转发到另一个子网,而不会消耗或生成数据包。与交换机不同,路由器读取全局路由报头,并根据其IPv6网络层地址转发数据包.路由器在下一个子网中使用正确的LID重建每个数据包。Subnet Manager
- 子网管理器配置本地子网并确保其持续运行。
- 子网中必须至少存在一个子网管理器,以管理所有交换机和路由器设置,并在链路断开或新链路出现时重新配置子网。
- 子网管理器可以位于子网上的任何设备中
- 子网管理器通过每个专用SMA(每个InfiniBand组件都需要)与子网上的设备通信。
- 一个子网中可以有多个子网管理器,只要其中只有一个处于活动状态。非活动子网管理器(备用子网管理器)保留活动子网管理器的转发信息的副本,并验证活动子网管理器是否可操作。如果活动子网管理器出现故障,备用子网管理器将接管责任,以确保结构不会随之出现故障.
Management Infrastructure(管理基础架构)
InfiniBand定义了两种系统管理方法。用于处理所有子网建立、维护和与设备相关的关联的功能。每一个方法都有一个专用队列对(Queue Pair, QP)。子网中的所有设备都支持该队列对,以便将管理流量和其他流量区分开来。
QP是infiniband的一个重要概念,它是指发送队列和接收队列的组合,用户调用API发送接收数据的时候,实际上是将数据放入QP当中,然后以轮询的方式将QP中的请求一条条的处理,其模式类似于生产者-消费者模式。
两种方法分别是 - Subnet Management
- General Services
Subnet Management
- 由Subnet Manager处理。SM的职责包括,LID分配,SL to VL映射,链路的建立和拆除等。
- 所有子网管理使用QP0和专门处理高优先级Virtual Lane(VL15),以确保子网内的最高优先级。
- Subnet Management Packets(SMPs)是QP0和VL 15上唯一允许传输的数据包。
General Services
这种方法也叫GSI(General Services Interface)
这种方法处理IO操纵、和SM无关等功能。这些功能不需要高优先级操作,因此GSI管理数据包不使用高优先级虚拟通道VL 15。所有GSI命令都使用QP 1,并且必须遵循其它数据链路的流量控制要求。IB网络通信
- VIA:virtual interface architecture,虚拟接口体系结构是一种分布式消息传递技术,既独立于硬件又与当前网络互连兼容。
InfiniBand卸载流量控制到控制队列,这些队列由客户端启动,然后由InfiniBand管理。
对于设备之间,在每个端点分配一个工作队列对(WQP,一个接收,一个发送)。而CQE(完成队列对)为WQP提供状态。
客户端将事务放入工作队列,然后由Channel Adapter从发送队列处理事务,将其发送到远程设备。当远程设备响应时,通道适配器通过完成队列或事件向客户端返回状态。
![[Pasted image 20221211231128.png]]IB网络与OSI异同
网络分层 异 同 物理层 OSI网络的一些特性与IB网络不同 都定义了各自的电气特性,机械特性等 链路层 OSI使用一个48位全球唯一的MAC地址进行寻址,IB网络使用一个本地唯一的16位LID进行寻址,IB网络同时在数据链路层制定了QoS等服务。 对数据帧的格式进行定义,使用交换机进行转发 网络层 OSI可以使用IPv4,而IB网络是基于IPv6 通过路由器,和全球唯一的IP地址进行寻址,这个IP地址在IB网络中被称为GUID 传输层 / / 应用层 / / InfiniBand总结
总体上来看,IB网络确实如同老师所说,是一个类似于TCPIP的网络体系结构。IB网络不是对原有网络的小修小改,而是自己重新设计的一个网络体系结构。至于InfiniBand的无限带宽如何体现,可能与IB网络支持的协议相关,这点是暂时未深入了解的。IB网络与Unikraft,DPDK
一个简单的结合思路
IB网络我认为是和Unikraft是两个赛道的东西,只需要考虑Unikraft如何接入到InfiniBand网络中即可。
如果WQP是由IB网络自行管理,那么先将Unikraft与DPDK结合,然后DPDK下放数据包的时候,通过Unikraft中,我们自行设计的,针对InfiniBand网络的接口(ukib),将数据包下放到IB网络中。