简介:IEEE 802.3cn-2019标准原文面向光通信、数据中心网络工程师及以太网PHY研发测试人员,解决50Gb/s、200Gb/s、400Gb/s在单模光纤上至少40km传输的物理层规范与管理参数问题。正文系统规定了50GBASE-ER、200GBASE-ER4、400GBASE-ER8等接口的PMD子层特性、PAM4编码与FEC前向纠错、光功率与接收灵敏度预算,并给出EEE节能、误码率、连接诊断等管理参数,兼及与802.3cb、802.3bt、802.3cd等修正案的衔接。整包仅含1个PDF文件,约4.24MB,便于离线查阅和逐条比对条款。目前已有647人学习下载,适用于光模块选型、链路预算核算与互操作性验证时作权威引用。
1. 跨 40 km 单模跑满 400G:这份修正案补的是哪块拼图
前几年做过一条跨机房的 40 km 裸纤链路,速率从 100G 往上提的时候,采购把一摞模块规格书摊在桌上,问了一句"到底哪个型号才合规"。答案最后落在 IEEE 802.3cn-2019 这份修正案里:它给 50GBASE-ER、200GBASE-ER4、400GBASE-ER8 三个 PMD 补上了此前缺失的正式定义,包括物理层指标、链路预算口径和管理参数。换句话说,在它发布之前,想在这条 40 km 的 G.652 上跑 400G,你手上只有厂商自说自话的"兼容 LR8 超长距"版本;在它之后,才有了一张可以对账的表。这份文档适合网络规划、光模块选型、系统联调和测试台架的人看,也适合要写设计评审材料、需要引用条款号的人。它不教你怎么配交换机,但它决定了你和供应商吵架时谁手里有依据。
2. 从 802.3cd 到 802.3cn:ER 系列三个 PMD 的选型逻辑
2.1 一条速率线两条介质线,cd 与 cn 的分工
把 802.3 这几年的速率演进串起来看,50G/100G/200G/400G 其实是分两条腿走路的。802.3cd 解决的是机架内和楼宇间那一段,定义了 50GBASE-SR/FR/LR、100GBASE-DR、200GBASE-SR4/DR4/FR4/LR4 这些 PMD,最远覆盖到 10 km 的 LR4;802.3bs 则把 400G 的短中距铺开,SR16、DR4、FR8、LR8 一并给齐。这两份文档合起来,10 km 以内基本没有空白。
空白在 10 km 之外。城域汇聚、跨园区互联、异地灾备这几类场景,光纤资源往往是现成的一根 G.652,长度卡在 20 到 40 km 之间。这个距离用 LR4/LR8 的预算撑不住,上相干又太贵、功耗和运维复杂度都不划算。802.3cn 就是补这一段的:在 802.3cd 和 802.3bs 已有的 PMD 体系上,横向扩出三个 ER 型号,把"至少 40 km"这个目标写进规范。
理解这层分工很关键,因为它决定了你查参数时该翻哪一章。同样是 400G,LR8 的指标在 802.3bs 里,ER8 的指标在 802.3cn 新增的 PMD 条款里,两者的发送眼图模板、接收灵敏度、色散容限都不是一套数。用 LR8 的表去验收 ER8 的模块,属于典型的拿错尺子,后面排错能排到怀疑人生。
2.2 三个 PMD 的波长与通道拆解
三个型号的核心差异在通道数和波长规划上。50GBASE-ER 是单通道,跑在 1310 nm 波段;200GBASE-ER4 是四通道,用 CWDM 的四个波长;400GBASE-ER8 是八通道,用 LAN-WDM 的八个波长挤在 1304.5 到 1317.5 nm 这个窄窗口里。线路侧都是 26.5625 GBd 的 PAM4,单个符号载 2 bit,乘上通道数再扣掉 64b/66b 和 FEC 开销,才落回 50/200/400 Gb/s 的 MAC 速率。
| PMD 型号 | 通道数 | 波长规划 | 单通道线路速率 | 标称距离 | 合分波器件 |
|---|---|---|---|---|---|
| 50GBASE-ER | 1 | 1310 nm 波段 | 26.5625 GBd PAM4 | 40 km | 不需要 |
| 200GBASE-ER4 | 4 | CWDM,20 nm 间隔 | 26.5625 GBd PAM4 | 40 km | CWDM MUX/DEMUX |
| 400GBASE-ER8 | 8 | LAN-WDM,800 GHz 间隔 | 26.5625 GBd PAM4 | 40 km | LAN-WDM MUX/DEMUX |
这张表里最容易被忽略的是最后一行。50GBASE-ER 是单波长,一对光纤直连就行;ER4 和 ER8 都要外挂合分波器,而合分波器本身的插损要算进链路预算。很多人做预算时只算了光纤衰减和连接器,忘了 MUX/DEMUX 那一两个 dB,最后链路在实验室好好的,上现场就贴着 FEC 门限抖。
另外要注意 ER8 的波长窗口只有十几个纳米宽,八个通道间隔 800 GHz。这意味着激光器的波长漂移容限比 CWDM 紧得多,模块的 TEC 控温、波长锁定这些设计不是可选项。采购时如果拿到的是"波长可调"或者"兼容 CWDM"的所谓替代品,先去看它的中心波长和边模抑制比有没有对着 802.3cn 的表逐项过。
2.3 40 km 的链路预算怎么被抠出来
链路预算这件事,标准给的是结果,推导过程得自己走一遍才踏实。G.652D 在 1310 nm 波段的典型衰减是 0.35 dB/km 上下,40 km 光光纤本身就吃掉 14 dB。剩下的空间要分给:两端的连接器(每个按 0.5 dB 算)、中间熔接点(每个 0.1 dB 量级,一条 40 km 的链路中间通常有几个到十几个接头盒)、合分波器插损、以及老化与维修余量。
把这些加起来,40 km 链路的总损耗落在 17 到 19 dB 这个区间是很常见的。802.3cn 给这三个 PMD 定义的链路预算就是照着这个量级设计的,具体数值要去看 PMD 条款里的功率预算表,不同型号的分配略有差异。这也解释了为什么 LR 系列(大约 6 到 7 dB 预算)在 40 km 上完全没戏——差着十几 dB,不是靠"模块质量好一点"能补的。
还有一个隐性约束是色散。40 km 的 G.652D 在 1310 波段累积的色散在几百 ps/nm 量级,标准给 ER 系列的色散容限留了足够余量,正常链路不会成为瓶颈。但如果链路里混进了非 G.652D 的光纤、或者中间有长短不一的跳线拼接,色散和偏振模色散就得单独核一遍。这也是为什么现场验收不能只看收光功率,还得看误码率随时间的稳定性。
提示:链路预算里的"老化余量"不是形式主义。接头盒进水、连接器端面污染、光纤微弯,这些都会在几年里慢慢吃掉你的余量。按 2 到 3 dB 留,比事后返工便宜得多。
3. 把 400GBASE-ER8 落到台架:参数表、FEC 与实测步骤
3.1 先读表再上电:发射与接收两端的关键指标
拿到一份 ER8 模块的规格书,第一步不是插上去点亮,而是把它的参数和标准表逐项对。802.3cn 的 PMD 条款会把发射端和接收端拆成两组指标,每组都有自己的测试条件和测量方法,脱离测试条件谈数值是没有意义的。
| 参数类别 | 具体项 | 关注点 | 常见误用 |
|---|---|---|---|
| 发射端 | 平均光功率、OMAouter | 是否落在规范窗口内 | 只看平均功率不看 OMA |
| 发射端 | 消光比、TDECQ | PAM4 下 TDECQ 才是主指标 | 用 NRZ 时代看消光比的习惯判断 |
| 发射端 | 中心波长、边模抑制比 | 与合分波器通道对齐 | 忽略波长随温度的漂移 |
| 接收端 | 灵敏度(OMA) | 与 FEC 门限绑定 | 单独看灵敏度不看 FEC 模式 |
| 接收端 | 过载光功率 | 短链路直连会打饱和 | 机架内跳线直连不加衰减 |
| 链路 | 回损容限、DGD 容限 | 连接器清洁度、老光纤 | 只测损耗不测回损 |
TDECQ 这个指标值得单独说一句。NRZ 时代大家习惯看消光比和眼图张开度,PAM4 是四电平,眼图有三个眼,传统消光比已经不能完整描述信号质量。TDECQ 是把发射机信号和理想参考接收机比对后算出的代价,数值越小越好,它把发射机的噪声、线性度、带宽不足全都打包进去了。规格书上如果只标消光比不标 TDECQ,这份规格书的参考价值要打个问号。
接收端的过载点也是常被忽略的一项。ER8 是为 40 km 设计的,发射功率不低,如果机架内用一对短跳线把两个模块直连做自环测试,收端很容易过载,误码率反而比长链路更差。做自环验证时按标准要求加光衰减器,把收光压到规范窗口的中间位置,测出来的数才有意义。
3.2 PAM4 与 RS-FEC:什么情况下必须开
PAM4 相比 NRZ,在同样的符号率下翻了一倍速率,代价是每个眼的垂直张开度只剩三分之一,信噪比要求高了将近 10 dB。这个差距靠光层本身补不回来,所以 50G 及以上的这些 PMD 全都绑定了 RS(544,514) 的 KP4 FEC,也就是常说的 RS-FEC。它在 544 个符号里放 514 个数据符号,开销约 5.8%,能把线路上的原始误码率从 2.4×10⁻⁴ 量级纠到链路要求的水平。
这里有几个实操上的点。第一,FEC 不是"开了更好",而是链路设计的一部分:模块的发射指标、接收灵敏度、链路预算,全都是按 pre-FEC BER 2.4×10⁻⁴ 这个工作点算出来的。关掉 FEC 去测,指标一定不达标,这不是模块坏。第二,两端的 FEC 模式必须一致,一端 auto 一端强制,协商阶段可能起得来,但流量一上去就开始丢包,而且丢得毫无规律,非常难查。第三,FEC 会带来额外时延,对时延敏感的业务要提前算进去,别等业务上线了才发现超出预算。
还有一点容易被误解:FEC 纠错能力有上限,它只是把工作点从"不可用"拉到"可用",不是万能橡皮擦。链路如果本身就贴着灵敏度下限工作,FEC 会持续处于高负荷纠错状态,表现出来就是"能通,但误码计数一直在缓慢涨"。这种链路短期能用,长期一定出事,验收阶段看到 corrected 计数在涨就该停下来查光层,而不是庆幸"反正纠回来了"。
3.3 光模块 DDM 与链路实测的落地步骤
现场排查最直接的手段是读模块的数字诊断监控。绝大多数光模块都支持通过 I2C 暴露温度、电压、偏置电流、收发光功率这几项,Linux 下用 ethtool 的 -m 参数就能读出来,不用拆链路。
# 读取指定网口光模块的 DDM 信息(SFF-8636 / CMIS 均适用) ethtool -m eth0 # 只看收发光功率相关字段,适合脚本里做巡检 ethtool -m eth0 2>/dev/null | grep -Ei "laser bias|output power|receiver signal|temperature|voltage" # 把 DDM 快照落盘,便于和上一次对比看趋势 ethtool -m eth0 > /var/log/ddm/eth0-$(date +%Y%m%d%H%M).log这段命令的逻辑很直白:第一条拿全量,用于人工判读;第二条做字段过滤,适合塞进定时任务做日常巡检;第三条是留存快照。参数上需要注意的是,ethtool -m的输出单位在不同厂商模块上可能是 mW 也可能是 dBm,脚本里做阈值判断前先确认单位,别拿 mW 的数去和 dBm 的门限比。另外,部分模块需要先加载对应的驱动才能读出完整页,读出来一片零的时候先怀疑驱动而不是模块。
判读的时候有个经验顺序:先看温度,再看偏置电流,最后看光功率。温度异常往往是环境或散热问题,会连带影响波长和输出功率;偏置电流明显偏高而输出功率正常,说明激光器在补偿老化,是寿命预警;收发功率都在范围内但误码仍有,就该怀疑色散、回损或者 FEC 配置了。这个顺序能把排查范围一次砍掉一大半。
3.4 预算计算脚本:把纸面参数换成 dB 数
纸面推演容易漏项,写个小脚本把每一项显式列出来,评审的时候也方便对着吵。
# link_budget.py —— 40 km 单模链路预算复核 # 各项取值按工程惯例,实际项目请替换为设计文件里的实测/标称值 FIBER_ATT_DB_PER_KM = 0.35 # G.652D 在 1310 nm 波段的典型衰减 SPAN_KM = 40 CONNECTOR_LOSS_DB = 0.5 # 单个连接器 CONNECTOR_COUNT = 2 SPLICE_LOSS_DB = 0.1 # 单个熔接点 SPLICE_COUNT = 8 MUX_DEMUX_LOSS_DB = 1.5 # 合分波器单侧插损,ER4/ER8 才需要 HAS_MUX = True AGING_MARGIN_DB = 3.0 # 老化与维修余量 def total_loss(): loss = FIBER_ATT_DB_PER_KM * SPAN_KM loss += CONNECTOR_LOSS_DB * CONNECTOR_COUNT loss += SPLICE_LOSS_DB * SPLICE_COUNT if HAS_MUX: loss += MUX_DEMUX_LOSS_DB * 2 # 两端各一个 return loss def check(budget_db): used = total_loss() remain = budget_db - used - AGING_MARGIN_DB print(f"链路静态损耗 : {used:.2f} dB") print(f"扣余量后剩余 : {remain:.2f} dB") print("结论 : " + ("预算通过" if remain >= 0 else "预算不足,需缩短距离或减少接头")) if __name__ == "__main__": check(budget_db=18.5) # 换成标准 PMD 条款里对应型号的功率预算值脚本把光纤衰减、连接器、熔接点、合分波器、老化余量拆成独立变量,改动任何一个都能立刻看到结论变化。几个参数的含义:FIBER_ATT_DB_PER_KM建议用实测值,不同批次光纤在 1310 nm 的衰减从 0.32 到 0.40 都见过;SPLICE_COUNT要按实际路由数,别看图纸上标了几个;MUX_DEMUX_LOSS_DB在 50GBASE-ER 场景下把HAS_MUX置 False 即可。最后那个budget_db一定要从标准正文的功率预算表里取,不要用厂商宣传页上的"最大支持距离"反推。
4. 管理参数实操:Clause 45 寄存器与告警门限怎么配
4.1 802.3cn 在 Clause 45 体系里动了哪些表
以太网的管理接口走的是 Clause 45 定义的 MDIO 框架,按 MMD 划分设备类型,PMA/PMD 是 MMD 1,PCS 是 MMD 3。新增一个 PMD,规范动作是在对应 MMD 里补上寄存器位定义,说明这个 PMD 支持哪些能力、状态怎么报、故障怎么置位。802.3cn 做的就是这件事,它把 50GBASE-ER、200GBASE-ER4、400GBASE-ER8 纳入已有的能力寄存器编码体系,并为它们补充了链路状态和告警相关的位。
需要读的重点条款,按任务组编辑分工来看集中在新增的两个 PMD 条款一带。前者对应 400G 的八通道长距,后者对应 50G 单通道和 200G 四通道长距。每个条款里除了光指标表,还会有一节专门讲管理参数,说明本 PMD 由哪些寄存器位标识、哪些状态位是必须实现的、哪些是可选的。做驱动或者网管适配的人,这一节要逐位对一遍,别只抄厂商给的初始化脚本。
有个常见误解是把"支持这个 PMD"和"寄存器里读到对应编码"当成一回事。实际上能力寄存器的编码是分级别的,PMD 类型、速率能力、FEC 能力分散在不同寄存器里,只看其中一个位就下结论,很容易把 ER4 误判成 LR4。规范的读法是先读设备标识确认 MMD 存在,再读 PMD 能力位,最后读当前链路状态,三层对上了才算确认。
注意:不同厂商对可选位的实现差异不小,尤其是厂商自定义区域。写适配层时把标准定义位和厂商自定义位分开处理,升级固件时才不会被冲掉。
4.2 读寄存器:一段可复用的 MDIO 操作脚本
内核态有 mdio-tools 这类工具可以直接从用户态发起 Clause 45 读写,做联调时比改驱动快得多。
#!/usr/bin/env bash # read_pmd.sh —— 读取 PMA/PMD MMD(devad=1) 的关键寄存器 # 寄存器按 devad.register 书写,部分版本的 mdio-tools 需折算成 (devad<<16)|reg IFACE=${1:-eth0} PHY=${2:-0x1e} # MDIO 管理地址,按实际背板走线填 echo "== device identifier ==" mdio read "$IFACE" "$PHY" 1.2 # PMA/PMD identifier,确认器件在 mdio read "$IFACE" "$PHY" 1.3 echo "== status ==" mdio read "$IFACE" "$PHY" 1.1 # PMA/PMD status,含链路与故障汇总位 mdio read "$IFACE" "$PHY" 1.8 # receive signal detect,收端有没有光 mdio read "$IFACE" "$PHY" 1.9 # transmit fault,发端故障标志脚本前三行是变量和地址,IFACE和PHY做成参数是为了同一份脚本能在多口设备上复用。后面两段分别读标识和状态:先确认 1.2/1.3 能读回合理值,说明 MDIO 通路是通的;再读 1.1 看汇总状态,1.8 判断收端是否有信号,1.9 判断发端是否报故障。这套顺序在排查"链路起不来"时特别管用——如果 1.8 一直是 0,问题在光层或者对端没发光,压根不用往下看 PCS 层。
寄存器编号的具体位定义会随 PMD 类型不同而扩展,脚本里给的是 Clause 45 体系里较通用的一组。真正做验收时,把标准正文对应条款里的寄存器表打印出来,逐位标注,做成一张对照表贴在工位上,比每次翻 PDF 快得多。
4.3 告警门限与 EEE 的配置边界
光模块的告警门限分高低两档,高告警、低告警、高警告、低警告,四个阈值分别对应"必须处理"和"该关注了"两种级别。门限值通常存在模块的 A2 页里,可以读也可以按项目需要改写。这里有个容易踩的坑:门限改得太紧,链路正常波动也会触发告警,运维被噪声淹没;改得太松,等到触发时链路已经不可用了。稳妥的做法是先按模块出厂门限跑一段时间的监控,拿到实际分布,再按分位数收窄。
EEE 也就是节能以太网,在这几个 ER PMD 上的处境比较微妙。标准的关键词里带了 EEE,说明相关机制在体系里有位置,但 40 km 长距链路的实际部署中,链路两端的业务大多是汇聚层流量,低占空比的空闲窗口很少,节能收益有限,反而增加了链路协商的复杂度。除非有明确的功耗考核指标,我一般建议在长距端口上先关掉,把链路稳定性放在第一位,等业务跑稳了再评估要不要开。
还有一个配置边界是 FEC 的强制与自协商。标准给的是能力位,具体怎么用取决于两端设备的策略。跨厂商对接时最稳的做法是两边都显式强制到同一种 FEC 模式,不要指望自协商。自协商在 FEC 上的行为在不同实现里差异不小,出现"一端认为协商成功、另一端在等"的情况并不罕见,而且现象是链路 up 但完全不通,非常费时间。
5. 避坑:五条从现场捡回来的排错记录
5.1 光层三条:模块、熔接与色散
第一条,链路 up 但误码率持续偏高,ethtool -m显示收光功率在范围内。现象是 corrected 计数稳定增长,业务表现为偶发重传。原因查下来是连接器端面污染,回损不达标,PAM4 对这种反射比 NRZ 敏感得多。解决方式是按流程做端面检测和清洁,把回损测出来,别只看插损。从那以后这条链路的验收清单里就强制加了回损一项。
第二条,400GBASE-ER8 上电后部分通道不通,另外几个通道正常。现象是链路起不来,日志里报的是通道级失锁。原因是 LAN-WDM 的波长窗口太窄,模块工作在临界温度时中心波长漂到了相邻通道的边上,合分波器把它滤掉了。解决办法是检查模块的工作温度和波长锁定状态,确认散热风道没有被挡,必要时换用波长稳定性更好的模块。这个问题在夏天机房温度高的时候出现频率明显上升。
第三条,40 km 链路验收通过,三个月后开始零星丢包。现象是白天正常、夜间流量低谷时反而出问题。原因是链路中间有一段旧光纤,色散和偏振模色散都比标称值差,加上温度变化导致光纤应力改变,参数漂移到了容限边缘。处理方式是做一次完整的链路表征,把异常段找出来替换。这类问题的教训是:验收不能只在新链路上做一次,投产后三个月内应该复测一轮。
5.2 配置两条:FEC 协商与寄存器误读
第四条,两端设备 FEC 配置不一致,链路状态显示 up,但业务完全不通。现象很迷惑人,物理层看着一切正常,DDM 数据也漂亮,就是 ping 不通。原因是两端 FEC 模式一强一自适,协商阶段各自认为自己成功了,实际编码方式不同,对端收下来全是无效码字。解决办法是两端统一显式配置,配置完再核对一遍生效值,不要只看配置命令的回显。
第五条,读寄存器判断 PMD 类型时读错,把 ER4 当成 LR4 配了参数。现象是链路勉强能通但性能很差。原因是被读的那个寄存器只是能力位的一部分,单独看它区分不出距离等级,而 ER4 和 LR4 的链路预算差着一大截。解决方式是按标识、能力、状态三层依次读,并和标准正文里的编码表逐位比对,别凭经验猜。
提示:这五条里有四条最终都指向同一件事——把光层测清楚,比在配置层反复试参数有效得多。链路不通时先看有没有光,有光再看光好不好,最后才轮到协议层。
6. 拿标准正文当评审清单:我固定走的四道检查
标准文档最常见的用法是当字典,遇到问题才去查。用了几年之后我改了个习惯:把它当评审清单用,在项目立项和验收两个节点各走一遍,比事后救火省事得多。
第一道检查是 PMD 与距离的匹配。把链路实际长度、光纤类型、接头数量、合分波器插损列成一张表,和标准里对应 PMD 的功率预算表对一遍。这一步能过滤掉大部分"选型阶段就选错了"的项目。第二道检查是 FEC 与工作点。确认两端 FEC 模式一致、链路预算留够了余量、pre-FEC 误码率的设计工作点没有被突破。第三道检查是管理面。能力寄存器、状态寄存器、告警门限三项都要有明确的读取和判读流程,不能只依赖厂商的图形化工具。第四道检查是验收方法。自环要加衰减、长链路要测回损、验收后三个月内复测一次。
这四道检查里,第三道最容易被跳过,因为它不像光功率那样有直观的数字。但恰恰是管理面缺失导致的问题最难查——链路偶发异常时,你连历史状态都拿不到,只能靠现场蹲守。把 DDM 和寄存器读取做成定时任务,日志留存至少三个月,等于给自己买了一份后悔药。
最后一个具体技巧:读这份标准时,别从第一页开始读。先看目录定位新增的 PMD 条款,把光指标表和管理参数表各打印一份,再用关键词在正文里搜 FEC 和链路预算,把散落在各章的约束条件摘出来,凑成一页纸的速查表。我现在的做法是每做一个新项目就重建一次这张速查表,项目结束归档,下次遇到同类链路直接翻旧表,比重新啃 PDF 快一个数量级。标准是死的,把它的条款翻译成自己项目里的检查项,才是真正用得上的那部分。希望帮到你。
本文还有配套的精品资源,点击获取