📚 第三章 数据链路
📄 一句话概括

InfiniBand 的速率按「条」算,再乘倍数——看到「4X HDR 200G」要会拆。 它比同速率以太网快,快的不在线,在「省掉 CPU 参与」这件事上。

📝 本节和前面几节的关系

3.6.10 的 iSCSI 是「复用现有网」,InfiniBand 是另一个极端:整张网都为存储与计算重建。 它和光纤通道的共同点是「专用」,区别是它连 CPU 之间的通信也管。

一、先学会拆标称

「4X」是「四条通道捆一起」,不是第四代:

代际 单条 Gbps 4X Gbps 12X Gbps
SDR 2.5 10.0 30.0
DDR 5.0 20.0 60.0
QDR 10.0 40.0 120.0
FDR 14.0625 56.2 168.8
EDR 25.0 100.0 300.0
HDR 50.0 200.0 600.0
NDR 100.0 400.0 1200.0

第二列是「一条线的速率」,后两列是「捆几条一起用」:所以 4X HDR 就是 50 乘 4,200 Gbps。 同理 12X NDR 是 1200 Gbps。 名字里的 S/D/Q/F/E/H/N 分别是单/双/四/十四/二十五/五十/一百倍速, 记住这条,看产品型号就不会懵。 第四行那个 14.0625 不是整数,值得单独说:它是 25.78125 Gbaud 经 64B/66B 编码之后的速率。 所以「14X」这个标称是「十四点几」,是被四舍五入出来的名字。 这和 3.6.6 里 16GFC 跑 14.025 Gbaud 是同一件事—— 高速链路的「名字」和「实际」从来不是一一对应的。

二、换算成「一秒搬多少字节」

物理学家看 Gbps,工程师看 GB/s:

配置 Gbps 理论 GB/s 扣开销后
QDR 4X 40.0 5.0 4.5
FDR 4X 56.2 7.0 6.3
EDR 4X 100.0 12.5 11.2
HDR 4X 200.0 25.0 22.5
NDR 4X 400.0 50.0 45.0

第三列除以 8 就是字节数,这一列是「理论值」; 第四列是「实际能搬」,差的那一成是链路编码与包头的开销。 所以「200G InfiniBand」实测大概 22 GB/s,不是 25。 算存储带宽时永远要打这个九折——和 3.6.6 里光纤通道打八折是同一个道理。 注意第五行 NDR 的 400 Gbps:这个数字和「400G 以太网」撞在一起了, 但两者是完全不同的协议,只是巧合地都到了同一个量级。

三、真正的差别在谁负责可靠

这一节最重要的一句话是:它和以太网的差别不在速率,在「谁负责可靠」。

环节 以太网 + TCP InfiniBand
重传 两边 CPU 的协议栈 网卡(RDMA)
数据落哪 先进内核缓冲,再拷到用户 直接写对方内存
CPU 参与 每次都要 基本不用

第一行是关键:普通以太网上丢一个包,要两端的 TCP 栈来发现、重传, 这一路要经过中断、调度、内存拷贝,CPU 全被占着。 InfiniBand 把这套逻辑做进了网卡硬件,叫 RDMA(远程直接内存访问)。 第二行是 RDMA 的字面意思:发送方网卡直接把数据写进接收方进程的内存地址, 两边的操作系统都不参与,也没有「拷贝」这个动作。 所以它的瓶颈不是 CPU,是内存带宽和链路本身。 第三行那个「基本不用」是超算最看重的: 一个几千节点的集群,如果每次通信都占 CPU,算力就被通信吃掉了。 所以「InfiniBand 比同速率以太网快得多」这句话要修正一下: 快的不是线,省的是「CPU 参与」这笔账。

四、动手 Demo:InfiniBand 的「一条通道」有多宽

把七代的「单条速率」乘上 4 和 12,再换算成每秒字节数。 注意 FDR 那一行的 14.0625:这是编码之后的非整数速率。

gens = [('SDR', 2.5), ('DDR', 5.0), ('QDR', 10.0), ('FDR', 14.0625),
        ('EDR', 25.0), ('HDR', 50.0), ('NDR', 100.0)]
for name, lane in gens:
    print('%-5s 单条 %8.4f  4X %8.1f  12X %9.1f'
          % (name, lane, lane * 4, lane * 12))

