4.0 InfiniBand 技术概述
InfiniBand 是一种基于交换机的点对点互连架构,专为当今的系统而开发,并具备扩展以满足下一代系统需求的能力。它既可在 PCB 上作为组件到组件的互连运行,也可作为"机箱外部"的机箱到机箱互连运行。每条独立的链路都基于四线 2.5 Gb/s 的双向连接。该架构定义了分层的硬件协议(物理层、链路层、网络层、传输层)以及用于管理设备间初始化和通信的软件层。每条链路可支持多种传输服务以实现可靠性,并支持多个优先级的虚拟通信通道。
为了管理子网内的通信,该架构定义了一种通信管理方案,负责配置和维护每个 InfiniBand 元素。针对错误报告、链路故障转移、机箱管理和其他服务都定义了管理方案,以确保坚固的互连结构。
InfiniBand 特性集
- 分层协议 --- 物理层、链路层、网络层、传输层、上层
- 基于分组的通信
- 服务质量(QoS)
- 三种链路速率
- 1X --- 2.5 Gb/s,4 根线
- 4X --- 10 Gb/s,16 根线
- 12X --- 30 Gb/s,48 根线
- PCB、铜缆和光纤互连
- 子网管理协议
- 远程 DMA 支持
- 组播和单播支持
- 可靠传输方法 --- 消息队列
- 通信流控 --- 链路级和端到端
4.1 InfiniBand 分层结构
InfiniBand 架构分为多个层次,每一层彼此独立运行。如图 5 "InfiniBand 分层结构" 所示,InfiniBand 分为以下层次:物理层、链路层、网络层、传输层和上层。

图 5. InfiniBand 分层结构
上层 传输层 网络层 链路层 物理层
│ │ │ │ │
│ 主机客户端 │ 事务 │ │ │
│ │ │ │ │ SAR │ 链路编码 │
│ ↓ │ ↓ │ │ │ │ │
│ IBA 操作 │ 消息(QP) │ 子网间路由(IPv6) │ MAC │
│ │ │ ↓ │ ↓ │
│ │ │ 网络 │ 链路 │
│ │ │ │ │
│ 远程客户端 │ │ │ │
│ │ │ │ │ │
│ ↓ │ │ │ │
│ IBA 操作 │ │ │ │
│ │ │ │ │
│ │ │ │ │ │ │ │ │
└───────┴────────────┴───────┴──────────────┴───────┴──────────────┴───────┴──────────────┘
│ │ │
↓ ↓ ↓
交换机 路由器 端节点
分组中继
流控
4.1.1 物理层
InfiniBand 是一个全面的架构,定义了系统的电气和机械特性。这些包括用于光纤和铜介质的电缆和插座、背板连接器以及热插拔特性。

InfiniBand 在物理层定义了三种链路速率:1X、4X、12X。每条独立的链路都是四线串行差分连接(每个方向两根线),提供 2.5 Gb/s 的全双工连接。这些链路如图 7 "InfiniBand 物理链路" 所示。

