RDMA-InfiniBand总线架构简介(一)

1.概述

IBA(InfiniBand Architecture)定义了一种系统区域网络(System Area Network,SAN),用于连接多个独立的处理器平台(即主机处理器节点)、I/O平台及I/O设备。IBA SAN是一种通信与管理基础设施,可为一个或多个计算机系统同时支持I/O和处理器间通信(IPC)。一个IBA系统的规模可小至仅含单个处理器和少量I/O设备的小型服务器,也可大至包含数百个处理器和数千个I/O设备的大规模并行超级计算机集群。此外,IBA架构对IP协议很友好,使其能够桥接到互联网、内联网或连接远程计算机系统。

IBA定义了一种交换式通信结构,允许多个设备在受保护的远程管理环境中以高带宽、低延迟并发通信。终端节点可通过多个IBA端口(Fabric)进行通信,并能利用IBA网络结构中的多条路径。网络中的多端口与多路径设计既实现了容错功能,又提升了数据传输带宽。

IBA硬件将大量I/O通信操作从CPU卸载,使得多路并发通信得以摆脱传统通信协议带来的开销。IBA SAN为其I/O和IPC客户端提供零处理器拷贝的数据传输,无需内核参与,并利用硬件实现高可靠、具备容错能力的通信。

IBA系统区域网络由处理器节点和I/O单元构成,这些组件通过由级联交换机和路由器组成的IBA网络结构相互连接。

I/O单元的复杂度范围广泛,既包括采用单芯片ASIC设计的简单IBA附属设备(如SCSI或局域网适配器),也涵盖配备海量存储的复杂RAID子系统------其复杂程度可与处理器节点相匹敌,甚至延伸至复杂的分布式并行文件系统。

2.拓扑和组件

从高层架构来看,IBA充当着终端节点之间的互联网络,如下图所示。每个节点可以是处理器节点、I/O单元,和/或连接其他网络的路由器。

如下图所示。一个IBA网络可以拆分成数个子网,每个子网通过路由器连接。终端节点可以连接到单个子网或多个子网。

如下图所示。IBA子网由终端节点、交换机、路由器和子网管理器组成,这些组件通过链路相互连接。每个IBA设备可连接至单个交换机、多个交换机,或与其他设备直接互联。任意两个IBA设备之间可以存在多条链路。

如下图所示,IBA架构针对多个独立进程和线程(消费者)进行了优化。每个通道适配器(Channel Adapter,可以理解成网卡)构成网络结构中的一个节点。IBA架构支持每个处理器节点(Processor Node)配备多个通道适配器,每个通道适配器提供一个或多个连接至网络结构的端口。在此配置下,处理器节点在网络结构中呈现为多个终端节点。

在处理器节点中,消息与数据服务属于操作系统组件,不属于IBA架构的讨论范围。IBA架构具体规定了消息及数据服务与通道适配器之间接口的语义行为规范,该语义接口被称为IBA操作原语(Verbs)。操作原语描述了配置、管理和操作主机通道适配器所需的功能。这些原语明确了每个特定功能需要包含的对应参数。IBA架构定义的操作原语并非应用程序接口(API),而是阐述API必须实现的语义行为,以便消费者能够直接访问InfiniBand通道适配器提供的服务。

IBA被设计为一阶网络架构,因此其定义了主机行为规范(操作原语)和内存操作机制,使得通道适配器能够尽可能贴近内存复合体部署。该架构在获得许可的消费者之间提供独立的直接访问能力,无论这些消费者是I/O驱动程序与I/O控制器,还是基于对等通信的软件进程。IBA同时提供channel semantics (send and receive)和direct memory access功能,并通过保护机制防止未授权消费者的访问。

3.通信

3.1.队列

IBA操作的基础是其异步特性。软件异步提交请求,硬件异步执行,硬件执行完毕后通知软件执行结果,然后软件进行处理。软件和硬件通过WQ(Work Queue)和CQ(Completion Queue)交互。WQ通常成对创建,称为QP,一个用于发送操作,一个用于接收操作。WQ中存放了多个WQE(Work Queue Element),WQE中保存了数据传输地址、长度等信息。软件提交一个WR(Work Request)时,会在WQ中会创建一个WQE。硬件从WQ中依次取出WQE执行,执行完毕后会在CQ中产生一个CQE(Completion Queue Element),软件依次从CQ中取出CQE进行处理,CQE中保存了对应执行完成WQE的信息。

每个消费者可以拥有自己的一组WQ,每对WQ之间相互独立。每个消费者创建一个或多个CQ,并将每个发送队列和接收队列关联到特定的CQ。一个QP的发送队列和接收队列不必使用同一个CQ。由于某些WQ需要远程节点的确认,且部分WQE会使用多个数据包进行传输,通道适配器可以同时处理多个WQE(即使这些WQE来自同一个WQ)。因此,CQE被提交到完成队列的顺序并不固定,但同一工作队列的CQE通常会按照对应WQE被提交到WQ的顺序进行提交。

