2. InfiniBand协议栈与硬件架构解析
InfiniBand(IB)之所以能在HPC、AI训练集群中提供微秒级时延与数百Gb/s的吞吐,根本原因在于它把网络功能下沉到了硬件,并用一套分层清晰、职责明确的协议栈来组织这些功能。理解IB,不能只记住“它很快”,而要看清每一层到底负责什么、由谁实现、以及硬件在哪些环节决定了性能上限。
四层协议栈:从比特到消息
IB协议栈自下而上分为物理层、链路层、网络层和传输层,各层职责边界清晰,且大量功能由HCA(Host Channel Adapter,主机通道适配器)和交换机芯片硬件实现,而非软件协议栈。
物理层负责比特传输,定义电气/光信号特性、编码方式、通道速率与链路宽度。IB采用8b/10b(早期)或64b/66b(HDR/NDR)编码,通过多通道(Lane)并行聚合提升带宽。例如4x表示4条通道聚合,NDR单通道约50Gb/s,4x即200Gb/s,12x可达600Gb/s。物理层还负责链路训练、通道对齐与去偏斜(de-skew),这是信号完整性最直接的体现层。
链路层负责单跳(hop-by-hop)的可靠传输。它把数据封装成链路层包,加入LRH(Local Route Header)用于本地寻址,并实现基于信用的流控(Credit-Based Flow Control)——接收方按缓冲区容量授予信用,发送方只有拿到信用才能发,从根本上避免丢包。链路层还负责CRC校验、包重传和虚拟通道(VL)仲裁,是IB“无损网络”特性的第一道保障。
网络层负责跨子网的多跳路由。它使用GRH(Global Route Header)承载全局地址,通过LID(Local Identifier)在子网内寻址,并由交换机依据转发表逐跳转发。IB支持自适应路由(Adaptive Routing),可在多条等价路径间动态分散流量,缓解拥塞。子网管理器(SM)负责计算并下发转发表,是网络层控制平面的核心。
传输层负责端到端的消息传递语义。它定义QP(Queue Pair,队列对),由发送队列SQ和接收队列RQ组成,是通信的基本单位。传输层支持RC(可靠连接)、UC(不可靠连接)、UD(不可靠数据报)等服务类型,其中RC提供可靠、有序、基于连接的消息传输,是RDMA的主力。传输层还处理消息分段与重组、应答(ACK/NAK)和重传,把“消息”这一高层语义可靠地映射到下层包传输上。
硬件组成:谁在实现这些层
HCA是主机侧的核心硬件,它把传输层、链路层和物理层的大部分功能集成在芯片内。HCA通过PCIe与主机相连,内部包含QP引擎、DMA引擎、包处理流水线和SerDes。当应用发起RDMA操作时,HCA直接从用户态内存取数据、封装成IB包并发送,全程绕过内核协议栈和CPU拷贝,这正是IB低时延、低CPU占用的根源。HCA的QP数量、缓存深度和PCIe代际(如PCIe 4.0/5.0 x16)直接决定单卡吞吐上限。
IB交换机主要实现链路层和物理层功能。它接收包后依据LRH中的目的LID查转发表,完成端口到端口的转发,同时执行信用流控和VL仲裁。交换机芯片的缓冲容量、端口密度和转发时延是关键指标。与以太网交换机不同,IB交换机通常不实现网络层路由决策(由SM集中计算),这降低了芯片复杂度,也保证了转发路径的确定性。
线缆与光模块属于物理层介质。短距离(机柜内)常用DAC无源铜缆,成本低、时延小,但受插入损耗限制,NDR 4x铜缆通常不超过3米;中长距离用AOC有源光缆或光模块加光纤,可达数十米至数百米。选择介质时必须匹配速率(HDR/NDR)、通道数(4x/12x)和接口类型(QSFP56/QSFP112/OSFP),否则链路无法训练成功。
信号完整性:物理层的硬约束
IB速率越高,物理层越“娇气”。信号完整性主要关注四点:插入损耗随频率和距离增大,超过预算则眼图闭合;回损由阻抗不匹配引起,连接器脏污或弯折会显著恶化;串扰来自相邻通道,多Lane并行时更明显;偏斜指各Lane到达时间不一致,物理层需通过去偏斜对齐。工程上,链路能否起来可通过iblinkinfo查看速率与宽度,用perfquery观察误码与符号错误计数。若链路降速或频繁重训,应优先检查线缆长度、光模块兼容性和连接器清洁度。
iblinkinfo,确认所有端口显示预期速率(如NDR 4x=200Gb/s)且状态为Active;再用 perfquery -x 查看PortXmitData与PortRcvData是否持续增长,若SymbolErrorCounter或LinkErrorRecoveryCounter异常上升,说明物理层存在问题。把四层协议栈与硬件对应起来看,就能理解IB性能的来源:传输层和链路层的可靠机制由HCA与交换机硬件承担,网络层路由由SM集中控制,物理层则由线缆、光模块和SerDes共同保证信号质量。任何一层出问题,都会以链路降速、误码或时延抖动的方式暴露出来,而排查的起点,永远是先确认物理层链路是否真正健康。