1. 从一张规格书说起800G以太网到底在解决什么问题第一次拿到 800G 以太网规格文档的时候我盯着那几十页的表格和状态机图看了整整一个下午。说实话单看标题会觉得这不过是一份速率翻倍的升级说明但真正读进去才发现它重新定义的是整个链路层到物理层的协作方式。这份笔记就是我在啃完规格、跑完几轮互通测试之后整理出来的东西不是翻译也不是复述而是把里面那些为什么这么设计和实际调的时候会踩什么坑讲清楚。先把定位说清楚800G 以太网面向的是单端口 800Gbps 的链路场景典型落地在数据中心骨干、AI 训练集群的互联、以及高密度交换芯片之间的背板连接。它不是一个孤立的新速率而是建立在 400G 已经跑通的 PAM4 信号、FEC 纠错、以及多通道并行架构之上的一次系统性扩展。适合谁来读如果你在做交换芯片验证、光模块调试、MAC/PCS 层开发或者只是想把高速以太网的演进逻辑理一遍这份笔记应该能帮你省下不少翻规格的时间。我个人的判断是800G 真正的难点从来不是把速率乘二而是在同样的物理约束下怎么让 8 条 100G 级别的通道协同工作同时把误码率压到可接受范围。理解了这一点后面所有的规格细节就都有了落脚点。2. 整体架构拆解800G 是怎么拼出来的2.1 从 400G 到 800G 的演进逻辑400G 时代主流方案是 8×50G 或者 4×100G 的通道组合到了 800G最直接的思路就是继续堆通道数或者提高单通道速率。规格里给出的核心方案是8×100G PAM4也就是 8 条 lane每条跑 100Gbps 的 PAM4 信号。为什么不是 4×200G因为单通道 200G 对 SerDes 和光器件的带宽要求太苛刻在成本和功耗上都不划算而 8×100G 可以复用大量 400G 时代已经成熟的 100G 通道技术产业链接受度更高。这里有个容易被忽略的点通道数从 4 变到 8不只是数量变化它直接影响 FEC 的分布方式、lane 间的 skew 容忍度、以及整个 PCS 层的对齐逻辑。规格里专门用了一整节讲多通道的 alignment marker 插入规则就是因为 8 条 lane 之间的延迟差异比 4 条更难控制。2.2 分层模型MAC、PCS、PMA、PMD 各管什么800G 以太网依然遵循经典的分层结构但每一层的职责边界在高速率下变得更敏感层级主要职责800G 下的关键变化MAC帧的封装/解封装、流控速率提升需支持更细粒度的 pause 帧PCS编码、加扰、对齐、FEC引入更强的 RS-FEC对齐逻辑更复杂PMA通道聚合、串并转换8 lane 的聚合与 skew 补偿PMD物理介质相关光/电接口的调制与均衡我实测下来出问题最多的往往不是 MAC 层而是 PCS 和 PMA 的交界处。因为 FEC 的 codeword 分布和 lane 的映射关系一旦配错链路能起来但误码率会莫名其妙地高而且现象很隐蔽抓包看不出来只能靠误码统计和眼图去定位。2.3 为什么选 PAM4 而不是继续用 NRZNRZ 在 50G 以上就开始吃力了到了 100G 单通道NRZ 需要的带宽几乎无法在合理功耗下实现。PAM4 用 4 个电平承载 2 bit同样的符号率下速率翻倍代价是信噪比要求提高了约 9.5dB。规格里对 PAM4 的均衡、预加重、以及接收端 FEC 的配合都有明确要求本质上就是用更复杂的信号处理换取带宽效率。提示PAM4 的眼图是三只眼睛调试时不能只看总眼高要分别看每一只眼的张开度任何一只闭合都会导致误码。3. 核心细节深挖FEC、对齐与通道绑定3.1 RS-FEC 在 800G 里的具体参数800G 规格采用的 Reed-Solomon FEC 方案核心参数是KP4 风格的 RS(544, 514)也就是每个 codeword 544 个符号其中 514 个是数据符号30 个是校验符号。这个比例带来的纠错能力可以覆盖大部分 PAM4 链路的突发错误。为什么是 544 而不是别的数因为它要和 100G 通道的符号率对齐保证每个 lane 上的 FEC 处理可以并行且同步。实际配置时FEC 的 interleaving 深度是个关键参数。深度太浅突发错误会集中在一个 codeword 里导致纠不过来深度太深延迟增加对时延敏感的业务不友好。规格里给了推荐范围但具体取值要看你的链路误码分布特征。3.2 对齐标记与 lane 去偏斜8 条 lane 在物理上长度不可能完全一致信号到达时间会有差异这就是 skew。规格要求 PCS 层周期性插入 alignment marker接收端靠这些标记来测量并补偿 lane 间的 skew。800G 下 skew 的容忍窗口比 400G 更窄因为速率高了同样的时间偏差对应的比特数更多。我踩过的一个坑某次链路能 link up但跑流量几分钟后开始丢包。查了半天发现是某条 lane 的 skew 刚好卡在容忍边界短时间没问题温度一变化就超了。后来把 PCB 走线重新做了等长问题才彻底消失。所以skew 不是能起来就行要留足余量。3.3 通道绑定与多链路聚合800G 端口在实际部署中经常被拆成多个逻辑链路使用比如 2×400G 或者 8×100G 的 breakout。规格里对 breakout 的 lane 分配、FEC 的独立处理、以及管理通道的映射都有规定。这里的关键是breakout 之后每条子链路要有独立的 FEC 和对齐状态不能共享否则一条子链路出问题会拖累其他链路。模式lane 分配FEC 处理典型场景1×800G8 lane 绑定统一 FEC骨干互联2×400G44 拆分独立 FEC交换机上行8×100G逐 lane 独立独立 FEC高密度接入4. 实操过程从零调通一条 800G 链路4.1 硬件准备与上电检查调 800G 链路硬件是第一道关。我一般按这个顺序来先确认光模块或 DAC 的规格是否匹配800G 对模块的功耗和散热要求很高被动散热往往不够再检查 PCB 走线的插入损耗和回波损耗是否在预算内最后才是上电。上电后不要急着 link up先读模块的寄存器确认温度、电压、偏置电流都在正常范围。800G 模块发热量大冷启动和热稳定后的参数差异可能很大我习惯让它先跑十分钟再开始正式调试。4.2 参数配置与寄存器调试配置阶段的核心是 SerDes 的均衡参数和 FEC 开关。以常见的调试流程为例# 读取链路状态寄存器示意 read_reg 0x1000 # lane0 status read_reg 0x1001 # lane1 status # 配置发送端预加重 write_reg 0x2010 0x0F # pre-emphasis level # 使能 RS-FEC write_reg 0x3000 0x01参数不是拍脑袋定的。预加重的档位要根据通道的插入损耗来选损耗大就多加一点但加太多会引入额外的抖动。我的经验是从中间档位开始往两边试找到误码率最低的那个点而不是一上来就拉满。4.3 误码率测试与眼图观测链路起来之后必须跑误码率测试。800G 下常用的方法是发送 PRBS 码型统计一段时间内的误码数。规格里给的参考目标是 pre-FEC 误码率在 1e-5 到 1e-4 量级经过 FEC 之后要降到 1e-15 以下。眼图观测是辅助手段。PAM4 的眼图要看三只眼还要看 TDECQ 指标。我一般会把眼图和误码率对照着看眼图好但误码高往往是 FEC 配置或者 skew 的问题眼图差但误码还行可能是均衡参数还有优化空间。注意误码率测试至少要跑够统计样本短时间的零误码不代表链路稳定我一般要求连续跑 10 分钟以上无异常才算通过。5. 常见问题与排查实录5.1 链路起不来从物理层往上查链路起不来是最常见的问题排查顺序我总结成一张表现象可能原因排查方法完全无信号模块未上电/走线断查供电、查连通性有信号但 link 不上速率协商失败查双方配置是否一致link up 后立即 downFEC 不匹配确认 FEC 开关一致间歇性 down散热/供电不稳监控温度和电压曲线我遇到过一次很典型的情况两端都配了 800G但一端开了 FEC 一端没开结果就是反复 link up/down。这种问题看日志很明显但如果不熟悉规格很容易往硬件方向去查浪费时间。5.2 误码率偏高FEC 与均衡的联合调优误码率高但链路能跑这类问题最磨人。我的排查思路是先确认 FEC 是否真的在工作看纠正计数再调均衡参数最后才怀疑硬件。很多时候误码高是因为均衡没调好而不是链路本身有问题。有个细节值得说800G 下 lane 间的串扰比 400G 更严重因为通道更密。如果某条 lane 的误码明显高于其他 lane要重点查它和相邻 lane 的隔离度。5.3 温度漂移导致的性能下降高速链路的性能对温度很敏感。我实测过同一个模块在冷态和热态下的误码率能差一个数量级。所以调试时一定要在热稳定状态下做最终验证否则实验室里跑得好好的一到现场就出问题。6. 几个容易被忽略的规格细节规格文档里有些内容藏在附录或者脚注里但实际影响很大。比如管理接口的映射规则800G 端口的管理通道和 lane 的对应关系在 breakout 模式下会变如果按 400G 的习惯去配管理面会读不到某些 lane 的状态。还有时钟容差的要求800G 对参考时钟的抖动要求比 400G 更严时钟源选型时不能沿用旧方案。另外规格里对链路训练的描述比较简略但实际调试中训练序列的交互往往是 link up 失败的高发区。我的建议是把训练过程的状态机打印出来一步步看卡在哪比盲目试参数高效得多。7. 写在最后的一点个人体会啃完这份规格、又实际调了几轮之后我最大的感受是800G 的复杂度不在于单点技术而在于系统级的协同。FEC、均衡、skew、散热、时钟任何一个环节没处理好链路都不会稳。规格文档给的是应该怎么做但实际怎么调需要大量的试错和经验积累。如果你刚开始接触 800G我的建议是先把手头的 400G 链路彻底吃透理解 FEC 和对齐的底层逻辑再往上走会顺很多。别一上来就盯着 800G 的新参数那些新参数大多是 400G 逻辑的延伸基础打牢了看规格就是查漏补缺而不是从零学起。