核心术语:HCA、TCA、交换机、子网管理器、LID
InfiniBand(IB)网络中的术语体系与以太网有显著差异。理解这些术语,是后续掌握子网配置、路由计算和性能调优的基础。本节聚焦五个最核心的概念:HCA、TCA、IB交换机、子网管理器(SM)以及LID。它们共同构成了IB子网的基本骨架与寻址逻辑。
核心原理:IB子网的组成单元
一个IB子网(Subnet)由三类物理设备构成:通道适配器(CA)、IB交换机和IB路由器(跨子网互联时使用)。其中,CA根据其所在位置和功能,又细分为HCA与TCA。所有设备都必须通过子网管理器(SM)完成初始化与路径计算,才能开始通信。
关键区分:HCA 与 TCA
- HCA(Host Channel Adapter,主机通道适配器):位于计算节点(服务器)内部,是CPU/内存与IB网络之间的桥梁。它直接通过PCIe总线与主机相连,负责将主机内存中的数据封装为IB数据包发送到网络,或接收网络数据并写入主机内存。HCA支持RDMA(远程直接内存访问),允许远端节点直接读写本机内存,而无需CPU介入数据拷贝。
- TCA(Target Channel Adapter,目标通道适配器):位于存储系统或专用设备(如存储阵列、磁带库)侧,用于将这些设备的I/O接口(如SCSI、FC)转换为IB网络协议。TCA通常不具备完整的RDMA能力,更多承担协议转换与数据搬运的角色。在早期规范中,TCA与HCA的界限较明显,但现代存储控制器多直接集成HCA功能,TCA概念已逐渐淡化。
IB交换机与以太网交换机不同,它不进行IP路由,而是基于LID和QoS(服务质量)信息,在子网管理器预计算的路径表中转发数据包。交换机本身不运行路由协议,所有转发决策均由SM统一下发。
方法流程:子网管理器的工作机制
子网管理器(SM)是整个IB子网的“大脑”。它通常运行在某个HCA上(可以是专用管理节点,也可以是任意一台服务器),负责以下关键流程:
- 发现(Discovery):SM通过发送管理数据包(Subnet Management Packet, SMP),遍历子网中的所有交换机、CA和路由器,构建出完整的拓扑图。
- 分配LID:为每个端口分配唯一的LID。每个端口至少有一个LID,也可以配置多个(用于多路径或特殊服务)。
- 计算路径:基于拓扑和链路状态,使用最短路径算法(如Dijkstra)或更复杂的路由算法(如LASH、DFSSSP),为每对源-目的端口计算转发路径。
- 下发转发表:将计算出的路径表(Linear Forwarding Table, LFT)写入每个交换机的硬件表项中。
- 监控与重配置:持续监控链路状态。当链路断开或新设备加入时,SM会重新执行上述流程,更新LID和路径表。
实操提示:查看LID与SM状态
在Linux服务器上,使用ibstat命令可以查看本机HCA的端口状态与LID:
# ibstat
CA 'mlx5_0'
CA type: MT4123
Number of ports: 1
Port 1:
State: Active
Physical state: LinkUp
Rate: 200 (HDR)
Base LID: 0x2a
LMC: 0
SM lid: 0x1
SL: 0
其中Base LID: 0x2a表示该端口的主LID为42(十进制),SM lid: 0x1表示子网管理器所在端口的LID为1。
案例/场景:一个典型的两节点集群
假设你搭建了一个最小化的IB网络:两台服务器(各带一块HCA)通过一台IB交换机直连。启动过程如下:
| 步骤 | 事件 | 结果 |
|---|---|---|
| 1 | 交换机与两台服务器上电 | 所有端口处于初始化状态,无LID |
| 2 | SM(运行在服务器A上)发送SMP探测 | 发现交换机端口和服务器B的HCA端口 |
| 3 | SM分配LID | 服务器A端口→LID 1,服务器B端口→LID 2,交换机端口→LID 3~8 |
| 4 | SM计算路径并下发转发表 | 交换机中写入:目的LID 1→端口1,目的LID 2→端口2 |
| 5 | 服务器A执行ibping -L 2 |
成功收到来自LID 2的响应,子网通信正常 |
在这个场景中,LID 1和LID 2是数据包转发的唯一依据。当服务器A向服务器B发送数据时,HCA在数据包头部填入目的LID=2,交换机查表后从对应端口发出,整个过程不涉及IP地址。
误区/复盘:常见理解偏差
误区一:将LID等同于IP地址
LID是子网内的本地地址,仅在单个IB子网内有效。跨子网通信必须通过IB路由器,此时使用GID(Global ID,基于IPv6格式)进行寻址。LID不具备全局唯一性,不同子网可以重复使用相同的LID值。
误区二:认为TCA与HCA功能完全相同
虽然现代设备中两者界限模糊,但设计初衷不同:HCA面向主机内存语义,支持RDMA读写操作;TCA面向存储I/O语义,侧重SCSI命令封装。在规划存储网络时,需确认存储控制器是否支持RDMA,否则只能使用SRP(SCSI RDMA Protocol)等协议转换。
误区三:忽略SM的冗余部署
生产环境中,SM必须配置为主备模式(Master/Slave)。当主SM故障时,备用SM需要30~60秒才能接管并重新下发路径表,这期间网络通信会中断。使用smconfig工具可以查看当前SM优先级:
# smconfig -d mlx5_0
SM state: MASTER
SM priority: 12
SM lid: 0x1
建议将两台服务器的SM优先级分别设为12和8,确保快速故障切换。
复盘要点:HCA与TCA解决的是“谁接入网络”的问题,交换机解决“如何转发”的问题,SM解决“转发路径怎么算”的问题,而LID则是这一切寻址动作的“最小单元”。理解这五个术语的协作关系,后续学习分区(Partition)、QoS和自适应路由时才能建立正确的网络模型。