发送队列操作分为三类:SEND、RDMA和MEMORY BINDING。

  1. SEND:WQE在消费者内存空间中指定一块数据,由硬件发送至目的地,并由已排队在目的节点的接收WQE指定该数据的存放位置。

  2. RDMA:WQE额外指定远程消费者内存中的地址。因此,RDMA操作无需涉及目的节点的接收工作队列。RDMA操作分为三种类型:RDMA-WRITE、RDMA-READ和ATOMIC。

    • RDMA-WRITE:硬件将数据从消费者内存传输至远程消费者内存。
    • RDMA-READ:硬件将数据从远程消费者内存传输至消费者内存。
    • ATOMIC:硬件读取远程64位内存位置,目标节点返回读取的值,并通过将更新后的值写回同一位置,有条件地修改/替换远程内存内容。
  3. MEMORY BINDING:指示硬件更改内存注册关系。该操作将内存窗口与现有内存区域内的指定范围进行关联(绑定)。内存绑定允许消费者指定已注册内存中哪些部分可与其它节点共享(即远程节点可访问的内存),并指定读写权限。操作结果生成一个内存密钥(R_KEY),消费者将其传递给远程节点,供其在RDMA操作中使用。

接收队列操作仅有一种,即指定接收数据缓冲区。RECEIVE WQE用于指定硬件将来自其他消费者通过SEND操作发送的数据存放至何处。每当远程消费者成功执行SEND操作时,硬件会从接收队列中取出下一个表项,将接收到的数据存入该接收WQE指定的内存位置,并在完成队列中放置CQE,向消费者指示接收操作已完成。由此可见,SEND操作的执行会触发远程消费者执行一次接收队列操作。

通常,RDMA操作不会消耗目的端的接收WQE,但有一个例外:携带立即数据的RDMA WRITE操作。立即数据是SEND或RDMA WRITE指令中可选提供的32位比特数据,作为操作的一部分进行传输,但它并非写入内存,而是保存到目的端的CQE中。这意味着,携带立即数据的RDMA WRITE操作会在目的端消耗一个接收WQE。

3.2.连接

IBA同时支持面向连接的服务和数据报服务。对于面向连接的服务,每个QP仅与一个远端消费者相关联。在此情况下,QP上下文中会配置该远端消费者QP的身份信息。远端消费者通过端口和QP号来标识,其中端口由本地ID(LID)及可选的全局ID(GID)进行标识。在通信建立过程中,此类信息及其他相关信息会在两个节点之间进行交换。

对于数据报服务,QP并不绑定到单个远端消费者,而是由WQE中的信息来指定目的端。此时,需要与每个目的端进行类似于面向连接服务的通信建立过程,以交换相应信息。

3.3.通信栈

IBA的通信协议栈如下图所示。两个消费者(Consumer)各有一个通道适配器。通道适配器通过IBA Fabric连接。通信过程如下所示:

  • 消费者将WQE提交到QP,通道适配器则对每个WQE进行解析以执行相应操作。
  • 对于发送队列操作,通道适配器会解析WQE,创建请求消息。如有必要,将消息分段为多个数据包,添加相应的路由头部,并通过合适的端口将数据包发送出去。
  • 端口逻辑负责在链路上传输数据包,交换机与路由器负责转发路由器。
  • 当目的地收到数据包时,端口逻辑会验证数据包的完整性。通道适配器将收到的数据包与特定的QP关联起来,并利用该QP的上下文处理数据包并执行操作。如有必要,通道适配器会创建响应(ACK)消息,并将其发送回发起方。
  • 特定请求消息的接收会导致通道适配器消耗接收队列中的一个WQE。此时,与被消耗WQE相对应的CQE会被放置到相应的完成队列中,从而向拥有该QP的消费者下发一次工作完成通知。

4.协议栈

IBA架构协议栈可分为5层,分别是上层协议(Upper Level Protocols)、传输层(Transport Layer)、网络层(Network Layer)、链路层(Link Layer)和物理层(PHY Layer)。

4.1. 上层协议(Upper Level Protocols)

IBA架构通过各类用户消费者支持多种上层协议。如子网管理协议、子网服务协议、通用服务等。IBA还针对特定管理功能定义了相应的消息与协议。这些协议通过Message承载,软件通过操作原语Verbs和硬件通道适配器交互。

4.2. 传输层(Transport Layer)

传输层定义队列对(QP)、完成队列(CQ)、操作语义(RDMA/SEND等),用于拆分或者组装用户数据,主要的职责如下:

  1. 服务类型管理
    • 提供可靠连接(RC)、不可靠连接(UC)、不可靠数据报(UD)、可靠数据报(RD)等通信服务。
    • RC模式:保证数据按序、无损、可靠交付;唯一支持端到端重传的服务类型。
    • UD模式:多播、管理报文等,无重传、无按序保证。
  2. RDMA语义执行
    • 将上层消费者下发的工作队列元素(WQE) 翻译为具体的协议数据单元(数据包)。
    • 实现RDMA READ/WRITE、SEND、ATOMIC等操作,支持零拷贝、内核旁路。
  3. 端到端确认与重传
    • PSN(包序列号)管理:为每个数据包分配唯一序列号,用于丢包检测与按序确认。
    • ACK/NACK机制:接收端通过ACK确认已接收,通过NACK精准告知缺失包PSN,发送端硬件重传报文。
    • 乱序包处理:RC模式下,接收端收到PSN跳变的包直接丢弃,不设重组缓冲区。
  4. 多路复用
    • 通过QP隔离不同的通信流,保证单个连接的故障不影响其他连接。

