1 高速互联要理解什么
打开服务器机箱,能看到 CPU 插槽、内存条、固态硬盘和网卡。它们的标称能力往往分别写在规格表里:CPU 有多少核心,内存容量是多少,SSD 顺序读取有多快,网卡支持多少 Gb/s。程序却必须让数据穿过这些部件之间的连接,才能把能力变成工作结果。高速互联研究的正是这些连接怎样传数据、怎样维持可靠,以及多条连接同时工作时为什么会互相等待。
设想 1 台双路服务器:每颗 CPU 连接自己的内存,1 张网卡接在其中 1 颗 CPU 提供的 PCIe 插槽上,若干 NVMe SSD 经过背板接入。网卡收到的数据可能先写进本地内存,也可能被运行在另 1 颗 CPU 上的程序读取。后者还要经过处理器之间的互联。网口显示 100 Gb/s,只能说明网络侧的某项能力;插槽带宽、内存访问路径、CPU 处理能力和存储速度仍可能限制最终吞吐量。
先建立 3 个概念。速率说明单位时间内能传多少信息;带宽通常表示链路或路径的传输能力;吞吐量表示某次实际运行完成了多少传输。应用有效带宽进一步只计算业务真正使用的数据,不把协议头、重复发送和等待算成收益。延迟则回答数据从发出到可用需要多久。大文件复制可能更关心持续吞吐量,小消息协作可能更关心延迟及其波动,不能用同 1 个指标替代所有体验。
单位也必须先对齐。小写 b 表示 bit,大写 B 表示 byte,1 B 等于 8 bit。100 Gb/s 按十进制换算为 12.5 GB/s,这只是位速率换成字节速率,还没有扣除各种开销。PCIe 常用 GT/s 表示传输率,不能直接当作 GB/s。例如 PCIe 4.0 每条通道为 16 GT/s,采用 128b/130b 编码;x8 链路单方向经编码折算约为 15.75 GB/s,实际承载的数据还要扣除事务等开销。

内存总线、PCIe、以太网和处理器互联的规则不同,本课不会把它们当作同 1 种接口。它们共同提示我们:看性能时应沿数据路径逐段检查。1 台机架服务器、1 台高密度节点和通过扩展机箱连接存储的服务器,即使 CPU 型号相近,也可能因为插槽位置、背板连接和上行共享关系得到不同结果。后文以 PCIe 与以太网为主要例子,学会读懂“协商到什么状态、在哪里等待、哪些数据重传”这条证据链。
2 SerDes、链路训练与误码
在较低速的连接中,可以让多根导线同时传送不同位。速度提高后,导线之间的到达时间差、串扰和布线难度会变得突出。许多高速接口采用串行传输,通过 SerDes,也就是串行器与解串器,把内部并行数据变成高速串行信号,再在接收端恢复。串行并不意味着整条连接只有 1 根线;接口可以把多条通道组合起来,PCIe 的 x4、x8、x16 就表示不同通道数量。
发送端输出的电信号经过芯片封装、主板走线、连接器,有时还要经过背板和线缆,才到达接收端。这个完整介质路径称为通道。频率越高,衰减、反射和串扰越难忽略,接收端看到的波形也越不像理想方波。发送端和接收端会使用一定的信号调整能力改善判决条件,但这些能力有范围,无法把任意长度、任意质量的通道都变成合格通道。
设备插好后通常不会立即以最高速率传输业务。双方要完成检测、建立连接,并按接口规定协调运行参数。以 PCIe 为例,链路训练涉及速率、通道宽度及相关调整;双方能力、插槽实际布线和信号条件都会影响结果。1 张支持 PCIe 4.0 x8 的网卡,装进外形为 x16、实际只接 x4 的插槽,最多只能使用已连接的通道。槽长不能代替电气规格,训练也不能凭空增加走线。