for name, gbps in (('QDR 4X', 40.0), ('FDR 4X', 56.25), ('EDR 4X', 100.0),
                   ('HDR 4X', 200.0), ('NDR 4X', 400.0)):
    print('%-8s %6.1f Gbps -> %5.1f GB/s(实测约 %5.1f)'
          % (name, gbps, gbps / 8, gbps / 8 * 0.9))

实跑输出:

--------------------------------------------------------------------
InfiniBand 的「一条通道」有多宽
--------------------------------------------------------------------
**InfiniBand 是超算和数据中心里的高速互连。**
**它的速率不是按「端口」说,而是按「条(lane)」说,然后乘倍数。**
**所以看到「4X HDR 200G」这种写法,要会拆。**

  代际     单条 Gbps     4X Gbps     12X Gbps
  --------------------------------------------
  SDR      2.5000        10.0        30.0
  DDR      5.0000        20.0        60.0
  QDR      10.0000       40.0        120.0
  FDR      14.0625       56.2        168.8
  EDR      25.0000       100.0       300.0
  HDR      50.0000       200.0       600.0
  NDR      100.0000      400.0       1200.0

**第二列是「一条线的速率」,第三、四列是「捆几条一起用」。**
**注意 FDR 那个 14.0625,不是整数**——**它是 25.78125 Gbaud 经过 64B/66B 编码后剩下的速率**,
**所以「14X」这个标称其实是「14 点几」。**
**算成「一秒能搬多少字节」更有用**:
  配置       Gbps      GB/s     扣开销后 GB/s
  ----------------------------------------------
  QDR 4X     40.0      5.0       4.5
  FDR 4X     56.2      7.0       6.3
  EDR 4X     100.0     12.5      11.2
  HDR 4X     200.0     25.0      22.5
  NDR 4X     400.0     50.0      45.0

**第三列是「理论值」,第四列是「实际能搬」**:**差的那一成是链路编码与包头的开销。**
**所以「200G InfiniBand」实测大概 22 GB/s 左右,不是 25。**
**InfiniBand 和以太网的关键差别不在速率,在「谁负责可靠」**:
**以太网把重传交给 TCP,InfiniBand 把这个活放进了网卡(叫 RDMA)。**
**结果是「对方的内存直接读写,不经过两边 CPU」。**
**所以超算里它比同速率的以太网快得多**——**快的不是线,省的是「CPU 参与」这件事。**

「4X 就是四条」这件事要说准: 每一条是独立的差分对,四条并行传输,然后在接收端重组成一个流。 所以 4X 不是「四个独立连接」,是「一条更宽的通道」—— 这点和 100VG 的四对并行是同一个思路,也和 3.6.7 的 HIPPI 一脉相承。 RDMA 有个前提条件容易被忽略:「直接写对方内存」意味着双方必须先把内存区域「注册」给网卡, 网卡要知道「这块地址对应哪个物理页」。 所以 RDMA 不是「随手就能用」,它要求程序主动配合—— 这也是它长期只在超算和高端存储里普及的原因。 现在的趋势是「RDMA 走出超算」:RoCE(在以太网上做 RDMA)、iWARP 都是这个方向。 但以太网会丢包,而 RDMA 对丢包极其敏感(一丢就退化成软件重传), 所以 RoCE 部署时必须配「无损以太网」——绕了一圈,又回到了「不丢包」这个老要求上。

30 秒实验

  1. 算一下:1X NDR 的单条速率是多少 GB/s?
  2. 想一下:为什么 RDMA 要求「先注册内存」,不能随手写任意地址?
  3. 查一下你听说过的超算,它用的是 InfiniBand 还是以太网?

常见误区

  1. 以为「4X 是第四代」。 4X 是「四条通道」,代际是 SDR/DDR/QDR 这些字母。
  2. 以为「InfiniBand 赢在带宽」。 同速率下它赢在「CPU 不参与」,带宽只是入场券。
  3. 以为「RDMA 可以随便用」。 双方要先注册内存区域,程序不改就用不上。
自测三问(点开对答案) 1. 「4X HDR」是多少 Gbps? —— **HDR 单条 50 Gbps,4X 就是 200 Gbps**,实测约 22 GB/s。 2. 为什么 FDR 的单条速率是 14.0625 这种怪数? —— **它是 25.78125 Gbaud 经 64B/66B 编码后的结果**,名字取了近似值「14X」。 3. InfiniBand 比以太网快在哪? —— **可靠传输和内存访问都交给网卡(RDMA)**,数据直接写对方内存,CPU 基本不参与。

下一节看有线电视网怎么靠「频道绑定」变成千兆宽带。

相关笔记