FEC 是 Forward Error Correction(前向纠错)的缩写。原理不复杂:发送端把原始数据按固定规则算出一段校验字节附在后面,接收端拿到后即使链路上有少量比特翻转,也能靠校验字节把错位"算"回来,不用回头让对方重发。
GPON(ITU-T G.984 系列)在 TC 层用的 FEC 是 Reed-Solomon RS(255,239):每 239 个数据字节,编码插入 16 个校验字节,变成 255 字节一帧。开销算下来是 16÷239 ≈ 6.7%,也就是说开了 FEC,有效码率只剩 239÷255 ≈ 93.7%。这不是白送的——它用带宽换可靠性。
在 G.984.3 里,下行 FEC 是强制开启的;上游 FEC 是可选能力,历史上默认关闭。方向不对称,正是这篇文章要讲透的点。

GPON 下行是 OLT 一点对多点广播:2.488 Gbps 的光信号从 OLT 发出,沿着分光器一分为多,所有 ONU 同时收到同一份数据,各自按 LLID 挑属于自己的帧。问题就出在"广播"二字:
一帧里只要有几个比特因为光纤色散、连接器脏污、长距离衰减而翻转,受影响的可能是某个 ONU 的几十个以太网帧;
下行没有"只对这一台 ONU 重发"的便宜办法——重发意味着又一次全网广播,浪费的是所有用户的带宽;
链路一长(到 20 km、1:128 分光),光功率余量被吃薄,原始误码率(pre-FEC BER)很容易掉到 10⁻⁴ ~ 10⁻³ 量级,裸跑根本不可用。
开了 RS(255,239) 之后,接收端能纠正每个 255 字节块里最多 8 字节的连续错误,把 post-FEC BER 压到 ≤ 10⁻¹⁰(G.984 的硬性指标)。换句话说,不开 FEC 的长距 GPON 下行基本没法商用,开了才稳。
上行方向画风完全不同。GPON 上行是 TDMA 时分多址:所有 ONU 共用 1310 nm 这同一根纤,但被 OLT 用测距(ranging)切成互不重叠的时隙,轮到自己才发光。这个方向有三个理由把 FEC 关掉:
带宽是真紧张。 上行原始速率只有 1.244 Gbps,还要被几十上百个 ONU 分时共享。硬扣 6.7% 当校验,等于凭空少了一截可用容量。
错了可以重来。 上行是点对点(某一 ONU → OLT),OLT 发现帧坏了解码不出,直接通过 DBA / OMCI 让这台 ONU 在下一轮时隙重发即可,不像下行那样"重发即骚扰全网"。
距离短、功率余量足。 单台 ONU 到 OLT 的链路比"一对多广播"更容易维持在低误码区间,关 FEC 的风险可控。
所以工程上常把上行 FEC 设为 Off,把那 6.7% 还给用户带宽——前提是光链路质量达标。
| 维度 | 下行(OLT → 所有 ONU) | 上行(ONU → OLT) |
|---|---|---|
| 介质方式 | 广播,一帧全员收到 | TDMA 时隙,点对点 |
| 原始速率 | 2.488 Gbps | 1.244 Gbps |
| FEC 默认 | 强制开启 | 默认关闭(可选) |
| 不开的后果 | 长距误码不可控、全网受影响 | 单台可重发、影响局部 |
| 代价视角 | 用 6.7% 换可靠性 | 省 6.7% 给共享带宽 |
到了 XGS-PON(ITU-T G.9807.1,下行/上行均 10 Gbps),规则变了:上下行 FEC 都常态开启。原因很实在——速率翻了四倍,光纤的色散、非线性、器件噪声对 10G 信号更不友好,原始误码率明显比 2.5G 时代更难看;同时 10G 上行同样是点对点可重传,但一旦出错重传的代价(时延、时隙占用)随速率放大,不如一开始就靠 FEC 兜住。10G PON 用的 FEC 能力也比 GPON 的 RS(255,239) 更强,纠错余量更厚。
这也给选型提了个醒:GPON 和 XGS-PON 的 FEC 模式、编码能力不同,OLT 与 ONU 必须两端协商一致,否则一边开一边关,链路直接起不来。

锐应的 GPON OLT L102P(2 口 GPON、1:128 分光、2×GE + 1×SFP+ 10GE 上联)在 PON 口遵循 ITU-T G.984.3 标准,下行 FEC 强制开启,配合锐应 XPON ONU 在 20 km、1:128 这类长距大分光场景下,能稳定把 post-FEC 误码率控制在 10⁻¹⁰ 以内。实际开局时,只要两端都按标准 GPON FEC 协商,运维基本不用手调;只有在光路质量极佳、又想在上行多抠一点共享带宽时,才考虑关闭上行 FEC——但这要求收光余量留足,否则反而得不偿失。
想知道一台 OLT 该上几根 10GE 上联、怎么给 PON 口算带宽,可参考锐应 PON 方案。工业场景里把 PON 和工业交换机搭配,能覆盖从局端到现场的整段链路。更多公司背景见关于锐应。
理论上是把上行有效码率从 93.7% 提到接近 100%,约多出 6.7% 共享容量。对一个 1.244 Gbps 上行来说,大约多出 80 Mbps 可供所有 ONU 分时享用。代价是误码风险上升,只在光路质量好的短距链路才建议关。
链路直接起不来。FEC 是物理层两端必须一致的参数,OLT 开、ONU 关(或反之),接收端解码失败,PON 口就停留在"搜索/失锁"状态,ONU 注册不上。开局遇到注册异常,先查两端 FEC 模式。
编码能力更强,但思路一致:都是用开销换低误码。XGS-PON 上下行都开,是因为 10G 信号对噪声更敏感、重传代价更高。混用 GPON 与 XGS-PON 设备时,必须按各自标准分别协商。
会,但很小。RS(255,239) 解码要在接收端攒够一整块(255 字节)才能纠错,引入的微秒级处理延迟,对宽带上网、监控回传无感;只有对亚毫秒级确定性有苛求的场景才需要单独评估,而这类场景通常走工业交换机的 TSN/ERPS,不走 PON 上行。
在 OLT 网管里看 PON 口状态,标准设备会显示 FEC 使能状态与 post-FEC BER 计数;GPON 下行正常应显示"FEC On"且 BER ≤ 10⁻¹⁰。若 BER 持续偏高,先查光功率和连接器清洁,而不是急着关 FEC。
FEC 不是一个"开了就完事"的开关,它是 GPON 在带宽和可靠性之间做的一笔精细账:下行广播赌不起错,所以用 6.7% 开销把误码率压到 10⁻¹⁰;上行可重传、带宽紧,默认把这笔开销省给更多用户。到了 10G 的 XGS-PON,速率变高、噪声变凶,上下行又都回到了"必须开"。理解这套不对称,才能在长距大分光和带宽抠量之间做对取舍。