InfiniBand调研

InfiniBand调研

IB简介

IB是一个基于交换机的点对点的互连体系结构。

InfiniBand Layers

IB网络分层
IB网络一共分为以下五层。

  • 物理层
  • 链路层
  • 网络层
  • 传输层
  • 应用层
    我们可以看到,与传统的OSI网络模型相比,InfiniBand是比较简单的,只有五层。
    ![[OSI七层网络模型.png]]
    OSI七层网络模型
    五层模型

    物理层

    物理层主要定义了IB网络的电气特性和机械特性,例如插口,电缆等。
    在物理层InfiniBand定义了三个链接速度(1X, 4X, 12X)。每个线路提供了在2.5Gb/s,全双工链接。每个方向两条线。
    链接速度
    机械特性-接口

链路层是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的细节暂时还没深入了解。
    IB-ARCH
    IB-COMP

    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网络中。
    IB网络与DODK