第1章:RoCE物理层基础
各位好,我是老张。在数据中心摸爬滚打了十几年,今天咱们聊聊RoCE网络的物理层基础。说实话,很多人一上来就调PFC、配ECN,结果网络还是丢包——问题往往出在最底层的物理链路上。我见过太多案例,光模块选错、FEC没开对,折腾半天才发现是物理层在捣乱。
这一章,咱们把25G/100G/400G以太网标准、FEC原理、流控机制和光模块选型这些基础打牢。你想想看,地基不稳,上层再花哨也是白搭。
核心观点:RoCE的成功,70%取决于物理层配置是否正确。别不信,我踩过的坑比你想象的多。
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的要求更高。
| 速率 | 通道数 | 调制方式 | 典型应用 | 我踩过的坑 |
|---|---|---|---|---|
| 25G | 1×25G | NRZ | 服务器接入 | 线缆长度超过3米就丢包 |
| 100G | 4×25G | NRZ | 汇聚层 | QSFP28兼容性问题 |
| 400G | 8×50G | PAM4 | 核心层 | 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 Pause | PFC |
|---|---|---|
| 控制粒度 | 整个端口 | 按优先级(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