4.3.网络层(Network Layer)

网络层定义全局路由头(GRH),用于数据包跨子网转发,主要的职责如下:

  1. 数据包封装
    • 在传输层数据包头部之前添加GRH、流量类别、跳数限制等字段。
    • 仅当跨子网时使用GRH;同一子网内通信仅需本地路由头(LRH),无需网络层干预。
  2. 路径选择
    • 结合子网管理器(Subnet Manager, SM)分发的路由表,决定数据包转发端口。
    • 网络层处理GRH,执行跨子网转发。

链路层定义本地路由头(LRH)、虚拟通道(VL)等,主要的主责如下:

  1. 子网内寻址
    • 使用16位LID(Local ID)标识子网内的端口(由子网管理器动态分配)。
    • 交换机仅依据DLID(Destination Local ID) 进行查表转发,不解析传输层头部。
  2. 链路层流控
    • 基于信用的流控:接收端向发送端通告可用缓冲区信用;发送端有信用才可发包,绝对零丢包。
    • VL(虚拟通道)隔离:物理链路可划分为最多15个虚拟通道,避免不同流量类型(如存储、计算)互相干扰。
  3. 错误检测
    • 在数据包尾部附加变长CRC(VCRC),接收端校验完整性,错误则丢弃。
  4. 专有链路层重传(NVIDIA LLR)
    • 非规范标准:NVIDIA设备在链路层插入Cell级ACK/NAK重传,微秒级修复物理误码。ConnectX-3网卡引入。
    • 范围:仅NVIDIA对NVIDIA,电缆长度≤30m生效。

Start Delimiter(起始分隔符)和End Delimiter(结束分隔符)是一种特殊符号,用于标记数据包边界。主要的作用是让物理层能准确的识别到数据包。

4.5. 物理层(PHY Layer)

发送端将链路层传下来的数据转换成模拟电信号或者光信号,接收端将接收到的模拟电信号或者光信号转换成数据,然后提交到链路层。模拟电信号在铜缆中传输,模拟光信号在光纤中传输,主要的主责如下:

  1. 电气/光学特性
    • 定义电压电平、信号速率、连接器类型、线缆/光模块规范。
    • 历代速率:SDR(2.5Gbps)、DDR(5Gbps)、QDR(10Gbps)、FDR(14Gbps)、EDR(25Gbps)、HDR(50Gbps)、NDR(100Gbps)、XDR(250Gbps)。
  2. 编码与解码
    • 将链路层的包转换为物理介质可传输的比特流,执行8B/10B(前几代)或64B/66B(HDR/NDR)编码,保证DC平衡和时钟恢复。
  3. 链路训练与状态协商
    • PCS(物理编码子层):设备上电/插线后,物理层执行链路训练(Link Training),协商速率、FEC模式、极性对齐等。
    • 维护链路状态机(Link State Machine):Down、Initialize、Ready。
  4. 前向纠错(FEC)
    • HDR/NDR必选RS-FEC:通过附加校验码纠正传输过程中的符号错误,降低误码率(BER)。

参考资料

  1. InfiniBand TM Architecture Specification Volume1
  2. InfiniBand TM Architecture Specification Volume2
相关推荐
三点水-here1 天前
04 - 分布式大模型推理实战:TP/PP/EP并行策略深度解析
分布式·rdma·nccl·moe·流水线并行·张量并行·专家并行
tiantianuser19 天前
RDMA设计37:RoCE v2 子系统模型设计
fpga开发·rdma·高速传输·cmac·roce v2
yusur1 个月前
边缘智算新引擎 DPU 驱动的算力革新
人工智能·科技·rdma·dpu
bandaoyu1 个月前
【RDMA】infiniband IB 流控机制
rdma
bandaoyu1 个月前
【RDMA】infinband诊断工具
rdma
tiantianuser1 个月前
RDMA设计33:RoCE v2 接收模块
fpga开发·rdma·高速传输·cmac·roce v2
tiantianuser1 个月前
RDMA设计31:RoCE v2 发送模块3
fpga开发·rdma·cmac·roce v2
tiantianuser1 个月前
RDMA设计29:RoCE v2 发送及接收模块设计2
服务器·fpga开发·rdma·fpga设计·高速传输
毅硕科技1 个月前
毅硕HPC | InfiniBand网络在HPC集群中的核心应用
hpc·infiniband·网络技术·高性能计算集群·专业服务