误码是接收的数据位与发送内容不一致。误码率描述出错位数相对传输位数的比例,通常需要足够长的观察时间才有意义。高速链路即使误码比例很低,长时间传送大量数据也可能遇到错误。协议因此会设置检错机制,有些接口还使用前向纠错,即 FEC,利用附加冗余恢复一定范围内的错误。可纠正错误、不可纠正错误与协议重传是不同事件,计数器不能混为 1 个数。
检错失败后的动作取决于协议。PCIe 可以在链路层进行重放;以太网帧校验失败时,坏帧通常被丢弃,后续是否重传由上层传输机制决定,TCP 就有自己的恢复过程。因此“网卡发生重传”必须说清是在读哪个层次的指标。一次丢包可能来自物理错误,也可能来自队列溢出,只看 TCP 重传无法定位线缆。可靠传输不等于没有错误,而是系统能发现错误、按规则恢复,并让恢复成本处于可接受范围。
观察交互中的正常路径:先确认两端能力,再建立稳定链路,最后把数据交给接收方。随后打开错误情境,比较纠错成功、检错失败与恢复等待。这里先理解每个阶段解决什么问题,不要求记忆训练状态机、均衡算法或物理编码细节。遇到接口代际变化时,应重新查对应规范,不能把某代 PCIe 的编码效率或某类以太网的 FEC 设置推广到所有接口。
3 拓扑与拥塞管理
链路通了,不代表所有数据都能同时按满速通过。拓扑描述设备如何连接,决定哪些路径共享资源。主板上的多个插槽可能来自同 1 组 CPU 通道,也可能经过 PCIe 交换芯片汇聚;存储背板可能让多个盘共享上行;网络交换机的多个下行口则可能汇入较少的上行口。判断瓶颈时,要画出设备之间的实际连接,把“每个端口多快”和“共同出口多宽”分别标明。
假设 4 台服务器各用 100 Gb/s 下行连接同 1 台交换机,但它们前往另 1 个机架只有 1 条 100 Gb/s 上行。若 4 台同时向外发送,需求可达 400 Gb/s,上行能力却只有 100 Gb/s,这个方向的带宽超售比为 4:1。若流量主要发生在本机架内,结果又不同。因此超售比必须附带流量方向和业务同时性,不能只看端口数量就判断网络能否承载任务。
拥塞发生在到达某处的数据速度持续超过离开速度时。缓冲区可以吸收短暂突发,不能永久填补速率缺口。队列积累后,数据需要等待,延迟上升;缓冲区用尽后,设备可能丢包,或按协议采取反压、拥塞反馈等措施。流量控制让接收方或下游有能力接住数据,拥塞控制则试图调节发送负荷以适应路径容量。两者有关联,却不能认为“打开流控”就能消除所有拥塞。
考虑 1 台汇总服务器同时接收多台工作节点的结果。每台节点平均速率都不高,但在同 1 时刻集中发送,汇总端口仍可能出现短暂拥塞。这种多对一的突发在分布式计算中很常见。只保存 1 分钟平均吞吐量可能看不出问题,因为队列可以在很短时间内积累并排空。需要结合任务完成时间、较高分位延迟、丢包和队列指标,判断平均值背后是否藏着等待。

服务器内部也有类似关系。网卡与多个 SSD 若共享较窄的 PCIe 上行,单独测试每个设备都可能达标,并发测试却相互挤占。双路系统中,让网卡附近的 CPU 和内存承担收发工作,通常能减少不必要的跨插槽访问,但具体效果仍需测量。拓扑优化的出发点是缩短必要路径、减少共享出口压力,不是默认所有远端访问都不可接受。把位置、方向和并发条件写清楚,性能数字才可以比较。
4 动手:对照一次链路降速事件
下面对照 1 次可复现的 PCIe 降速事件。测试服务器安装 1 张支持 PCIe 4.0 x8 的 100 Gb/s 网卡,固定连接同 1 台对端。正常记录显示链路为 16 GT/s、宽度 x8;某次维护后变为 8 GT/s、宽度仍为 x8。此时操作系统还能识别网卡,网络也能连通,但 PCIe 编码折算后的单方向能力约从 15.75 GB/s 降到 7.88 GB/s。它已经不足以承载接近 12.5 GB/s 的单方向网络数据,实际限制还会更低。
先建立正常基线。记录服务器形态、CPU 与插槽归属、网卡所在槽位、固件和驱动版本、测试方向、报文大小及并发数。在维护窗口内使用获准的测试对端,避免把链路压测混入正常业务。网络测试应让内存作为数据源和接收位置,尽量排除磁盘速度影响;同时保留应用实际负载的结果,前者帮助隔离传输路径,后者说明业务受到多少影响。
在 Linux 上,先用 lspci -D 确认设备地址,再对目标执行如 lspci -s 0000:41:00.0 -vv 的只读查询。地址只是示例,应替换为实际设备。重点比较 LnkCap 的能力与 LnkSta 的当前状态,查看速率和宽度;部分字段需要相应权限才能完整显示。记录时不要只抄“支持第 4 代”,应同时写下当前为多少 GT/s、多少条通道,以及上游端口状态。
随后查看内核日志中的 PCIe、AER 和链路相关事件,并用 ip -s link show dev eth0 与 ethtool -S eth0 观察网络接口统计。接口名按实际环境替换,不同驱动提供的计数器名称和含义可能不同。计数器常从设备初始化后累计,应在同 1 次测试开始和结束时分别取值,再比较增量。某个历史错误总数很大,并不能证明当前这 30 秒仍在出错;没有某项统计也不能证明错误不存在。
接着把故障前后放在同 1 张记录表中:网络端口是否仍为 100 Gb/s,PCIe 是否从 16 GT/s 降到 8 GT/s,吞吐量下降是否与之同时出现,CPU 是否饱和,丢包与错误是否增长。如果网络侧未变,而 PCIe 降速且吞吐量形成新的平台,便有理由优先检查插槽、转接卡和板级连接。这个判断仍是定位方向,需要后续替换或恢复实验确认原因。

