4. InfiniBand体系结构:HCA、TCA、交换机与路由器
InfiniBand(IB)网络之所以能在高性能计算(HPC)与人工智能(AI)集群中占据核心地位,根本原因在于其通道导向(Channel-Oriented)的体系结构。与以太网“即插即用、尽力转发”的松散模型不同,IB网络在硬件层面就定义了清晰的角色分工:主机通道适配器(HCA)负责计算节点接入,目标通道适配器(TCA)负责存储或专用设备接入,IB交换机(Switch)负责高速转发,IB路由器(Router)负责跨子网互联。理解这四类组件的职责边界与协作方式,是掌握IB网络架构的基石。
4.1 核心组件与角色定位
IB网络是一个子网(Subnet)概念下的互联系统。一个子网内,所有链路通过子网管理器(Subnet Manager, SM)统一管理。在子网内部,数据以数据包(Packet)形式在HCA、交换机、TCA之间传输;而跨子网通信则必须经过路由器。
下表概括了四类核心组件在IB体系中的定位差异:
| 组件 | 典型位置 | 核心功能 | 关键接口/术语 |
|---|---|---|---|
| HCA | 服务器/计算节点内部 | 将主机内存中的数据封装为IB消息,通过队列对(QP)发送/接收 | PCIe接口、QP、CQ、端口速率(如HDR400) |
| TCA | 存储阵列、专用加速器侧 | 为不具备完整主机协议栈的设备提供IB接入能力 | 通常与存储控制器集成,支持RDMA读写 |
| IB交换机 | 子网内部,机架顶部或列头 | 根据LID(局部标识符)在子网内转发数据包,不修改报文内容 | LID路由、VL(虚拟通道)、端口数(如36端口) |
| IB路由器 | 子网边界,连接多个IB子网或IB与其它网络 | 基于GID(全局标识符)在不同子网间路由,执行网络层寻址 | GID转发、跨子网通信、路径MTU协商 |
核心原理:IB网络采用子网内LID路由 + 子网间GID路由的两级寻址机制。LID是16位局部地址,仅在子网内有效;GID是128位全局地址(基于IPv6格式),用于跨子网识别端口。这种设计使得子网内部转发极快(查表简单),而跨子网通信则通过路由器进行更复杂的决策。
4.2 主机通道适配器(HCA)——计算节点的“翻译官”
HCA是IB网络中最关键的智能组件。它不仅仅是一块网卡,而是一个拥有独立处理能力的I/O引擎。HCA通过PCIe总线与主机CPU和内存相连,其内部集成了DMA引擎、队列管理逻辑以及IB协议栈的硬件实现。
HCA的工作流程可以概括为以下步骤:
- 资源创建:主机驱动创建队列对(QP)和完成队列(CQ)。QP由发送队列(SQ)和接收队列(RQ)组成。
- 内存注册:主机将用于通信的内存缓冲区注册到HCA,获取物理地址映射(lkey/rkey),避免数据拷贝。
- 发布请求:应用层通过verbs接口(如
ibv_post_send)向SQ发布发送请求(WR),描述待发送数据的内存地址和长度。 - 硬件DMA:HCA硬件直接从主机内存读取数据,按照IB包格式封装,通过链路层发送到交换机。
- 完成通知:发送完成后,HCA向CQ写入完成队列元素(CQE),应用层通过
ibv_poll_cq感知发送完成。
HCA的独特价值在于卸载(Offload)能力。CPU只需下发工作请求,实际的数据搬运、包封装、流控、重传均由HCA硬件完成。这为CPU节省了大量中断开销,使得单台服务器可以支撑数百Gbps的通信带宽。
4.3 目标通道适配器(TCA)——存储与专用设备的接入点
TCA在概念上类似于HCA,但服务对象不同。TCA通常嵌入在存储控制器、磁带库或专用加速器中,用于将存储协议(如SCSI、NVMe)映射到IB传输层。TCA不需要像HCA那样承载复杂的操作系统网络协议栈,而是提供一种轻量级的RDMA服务。
在实际部署中,TCA最常见的形态是存储网关或NVMe over Fabrics(NVMe-oF)控制器。例如,一台IB存储阵列通过TCA端口接入IB交换机,计算节点上的HCA可以直接对存储阵列中的内存区域发起RDMA读/写操作,绕过存储服务器的CPU,实现真正的端到端零拷贝。
案例场景:在分布式训练中,参数服务器(PS)节点使用HCA,而高性能存储(如Lustre文件系统的OSS节点)使用TCA。当GPU计算节点需要读取训练样本时,HCA直接通过RDMA从TCA挂载的存储内存中拉取数据,时延可低至1-2微秒,远快于传统的TCP/IP + 本地文件系统路径。
4.4 IB交换机——子网内的“高速立交桥”
IB交换机工作在链路层(Layer 2),其核心职责是依据数据包头部的DLID(目的LID)将数据从入端口转发至正确的出端口。与以太网交换机不同,IB交换机通常采用无阻塞(Non-blocking)设计,即所有端口可以同时以线速转发。
IB交换机引入了虚拟通道(VL)机制,将一条物理链路划分为最多16条逻辑通道(VL0-VL15)。每个VL拥有独立的缓冲区和流控状态,用于隔离不同类型流量。例如,管理流量使用VL15,而数据流量使用VL0-VL14。这种机制有效避免了队头阻塞(HOLB),保障了关键流量的低时延。
交换机的转发决策完全基于线性转发表(LFT),该表由子网管理器(SM)在发现网络拓扑后计算并下发。SM会为每个端口分配唯一的LID,并计算所有可能的最短路径(通常配合自适应路由算法),最终生成LFT。
4.5 IB路由器——连接不同子网的“外交官”
当集群规模超过单个子网的管理能力(通常一个子网最多支持约48,000个节点)或需要跨越长距离连接多个IB子网时,就需要IB路由器。路由器工作在网络层(Layer 3),基于GID进行转发决策。
IB路由器与IP路由器的关键区别在于:
- 寻址粒度:IB路由器转发基于128位GID,而IP路由器基于32位(IPv4)或128位(IPv6)IP地址。
- 路径MTU:IB路由器需要协调不同子网的MTU(最大传输单元),通常IB子网MTU为4096字节,路由器负责分片或丢弃并通知源端。
- 管理域隔离:每个子网有独立的SM,路由器不参与子网管理,仅负责数据包转发。
下图展示了IB体系结构中四类组件的连接关系与数据路径:
4.6 常见误区与设计复盘
误区一:将HCA与TCA混为一谈。虽然两者都提供IB端口,但HCA必须支持完整的verbs接口、内存注册、中断处理等主机语义;而TCA通常只实现必要的RDMA操作,不承载主机协议栈。在选型时,若将TCA用于计算节点,会导致驱动不兼容、性能低下。
误区二:忽略子网管理器的角色。IB交换机本身不具备智能转发能力,所有转发规则必须由SM下发。若SM故障或配置错误,即使物理链路正常,交换机也无法转发任何数据包。在设计中必须部署冗余SM(主备模式)。
设计复盘:在规划一个包含数千节点的IB集群时,建议遵循以下原则:
- 分层设计:采用核心-边缘两层拓扑。边缘交换机连接HCA/TCA,核心交换机负责高速互联。避免单点故障,核心层至少2台。
- 子网划分:当节点数超过数百时,应划分为多个子网,通过路由器互联。每个子网内保持LID路由的简洁性,跨子网流量占比控制在5%以内。
- VL规划:为存储流量、管理流量、MPI通信分配不同的VL,避免相互干扰。
- 性能验证:使用
ib_write_bw、ib_read_lat等工具验证HCA到TCA的实际带宽与时延,确认无PCIe瓶颈或交换机拥塞。
通过以上对HCA、TCA、交换机、路由器的深入剖析,可以看出IB体系结构的核心设计哲学:将智能卸载到端点的HCA/TCA,将转发性能压榨到极致的交换机,将跨域互联交给路由器,并由子网管理器统一编排。这种分工明确的架构,使得IB网络能够同时满足超低时延、超高带宽和极佳的可扩展性要求,成为现代高性能计算与AI训练集群的首选互联方案。