图 7. InfiniBand 物理链路
- 1X 链路
- 4X 链路
- 12X 链路
表 3. InfiniBand 链路速率
| InfiniBand 链路 | 信号数量 | 信号速率 | 数据速率 | 全双工数据速率 |
|---|---|---|---|---|
| 1X | 4 | 2.5 Gb/s | 2.0 Gb/s | 4.0 Gb/s |
| 4X | 16 | 10 Gb/s | 8 Gb/s | 16.0 Gb/s |
| 12X | 48 | 30 Gb/s | 24 Gb/s | 48.0 Gb/s |
注意: InfiniBand 1X 链路的带宽为 2.5 Gb/s。实际原始数据带宽为 2.0 Gb/s(数据采用 8b/10b 编码)。由于链路是双向的,相对于总线的聚合带宽为 4 Gb/s。大多数产品是多端口设计,其中聚合系统 I/O 带宽将是累加的。
InfiniBand 为"机箱外部"通信定义了多种连接器。定义了光纤和铜缆连接器以及用于机架安装系统的背板连接器。
4.1.2 链路层
链路层(与传输层一起)是 InfiniBand 架构的核心。链路层包括分组布局、点对点链路操作以及本地子网内的交换。
-
分组
链路层内有两种类型的分组:管理分组和数据分组。管理分组用于链路配置和维护。设备信息(如虚拟通道支持)通过管理分组确定。数据分组可携带多达 4KB 的事务负载。
-
交换
在子网内,分组转发和交换在链路层处理。子网内的所有设备都有一个由子网管理器分配的 16 位本地标识符(LID)。子网内发送的所有分组都使用 LID 进行寻址。链路级交换将分组转发到分组中本地路由头(LRH)内目标 LID 指定的设备。LRH 存在于所有分组中。
-
QoS
InfiniBand 通过虚拟通道(VL)支持 QoS。这些 VL 是共享单条物理链路的独立逻辑通信链路。每条链路最多可支持 15 个标准 VL 和一个管理通道(VL15)。VL15 是最高优先级,VL0 是最低优先级。管理分组独占使用 VL15。每个设备必须至少支持 VL0 和 VL15,而其他 VL 是可选的。
当分组遍历子网时,定义了服务等级(SL)以确保其 QoS 级别。路径上的每条链路可以有不同的 VL,而 SL 为每条链路提供所需的通信优先级。每个交换机/路由器都有一个由子网管理器设置的 SL 到 VL 映射表,以在每个链路支持的 VL 数量内保持适当的优先级。因此,InfiniBand 架构可以通过交换机、路由器和长距离链路确保端到端的 QoS。
-
基于信用的流控
流控用于管理两个点对点链路之间的数据流。流控按每个 VL 处理,允许独立的虚拟结构利用相同的物理介质进行通信。链路的每个接收端向发送设备提供信用,以指定可以在不丢失数据的情况下接收的数据量。每个设备之间的信用传递通过专用链路分组管理,以更新接收器可以接受的数据分组数量。除非接收器通告信用表明接收缓冲区空间可用,否则不会传输数据。
-
数据完整性
在链路级别,每个分组有两个 CRC:可变 CRC(VCRC)和不变 CRC(ICRC),以确保数据完整性。16 位 VCRC 包括分组中的所有字段,并在每一跳重新计算。32 位 ICRC 仅覆盖从一跳到下一跳不会改变的字段。VCRC 提供两个跳之间的链路级数据完整性,ICRC 提供端到端数据完整性。在像以太网这样只定义单个 CRC 的协议中,错误可能在设备内引入,然后重新计算 CRC。下一跳的检查将显示有效的 CRC,即使数据已损坏。InfiniBand 包含 ICRC,因此当引入位错误时,错误将始终被检测到。
4.1.3 网络层
网络层处理从一个子网到另一个子网的分组路由(在子网内,不需要网络层)。在子网之间发送的分组包含全局路由头(GRH)。GRH 包含分组的源和目标的 128 位 IPv6 地址。分组通过路由器基于每个设备的 64 位全局唯一标识符(GUID)在子网之间转发。路由器在每个子网内用适当的本地地址修改 LRH。因此,路径上的最后一个路由器用目标端口的 LID 替换 LRH 中的 LID。在网络层内,当在单个子网内使用时(这对于 InfiniBand 系统区域网络来说是一个可能的场景),InfiniBand 分组不需要网络层信息和头开销。
4.1.4 传输层
传输层负责有序分组交付、分区、通道多路复用和传输服务(可靠连接、可靠数据报、不可靠连接、不可靠数据报、原始数据报)。传输层还处理发送时的事务数据分段和接收时的重组。基于路径的最大传输单元(MTU),传输层将数据划分为适当大小的分组。接收器基于包含目标队列对和分组序列号的基本传输头(BTH)重组分组。接收器确认分组,发送器接收这些确认,并用操作状态更新完成队列。
InfiniBand 架构为传输层提供了显著的改进:所有功能都在硬件中实现。
InfiniBand 指定了多种传输服务以实现数据可靠性。表 4 "支持的服务" 描述了每种支持的服务。对于给定的队列对,使用一种传输级别。
表 4. 支持的服务
| 服务类别 | 描述 |
|---|---|
| 可靠连接 | 已确认 --- 面向连接 |
| 可靠数据报 | 已确认 --- 多路复用 |
| 不可靠连接 | 未确认 --- 面向连接 |
| 不可靠数据报 | 未确认 --- 无连接 |
| 原始数据报 | 未确认 --- 无连接 |
4.2 InfiniBand 元素
InfiniBand 架构定义了用于系统通信的多种设备:通道适配器、交换机、路由器和子网管理器。在子网内,每个端节点必须至少有一个通道适配器和一个子网管理器来设置和维护链路。所有通道适配器和交换机必须包含一个子网管理代理(SMA),用于处理与子网管理器的通信。

