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 秒实验
- 算一下:1X NDR 的单条速率是多少 GB/s?
- 想一下:为什么 RDMA 要求「先注册内存」,不能随手写任意地址?
- 查一下你听说过的超算,它用的是 InfiniBand 还是以太网?
常见误区
- 以为「4X 是第四代」。 4X 是「四条通道」,代际是 SDR/DDR/QDR 这些字母。
- 以为「InfiniBand 赢在带宽」。 同速率下它赢在「CPU 不参与」,带宽只是入场券。
- 以为「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 基本不参与。下一节看有线电视网怎么靠「频道绑定」变成千兆宽带。
- ☐ (本节完,下一节 3.6.12 DOCSIS)