第1章:RoCE物理层基础

各位好,我是老张。在数据中心摸爬滚打了十几年,今天咱们聊聊RoCE网络的物理层基础。说实话,很多人一上来就调PFC、配ECN,结果网络还是丢包——问题往往出在最底层的物理链路上。我见过太多案例,光模块选错、FEC没开对,折腾半天才发现是物理层在捣乱。

这一章,咱们把25G/100G/400G以太网标准、FEC原理、流控机制和光模块选型这些基础打牢。你想想看,地基不稳,上层再花哨也是白搭。

核心观点:RoCE的成功,70%取决于物理层配置是否正确。别不信,我踩过的坑比你想象的多。

RoCE物理层基础 25G/100G/400G标准 FEC原理与配置 802.3x Pause vs PFC 光模块与线缆选型 物理层是RoCE网络的基石,每一层都直接影响RDMA性能

1.1 25G/100G/400G以太网标准

先说速率标准。25G以太网,说白了就是单通道25Gbps的SerDes技术。为什么是25G不是40G?嗯,这里有个故事。40G当时用的是4条10G通道,但25G只用1条就能跑25G,布线简单多了。我个人习惯,25G主要用于服务器接入,性价比高。

100G呢?常见的有两种:4×25G(CAUI-4)和10×10G(CAUI-10)。现在主流是4×25G,因为通道少,功耗低。我记得2018年有个项目,客户非要上10×10G的100G模块,结果光衰大得离谱,后来全换成4×25G才稳定。

400G就更热闹了。8×50G(PAM4调制)是目前的主流。PAM4这玩意儿,说白了就是把信号从0/1变成了00/01/10/11四个电平,带宽直接翻倍。但代价是什么?信噪比变差了,对FEC的要求更高。

速率通道数调制方式典型应用我踩过的坑
25G1×25GNRZ服务器接入线缆长度超过3米就丢包
100G4×25GNRZ汇聚层QSFP28兼容性问题
400G8×50GPAM4核心层FEC必须开RS-FEC

实战建议:25G链路,我建议用DAC线缆,长度别超过5米。超过5米,老老实实上光模块+光纤。别问我怎么知道的——曾经为了省成本,7米DAC线跑25G,误码率高到交换机疯狂报错。

1.2 FEC(前向纠错)原理与配置

FEC,前向纠错。说白了就是发送端在数据里塞一些冗余校验码,接收端发现错误后自己修,不用重传。这对RoCE至关重要——RDMA对丢包零容忍,但物理层偶尔出点小错很正常,FEC就是兜底的。

25G/100G用RS-FEC(Reed-Solomon),400G必须用RS-FEC(544,514)。为什么?因为PAM4的信噪比太差了,不用FEC根本跑不起来。我见过有人把400G链路的FEC关掉,结果丢包率直接飙到10^-4,RDMA根本没法用。

配置FEC,不同厂商命令不一样。我拿思科和华为举个例子:

// 思科 Nexus 9000 系列
interface Ethernet1/1
  fec rs-ieee  // 开启RS-FEC
  speed 100000
  no shutdown

// 华为 CloudEngine 系列
interface 10GE1/0/1
  fec mode rs-fec  // 开启RS-FEC
  speed 100000
  undo shutdown

⚠️ 重要提醒:FEC不是万能的。RS-FEC最多能纠正每544字节中15个符号的错误。如果误码率超过10^-5,FEC也救不了。这时候你得检查光模块、线缆或者连接器是否脏了。

我曾经遇到一个案例:某数据中心400G链路,白天正常,晚上就丢包。查了半天,发现是光模块温度过高导致误码率上升。后来加了散热片,问题解决。你看,物理层的问题往往很「物理」。

1.3 链路层流控:802.3x Pause vs PFC

流控,就是告诉对端「慢点发,我快撑不住了」。传统以太网用802.3x Pause帧,一停全停。但RoCE需要更精细的控制——PFC(Priority Flow Control)就来了。

802.3x Pause:收到Pause帧后,整个端口停止发送。简单粗暴,但有个致命问题:如果端口上同时跑存储流量和普通流量,存储流量也被停了,这会导致存储超时。

PFC(IEEE 802.1Qbb):把流量分成8个优先级,每个优先级独立控制。比如优先级3是RoCE流量,优先级0是普通流量。当RoCE队列快满时,只暂停对端的优先级3,其他优先级照常发。

特性802.3x PausePFC
控制粒度整个端口按优先级(8个)
适用场景传统以太网RoCE、无损网络
死锁风险高(需配合DCB)
配置复杂度简单复杂

我的经验:PFC配置不当会导致PFC死锁——所有交换机都在等对方发数据,结果谁都不发。我曾经在测试环境遇到过,整个存储网络卡死5分钟。后来加了PFC watchdog,超时自动恢复。

配置PFC,以华为交换机为例:

// 华为 CloudEngine 开启PFC
interface 100GE1/0/1
  flow-control buffer  // 开启流控
  priority-flow-control enable  // 开启PFC
  priority-flow-control priority 3  // 对优先级3启用PFC
  qos trust dscp  // 信任DSCP标记

避坑指南:我曾经在项目中遇到PFC风暴——某个优先级被反复暂停/恢复,导致网络吞吐量下降50%。后来发现是接收端buffer太小,频繁触发PFC。解决办法:增大buffer或者降低PFC触发阈值。

1.4 光模块与线缆选型实战

光模块选型,说白了就是匹配速率、距离和成本。我按经验给你列个清单:

  • 25G:短距离(<3米)用DAC线缆,便宜又稳定。3-10米用SR4光模块+多模光纤。超过10米用LR单模。
  • 100G:QSFP28封装。短距用DAC(<3米)或SR4(<100米)。长距用LR4(<10公里)。
  • 400G:QSFP-DD或OSFP封装。主流是SR8(<100米,多模)和DR4(<500米,单模)。

我特别想强调一点:光模块的兼容性。不同厂商的交换机,对光模块的认证机制不同。思科有「Cisco Compatible」认证,华为有「Huawei Certified」。我曾经图便宜买了非认证的100G模块,结果交换机报错「Transceiver not supported」,直接不工作。后来乖乖换原厂模块,多花了30%的钱。

⚠️ 光模块清洁:别小看这个。光模块端面脏了,插损增加2-3dB很正常。我见过一个案例,400G链路误码率高,排查了三天,最后发现是光纤端面有油污。用光纤清洁笔擦一下,问题解决。记住:清洁光纤端面是基本功。

线缆选型,我建议遵循「宁短勿长」原则。DAC线缆超过5米,信号衰减严重。有源光缆(AOC)可以到10-20米,但价格贵。长距离还是用光模块+单模光纤最靠谱。

最后说一句:物理层配置完成后,一定要做误码率测试。用ethtool -S或者交换机自带的诊断工具,看看FEC纠正了多少错误。如果FEC纠正率超过10^-6,说明链路质量有问题,需要排查。

本章小结:物理层是RoCE的命根子。25G/100G/400G选对标准,FEC必须开对类型,流控用PFC别用Pause,光模块别贪便宜。这些基础打好了,上层RoCE才能跑得稳。我见过太多人忽略物理层,结果RDMA性能惨不忍睹——别走他们的老路。


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