图 8. InfiniBand 架构
CPU --- 系统内存 --- 系统控制器 --- 主机通道适配器 --- IB 交换机 --- TCA --- IO 控制器
│
└─ TCA --- IO 控制器
│
└─ TCA --- IO 控制器
4.2.1 通道适配器
通道适配器将 InfiniBand 连接到其他设备。通道适配器有两种类型:主机通道适配器(HCA)和目标通道适配器(TCA)。
HCA 提供到主机设备的接口,并支持 InfiniBand 定义的所有软件动词(Verbs)。动词是一种抽象表示,定义了客户端软件与 HCA 功能之间所需的接口。动词不指定操作系统的应用程序编程接口(API),而是定义操作系统供应商开发可用 API 的操作。
TCA 通过 HCA 功能的子集将 I/O 设备连接到 InfiniBand,这些子集对于每个设备的特定操作是必需的。
4.2.2 交换机
交换机是 InfiniBand 结构的基本组件。交换机包含多个 InfiniBand 端口,并根据二层本地路由头中包含的 LID 将分组从一个端口转发到另一个端口。除管理分组外,交换机不消费或生成分组。与通道适配器一样,交换机需要实现 SMA 以响应子网管理分组。交换机可以配置为转发单播分组(到单个位置)或组播分组(寻址到多个设备)。