最后由具备维护条件的人员在停机断电后检查接触、转接卡安装和平台支持情况,按维护规范重新安装或替换已知合格部件。不要带电拔插未声明支持热插拔的设备,也不要靠强制最高速率掩盖问题。每次只改变 1 个因素,恢复后复测相同负载。若训练回到 16 GT/s x8、错误增量恢复正常且吞吐量回升,证据才开始闭合;仅重启后暂时变快,还不能断言故障已排除。
5 速率与可靠性取舍
提高链路速率可以增加单位时间的承载量,也会提高对通道质量和器件能力的要求。更高代际接口往往需要更严格的走线、连接器、线缆和信号处理设计,这些都可能影响功耗、成本和可维护性。工程选择应回答:在预期温度、实际布线长度和目标负载下,链路能否长期提供所需有效带宽。只在实验台上跑出短时峰值,不能替代机架内的持续运行结果。
理解有效带宽,可以先做 1 个刻意简化的模型。设原始速率为 R,协议及编码后保留下来的比例为 η,首次发送需要恢复的数据比例为 p;假设每份失败数据只补发 1 次,且暂不计恢复等待,则有效带宽约为 R×η÷(1+p)。例如 R 为 100 Gb/s、η 为 0.94、p 为 0.05,模型得到约 89.5 Gb/s。它显示重复数据会占用容量,但这里的 p 是数据份额,绝不是物理误码率。
移动滑块,先固定恢复比例,只改变原始速率;再固定原始速率,逐步增加恢复比例。观察原始能力和有效收益为何分开。这个模型没有模拟多次失败、确认等待、拥塞控制、突发流量或 CPU 开销,也不能据此预测真实网卡性能。在真实 TCP 传输中,丢包可能引发等待或发送速率下降,吞吐量损失会超过补发数据本身占用的带宽。用模型解释方向,用实测确定容量。
FEC 同样体现取舍。增加冗余能在一定条件下纠正错误,但需要相应的编码开销和处理,纠正能力也有限。某些接口模式有规定的 FEC 要求,不能任意关闭。比较方案时应确认两端兼容、实际协商模式和对应统计含义,不能把“纠错次数为 0”直接视为最佳结果,也不能认为“能纠正”就允许错误持续增长。错误趋势可能提示链路余量正在缩小。
降低速率有时能让边缘通道稳定下来,可作为诊断手段或有记录的临时处置;它也会削减容量,必须重新核算并发任务是否仍能完成。长期方案可能需要缩短链路、更换合格线缆、调整插槽或改善平台连接。速度、可靠性与成本的平衡应以服务目标为依据:持续大流量任务需要稳定吞吐量,交互任务还需要关注恢复导致的尾部延迟。不能用平均带宽掩盖偶发的长时间停顿。
6 常见坑:线缆质量被忽视
高速链路的线缆不是被动到可以忽略的附件。接口外形相同,只说明机械连接可能匹配,不保证支持同样的速率、长度和工作模式。铜缆、光模块加光纤、板间连接分别有自己的适用范围;端口还可能对线缆类型、功耗和模式有要求。采购和验收应核对完整组件的规格与兼容性,不能只写“某接口线 1 根”。长度也要记录,走线绕行后实际距离可能超过最初估计。
常见现场问题包括连接器未完全就位、光纤端面污染、线缆过度弯折、拉力集中在插头,以及机箱内部转接结构接触不良。有些故障立即导致掉链,有些只在高负载、温度变化或轻微位移后显现。链路灯亮表明连接已建立,不能证明误码率满足要求;空闲时连通也不能证明持续传输可靠。排查时应同时记录负载、温度和发生时间,避免把环境变化误判为随机软件问题。
另 1 个坑是把所有线缆都换过一遍,却没有保存对应关系。现场应为端口和线缆设置清晰标识,记录原连接、替换件及测试结果。以同规格、已知合格的组件做单变量替换:只换线缆后故障是否消失,把可疑线缆放到允许的测试路径后现象是否跟随。这个过程比“重新插好后正常”更有解释力;后者同时改变了接触状态和安装位置,难以确认具体原因。
清洁、插拔和布线应遵循设备维护规范,光接口不能用肉眼直视判断是否发光。对无热插拔支持的内部部件,安排停机维护。恢复服务后还要完成持续负载复测,因为低流量验证无法覆盖原先触发错误的条件。线缆质量问题的核心教训是:端点芯片能力只是路径的一部分,连接器、介质和安装方式也必须进入配置清单、验收记录与备件策略。
7 案例:误码重传拖垮有效带宽
某机架使用 100 Gb/s 以太网传送计算结果,正常时在固定测试条件下达到约 91 Gb/s 的 TCP 有效吞吐量。维护布线后,同样的任务只剩约 58 Gb/s,完成时间明显拉长。网口仍显示 100 Gb/s,PCIe 仍为 16 GT/s x8,CPU 也未饱和。若只检查协商速率,容易把问题归因于应用;实际上,协商状态只说明当前模式,没有说明在这个模式下传得是否可靠。
排查人员在相同的 60 秒窗口内采样,发现接收端物理层不可纠正错误和帧校验错误增加,发送端 TCP 重传也增加,而交换机相关出口没有持续拥塞的明显证据。应分别解释这些指标:物理层错误提示信号恢复存在问题,坏帧可能被丢弃,TCP 发现数据缺失后执行恢复。它们在时间上对应,加强了物理路径可疑的判断,但不能把计数器逐项相加,也不能声称每个错误都恰好产生 1 次 TCP 重传。
交互把故障展开为连续过程:信号受损,部分错误超过纠正能力,坏帧被丢弃,上层出现数据缺口,发送方进入恢复,应用等待完整数据。网络的原始位速率没有下降,真正有效的数据却减少了。重传会占用链路,恢复等待还可能使发送端无法持续填满链路,因此损失并非只等于重复发送的字节比例。接收方即使已有后续数据,也可能仍需等待缺失部分才能向应用交付连续字节流。
为验证判断,团队保持端口、对端、测试方向和软件设置不变,只替换可疑线缆组件。复测中错误增量恢复到正常基线,TCP 重传显著减少,吞吐量回到约 91 Gb/s。随后延长测试时间,并覆盖与故障接近的温度及布线状态,确认结果稳定。这是教学案例中的测量值,不是所有 100 Gb/s 链路都应达到的固定标准;真实基线随报文、协议和平台能力变化。
如果替换后错误没有变化,下一步应检查模块、端口及设备侧连接,而不是继续认定线缆有问题。如果物理错误始终正常,却出现出口丢包和队列积累,应转向拥塞路径。案例的可迁移方法是把现象、分层指标、单变量操作和恢复结果连接起来。重传是重要线索,但它本身既不是物理层故障证明,也不是直接更换网卡的依据。
8 把互联指标写进机房方案
机房方案需要从业务的数据流开始。先写明哪些节点之间通信、数据来自内存还是存储、典型块大小、同时活跃的节点数量,以及完成时间要求。持续备份与多节点同步计算会形成不同的流量形态。对于 1 个每天传送大量数据的任务,除了日均流量,还要说明允许传输的时间窗口;对于集中汇总结果的任务,则要估计多对一的峰值和短时突发。这样才能判断需要多少出口容量。
其次画出服务器内部和机架之间的连接。标明网卡与 SSD 的 PCIe 代际、实际宽度、上游共享关系、CPU 归属,以及交换机下行和上行能力。采购表写“支持 PCIe 4.0”仍不够,因为设备装到不同槽位可能得到不同宽度。扩展机箱、转接卡和背板也应列入路径。若采用高密度服务器,还要确认节点之间是否共享某些出口,避免把机箱级能力重复计入每个节点。
验收指标应同时覆盖能力、可靠性和体验。能力包括实际协商速率、宽度,以及规定负载下的持续有效吞吐量;可靠性包括链路重建、错误增量和异常恢复;体验包括任务完成时间和适用场景下的较高分位延迟。每项指标都要绑定测试时长、方向、报文大小、并发数和采样位置。错误阈值应依据接口规范、设备说明和实测基线确定,不应给所有类型的链路套用同 1 个数。
最后明确维护后的复验要求。更换线缆、调整槽位、更新固件或改变布线,可能改变原有基线,应保留变更前后的结果。监控既要能发现吞吐量下降,也要能发现错误趋势和速率变化。容量预留则应写清用于增长、突发还是故障后的流量转移,不能只给 1 个没有解释的百分比。可执行的方案能让维护人员知道看哪里、怎样复现,以及什么时候需要回退或扩容。
9 从高速互联走向RDMA 原理(H42)
到这里,已经可以把“数据传得慢”拆成不同问题:物理通道不稳定,链路协商降级,多设备共享出口,或协议恢复与处理开销偏高。它们可能同时出现,也可能只有其中 1 项成为限制。先分层测量,再决定改哪里。若当前瓶颈在 PCIe 上行,单纯提高网络端口速率未必有收益;若瓶颈在持续误码,增加应用并发甚至可能让恢复负担更重。
接下来会遇到另 1 类问题:即使链路稳定、容量足够,数据在主机中的处理与搬运仍会消耗 CPU 时间,并影响通信延迟。RDMA 即远程直接内存访问,允许网卡在规定的权限和协议约束下访问已准备好的内存区域,减少部分传统通信路径中的软件处理和数据复制。它依赖主机、网卡、内存及网络协同,不是简单地把网线换快,也不意味着所有操作都不需要 CPU。
H42 将解释应用如何准备内存、提交通信操作、获知完成,以及这些步骤如何组成可控的数据交换。本课先保留边界:RDMA 仍要经过 PCIe 和网络,仍受内存带宽、拓扑、拥塞与物理错误影响。某些部署还对网络行为有特定要求,但不能由“低延迟”直接推导出所有场景都应启用同样的流控。相关机制留到后续课程结合具体传输方式展开。
进入下一课前,试着口头回答:100 Gb/s 网口为什么不保证应用得到 12.5 GB/s;PCIe 设备能力与当前状态为什么要分别记录;多个正常端口为何会在共同上行处排队;TCP 重传增加时还需要哪些证据。能沿“介质与训练—拓扑与排队—恢复与应用”解释这些问题,就具备了理解 RDMA 的基础,也能避免把高级通信机制当成修复基础链路问题的替代品。
放进方案里
为 1 个由 8 台计算节点和 1 台汇总服务器组成的机架编写互联条款。节点通过 100 Gb/s 网络提交结果,汇总服务器配有 100 Gb/s 网卡和 NVMe 存储。先声明同时发送节点数、每轮结果大小与完成时间要求,并分别测试内存接收和落盘接收。前者建立网络传输基线,后者核实存储路径能否跟上,避免把磁盘等待全部记到网络头上。
配置表要写出网卡的 PCIe 代际、实际通道宽度与所在 CPU,列出 SSD 是否共享上行,补充交换机汇总端口容量、线缆类型和长度。若 8 台节点同时向 1 个 100 Gb/s 端口发送,必须按共同出口核算总完成时间,不能将节点端口速率相加后作为汇总能力。若业务要求超过该出口能力,应调整通信安排或增加相应容量。
验收时记录协商状态、固定负载下的有效吞吐量、任务完成时间,以及同时间窗口内的错误和丢包增量。吞吐量目标来自试运行基线与业务需要,并注明测试方向、并发数和持续时间。可靠性条款要求异常降速、链路重建和错误增长均可追踪;具体阈值按接口模式和设备要求确定。单次峰值通过不能替代持续负载验收。留存网卡及上游端口的链路状态、交换机出口统计和接收端计数器原始记录,统一采样起止时间。若内存接收达标而落盘超时,应判定落盘路径未通过,分别核查 SSD 持续写入与共享 PCIe 上行,不能据网络单项通过签收整条路径。
运行条款保留正常连接图与计数器基线,准备同规格合格备件。故障时依次检查当前状态、错误趋势、共享出口和主机负载,在维护条件下做单变量替换,之后按原负载复验。若临时降速恢复稳定,应记录容量损失、适用期限与恢复计划。交付物由此包含配置、容量、测量条件和处置步骤,后续引入 RDMA 时也能沿用这些基础证据。
10 小结:下一步RDMA 原理(H42)
高速互联需要同时看物理通道、训练结果、共享拓扑和协议恢复。规格给出能力边界,持续有效带宽与延迟体现实际结果,分层计数器帮助定位差距。线缆、背板和插槽都属于数据路径,必须进入验收与维护范围。
自测:1 张 PCIe 4.0 x8 网卡当前只运行在 8 GT/s x8,会怎样影响 100 Gb/s 网络测试?若链路状态正常却重传增加,如何区分物理错误与拥塞?下一课 H42 将在这条已建立的硬件路径上,解释 RDMA 如何组织内存访问与通信完成。