1. InfiniBand网络基础:什么是InfiniBand、IB与以太网的区别、IB网络拓扑结构(Fat-Tree)、核心术语(HCA、交换机、子网管理器)

各位同学,咱们今天正式开课。先聊聊InfiniBand到底是什么。

说白了,InfiniBand就是一种高性能互联技术。它不是为了让你上网刷视频用的,而是专门给数据中心、超算集群、AI训练集群准备的。我最早接触IB是在2015年,当时一个金融客户要做高频交易,以太网延迟死活压不下去,换了IB之后,延迟直接从几十微秒降到了微秒级。嗯,那感觉,真叫一个爽。

1.1 什么是InfiniBand

InfiniBand,简称IB,是一种基于通道的、点对点的高速互联技术。它最早由InfiniBand贸易联盟(IBTA)定义,目标就是解决高性能计算场景下的数据传输瓶颈。

你可以把IB想象成一条专用的高速公路。以太网呢,就像城市里的普通马路,什么车都能上,红绿灯多,堵车是常态。IB这条路,只跑高性能计算的数据流,没有红绿灯,车道还特别宽。

我个人习惯把IB的核心特点总结为三点:

  • 高带宽:单端口从SDR的2.5Gbps一路干到NDR的400Gbps,甚至更高
  • 低延迟:端到端延迟可以做到1微秒以内,以太网再努力也难进这个门槛
  • 低CPU开销:IB支持RDMA(远程直接内存访问),数据直接从一台机器的内存搬到另一台,CPU几乎不用管

核心概念:InfiniBand不是一种协议,而是一整套网络架构。它定义了物理层、链路层、网络层、传输层,甚至还有上层协议。说白了,它是个完整的网络生态。

1.2 IB与以太网的区别

很多刚入行的朋友问我:IB和以太网到底差在哪?我一般会反问一句:你见过哪个以太网交换机敢拍胸脯说零丢包?

来,咱们直接看对比:

对比维度 InfiniBand 以太网
设计目标 高性能计算、低延迟 通用互联、兼容性
传输机制 基于通道的点对点 基于包的共享介质
丢包处理 流控机制保证零丢包 丢包后重传,延迟飙升
CPU开销 极低(硬件卸载) 较高(协议栈处理)
延迟 亚微秒级 微秒到毫秒级
成本 较高 较低
生态 专用,但HPC/AI领域成熟 通用,无处不在

你看,以太网为了兼容性牺牲了很多。IB呢,从一开始就奔着极致性能去的。我曾经在一个项目中,把集群从40G以太网迁移到EDR IB(100Gbps),同样的MPI应用,运行时间直接砍了一半。为什么会这样?因为IB的RDMA让数据搬运不再卡在CPU上。

避坑指南:我曾经见过有人拿IB跑普通Web服务,结果发现性能提升不明显。记住,IB是为特定场景设计的——HPC、AI训练、大数据分析。如果你的应用不支持RDMA,那IB的优势就发挥不出来。

1.3 IB网络拓扑结构:Fat-Tree

聊完IB是什么,咱们看看IB网络怎么搭。最常见的拓扑就是Fat-Tree,也叫胖树。

你想想看,传统的树形拓扑有个问题:叶子节点带宽够用,但越往上走,带宽越窄,就像漏斗一样。Fat-Tree的思路正好相反——越往上层,带宽越宽,保证任何两个节点之间的通信都有足够的带宽。

Fat-Tree的核心思想是:

  • 使用相同规格的交换机
  • 通过多级交换机构建无阻塞网络
  • 任何一对节点之间的带宽等于节点本身的端口带宽

举个例子,一个两层的Fat-Tree:

  • 叶子层:连接计算节点(HCA)
  • 脊层:连接叶子交换机
  • 每个叶子交换机上行带宽等于下行带宽,保证无阻塞

我记得有一次给客户设计一个256节点的集群,用的就是两层Fat-Tree。客户问为什么不用三层?我说两层够用,而且延迟更低。你想想看,多一层就多一次转发,延迟就多一截。这个取舍,得看实际需求。

关键点:Fat-Tree的带宽计算公式很简单——上行总带宽 ≥ 下行总带宽。满足这个条件,就是无阻塞网络。

1.4 核心术语:HCA、交换机、子网管理器

好,现在咱们聊聊IB网络里的三个核心角色。

HCA(Host Channel Adapter)

HCA就是IB网络中的网卡。但它和以太网卡完全不是一个物种。HCA内部有专门的硬件引擎,负责处理传输层协议、RDMA操作、数据校验等。CPU只需要把任务交给HCA,剩下的HCA自己搞定。

我习惯把HCA比作一个智能搬运工。你告诉它「把这块内存搬到对面机器」,它自己规划路线、打包数据、发送确认,全程不需要你操心。

常见的HCA型号:

  • ConnectX-5:25/50/100Gbps
  • ConnectX-6:100/200Gbps
  • ConnectX-7:400Gbps

交换机

IB交换机和以太网交换机也不一样。IB交换机内部有专门的转发引擎,支持自适应路由、拥塞控制、多路径等高级功能。而且IB交换机是零丢包的——它通过基于信用的流控机制,确保数据不会因为缓冲区满而丢失。

嗯,这里要注意:IB交换机的端口速率必须匹配。你插一个EDR(100G)的HCA到HDR(200G)的交换机上,只能跑EDR的速率。这个我在项目中踩过坑,买了一批HDR交换机,结果HCA还是EDR的,白白浪费了带宽。

子网管理器(Subnet Manager, SM)

这个可能是IB网络里最容易被忽视的角色。SM负责整个IB子网的管理,包括:

  • 发现网络拓扑
  • 分配LID(本地标识符)
  • 计算路由表
  • 监控链路状态
  • 处理故障切换

SM可以运行在交换机上,也可以运行在独立的服务器上。我一般建议用独立的SM节点,尤其是大型集群。为什么?因为SM的计算量不小,如果跑在交换机上,万一交换机负载高了,SM响应会变慢。

警告:SM是IB网络的单点故障。如果SM挂了,整个子网的路由表就没人维护了。虽然IB有主备SM机制,但切换过程会有短暂的网络中断。生产环境一定要配置冗余SM。

好了,第一节课就到这里。咱们把IB的底子打好了,后面讲多路径路由和负载均衡的时候,你才能理解为什么IB能做到这些而以太网做不到。下一节,咱们聊聊IB的寻址机制和报文格式,这个对理解路由非常关键。