图 9. InfiniBand 组件
路由器
│
端节点 ── 端节点 ──┼── 端节点
│
交换机
│
子网 A 子网 B
│
交换机 ── 端节点
│
端节点 交换机 ── 端节点
│ │
端节点 端节点 ──┼── 端节点
│
端节点
4.2.3 路由器
InfiniBand 路由器将分组从一个子网转发到另一个子网,而不消费或生成分组。与交换机不同,路由器读取全局路由头以基于其 IPv6 网络层地址转发分组。路由器用下一个子网上适当的 LID 重建每个分组。
4.2.4 子网管理器
子网管理器配置本地子网并确保其持续运行。子网中必须至少有一个子网管理器来管理所有交换机和路由器的设置,以及当链路断开或新链路建立时的子网重新配置。子网管理器可以位于子网上的任何设备中。子网管理器通过每个专用 SMA(每个 InfiniBand 组件都需要)与子网上的设备通信。
一个子网中可以驻留多个子网管理器,但只有一个可以是活动的。非活动子网管理器(备用子网管理器)保存活动子网管理器转发信息的副本,并验证活动子网管理器是否正常运行。如果活动子网管理器发生故障,备用子网管理器将接管职责,以确保结构不会随之瘫痪。
4.3 管理基础设施
InfiniBand 架构定义了两种系统管理方法,用于处理与子网中设备相关的所有子网启动、维护和一般服务功能。每种方法都有一个专用队列对(QP),子网上的所有设备都支持该队列对,以将管理流量与其他流量区分开来。
4.3.1 子网管理
第一种方法是子网管理,由子网管理器(SM)处理。子网中必须至少有一个 SM 来处理配置和维护。这些职责包括 LID 分配、SL 到 VL 映射、链路建立和拆除以及链路故障转移。
所有子网管理都使用 QP0,并独占地在高优先级虚拟通道(VL15)上处理,以确保子网内的最高优先级。子网管理分组(SMP)是唯一允许在 QP0 和 VL15 上的分组。此 VL 使用不可靠数据报传输服务,不遵循链路上其他 VL 的相同流控限制。子网管理信息在链路上先于所有其他流量传递。子网管理器通过将所有配置要求放在后台处理,简化了客户端软件的职责。
4.3.2 通用服务
InfiniBand 定义的第二种方法是通用服务接口(GSI)。GSI 处理机箱管理、带外 I/O 操作和其他与子网管理器无关的功能。这些功能没有与子网管理相同的高优先级需求,因此 GSI 管理分组(GMP)不使用高优先级虚拟通道 VL15。所有 GSI 命令都使用 QP1,并且必须遵循其他数据链路的流控要求。
4.4 InfiniBand 对虚拟接口架构(VIA)的支持
虚拟接口架构是一种分布式消息传递技术,既独立于硬件,又与当前的网络互连兼容。该架构提供了一个 API,可用于在集群应用程序的对等体之间提供高速、低延迟的通信。
InfiniBand 的开发考虑了 VIA 架构。InfiniBand 通过使用执行队列将流量控制从软件客户端卸载。这些队列称为工作队列,由客户端发起,然后留给 InfiniBand 管理。对于设备之间的每个通信通道,在每个端分配一个工作队列对(WQP --- 发送队列和接收队列)。客户端将事务放入工作队列(工作队列条目 --- WQE),然后由通道适配器从发送队列处理并发送到远程设备。当远程设备响应时,通道适配器通过完成队列或事件向客户端返回状态。
客户端可以发布多个 WQE,通道适配器的硬件将处理每个通信请求。然后,通道适配器生成一个完成队列条目(CQE),以按适当的优先级顺序为每个 WQE 提供状态。这允许客户端在事务被处理时继续进行其他活动。

图 10. InfiniBand 通信栈
客户端进程 远程进程
│ │
│ WQE │
│ │ │
↓ ↓ ↓
主机通道适配器 事务 目标通道适配器
│ │
│ CQE WQE │
│ │ │ │
│ │ ↓ │
│ │ CQE │
│ │ │ │
│ └───────────────────────────────────────────┘ │
│ │
│ IB 操作 │
│ │ │
│ QP ───── 发送 ──── 接收 ──── QP │
│ │ │ │ │ │
│ │ ↓ ↓ │ │
│ │ 传输引擎 传输引擎 │ │
│ │ │ │ │ │
│ │ ↓ ↓ │ │
│ └────── 端口 ─── IB 分组 ─── 端口 ──────────────────┘
│ │
└──────────────────── 结构 ─────────────────────────────┘
4.5 充分发挥刀片计算的潜力
要充分发挥基于刀片的服务器计算的 TCO(总拥有成本)优势,刀片技术必须至少提供以下核心功能:可扩展性、容错、热插拔、QoS、集群、I/O 连接支持(内存和消息语义)、可靠性、冗余、用于故障转移的活动备用、互连可管理性和错误检测。IT 经理很容易理解为什么他们要求在每个新部署的服务器平台中都具备这些属性。如本文所述,所有这些属性都在 InfiniBand 架构中原生提供,它们将真正释放刀片计算所承诺的全部潜力。白皮书《利用 InfiniBand 架构充分发挥服务器、交换机和 I/O 刀片的潜力》(文档编号 2009WP)详细探讨了这些属性和 TCO 优势。
原文来源:Mellanox Technologies Inc.,《InfiniBand 简介白皮书》,文档编号 2003WP,版本 1.90