056、InfiniBand架构详解:子网管理器与LID路由
056、InfiniBand架构详解:子网管理器与LID路由一、从一次诡异的“断连”说起去年做某分布式存储项目,集群里128台机器跑IB网络,某天凌晨突然告警:节点A到节点B的RDMA通信间歇性超时。抓包一看,LID居然变了——节点B的LID从0x2a跳到了0x3b,但子网管理器(SM)日志里没有任何重配置记录。当时第一反应是“SM挂了?”,但查了主备SM状态都正常。最后发现是某块HCA卡固件bug,在链路抖动时主动发起了LID重协商,而SM的“快速转发”机制没来得及更新所有交换机的转发表。这个坑让我意识到:InfiniBand的LID路由看似简单,但子网管理器的状态机、LID分配策略、路径计算算法,任何一个环节出问题,都会让RDMA通信变成玄学。今天这篇笔记,就围绕子网管理器(SM)和LID路由这两个核心,把底层逻辑和实战踩过的坑说清楚。二、子网管理器:IB网络的“大脑”但别当它是路由器很多人把SM类比成以太网的DHCP+路由协议,这个比喻只对了一半。SM确实负责分配LID、计算路由表,但它的工作模式是集中式管理+分布式转发——SM只负责“规划”,数据包的转发完全由交换机的线速硬件完成。2.1 SM的三大核心职责LID分配:每个端口(包括HCA和交换机端口)必须有一个16位LID,范围0x0001-0xbfff(0x0000保留,0xc000-0xfffe用于多