一、IB网络基础回顾:InfiniBand架构概述、链路层与网络层、子网管理器(SM)角色

各位同学,咱们今天先不急着上手配多路径。做网络的人都知道,基础不牢,地动山摇。InfiniBand这东西,说白了就是为高性能计算量身定做的互联技术。我最早接触IB是在一个超算项目里,当时客户要求延迟低于1微秒,以太网怎么调都差口气,换了IB才搞定。嗯,咱们就从最核心的架构说起。

1.1 InfiniBand架构概述

IB网络的核心思想,就是把计算节点、存储设备和网络设备通过高速通道连起来。它不像以太网那样分层复杂,而是走了一条「精简高效」的路子。

我个人习惯把IB架构拆成三块来看:

  • 端节点(HCA):就是服务器上的IB网卡,负责把数据从主机内存搬到网络上。我记得第一次调HCA参数时,发现它的DMA引擎比CPU搬运快了一个数量级。
  • 交换节点(Switch):负责数据转发,不参与计算。IB交换机比以太网交换机简单,因为它不需要处理复杂的路由协议。
  • 链路(Link):物理连接,常见的有4x和12x两种宽度,速率从SDR到NDR一路升级。

关键点:IB网络是通道导向的,数据在发送前先建立一条逻辑通道(QP),后续所有报文都走这条通道。这跟以太网的「无连接」模式完全不同。

你想想看,为什么HPC领域都爱用IB?因为它的RDMA机制让数据可以直接从一台机器的内存搬到另一台,完全绕过CPU。我在项目中见过,同样的MPI程序,用IB比用TCP快了三倍以上。

1.2 链路层与网络层

IB协议栈分两层:链路层和网络层。很多人搞混,我简单说说。

链路层(Link Layer)

链路层负责同一子网内的数据传输。它定义了:

  • LID(Local Identifier):16位地址,由子网管理器分配。每个端口一个LID,类似以太网的MAC地址。
  • 数据包格式:IB包有LRH(本地路由头),里面包含源LID和目的LID。
  • 流控机制:基于信用的流控,防止丢包。我曾经遇到过一个问题,交换机缓冲区配小了,导致性能上不去,调大信用值就解决了。

网络层(Network Layer)

网络层负责跨子网的通信。它引入了:

  • GID(Global Identifier):128位地址,基于IPv6格式。说白了就是跨子网时用的「门牌号」。
  • GRH(Global Routing Header):当数据需要跨子网时,才带上这个头。

避坑指南:我曾经在配置多子网时,忘了给HCA分配GID,结果跨子网通信死活不通。后来查了半天,发现是SM没配好全局路由。记住:同子网用LID,跨子网必须用GID。

这里有个对比表格,方便你理解:

层次 地址类型 作用范围 典型应用
链路层 LID(16位) 同一子网 单子网内通信
网络层 GID(128位) 跨子网 多子网互联

1.3 子网管理器(SM)角色

SM是IB网络的「大脑」。没有它,IB网络就是一盘散沙。我刚开始学IB时,觉得SM就是个配置工具,后来才发现它干的活远不止这些。

SM的核心职责包括:

  • 发现拓扑:SM通过SMP(子网管理包)扫描所有节点和交换机,构建出完整的网络拓扑图。
  • 分配LID:给每个端口分配唯一的LID。我记得有一次SM挂了,所有端口LID丢失,整个网络直接瘫痪。
  • 计算路由:根据拓扑和策略,计算出最优路径。这就是多路径路由的基础。
  • 监控状态:实时检测链路状态,发现故障后重新计算路由。

注意:SM可以运行在交换机上,也可以运行在主机上。生产环境中,我建议至少部署主备两个SM。主SM挂了,备SM能立刻接管。我曾经见过一个客户只配了一个SM,交换机重启后网络起不来,折腾了两小时。

SM的工作流程大致是这样的:

  1. 启动后,SM发送SMP包发现所有设备。
  2. 收集完拓扑后,SM计算路由表。
  3. 将路由表下发到每个交换机的转发引擎。
  4. 持续监控,如果链路变化,重新计算并下发。

你想想看,为什么SM这么重要?因为IB的转发是无状态的,交换机不维护连接状态,全靠SM下发的转发表。一旦SM出问题,交换机就不知道把数据往哪送了。

核心结论:SM决定了IB网络的可用性性能。多路径路由的优化,本质上就是让SM算出一条更聪明的路。

本章知识体系图

下面这张图展示了IB网络的核心层次和SM的角色定位,我手绘的,凑合看:

InfiniBand 核心架构与SM角色 应用层(ULP) MPI、SRP、iSER、IPoIB 等上层协议 传输层(Transport Layer) QP、CQ、SRQ、RC/UC/UD 传输服务 网络层(Network Layer) GID、GRH、跨子网路由 链路层(Link Layer) LID、LRH、流控、子网内通信 子网管理器 (SM) 拓扑发现 LID分配 路由计算 状态监控 故障恢复 IB协议栈层次 SM 贯穿链路层和网络层,负责整个子网的管理与路由决策

这张图里,SM横跨链路层和网络层,因为它既要管LID分配(链路层),又要管跨子网路由(网络层)。说白了,SM就是IB网络的「总管家」。

个人经验:我建议你在学习多路径路由之前,先搞清楚SM的工作机制。因为多路径的本质,就是让SM在计算路由时,不再只走一条最短路径,而是把流量分散到多条等价路径上。后面几章我们会详细展开。

好了,基础就回顾到这里。记住三个核心点:IB是通道导向的、链路层用LID网络层用GID、SM是网络的大脑。这些概念后面会反复用到。


公众号:蓝海资料掘金营,微信deep3321