为什么我们需要用FEC?
开始正题之前,先来看看以下场景您是否设想过,甚至感同身受过:
购物 --
双十一熬夜至凌晨,由于网络延迟,下单失败。
交通 --
自动驾驶,由于网络信息丢失,引发交通事故。
通信 --
通信卫星,信息无法重新解码,造成数小时的延迟。
以上这些场景,你是否想到这些丢失的数据,传递错误的信息,失联的信号背后其实是传输层面上由于高带宽大数据量带来的处于临界的链路容限,数据中心和承载网超低时延要求可能会引发丢失数据无法再次重新传递,为了节省成本采用多电平传输而导致的糟糕的信噪比,超限的误码率。
现有网络基础设施持续被要求要以更快的速度提供更多数据,这些需求带来了许多通信挑战,比如噪声干扰,超高数据速率、小幅度信号和有衰减的传输通道都会造成传输错误。为了克服这些错误,诞生了新的编码理论,前向纠错(FEC)就是一种用来显著减少这些数据传输错误的技术。
FEC (Forward Error Correction)
顾名思义被称作“前向纠错” ,它被广泛应用于通信系统中的编码技术以保证数据的准确性,它的基本思路是在发送端,把要发送的信息重新编码,加入一定的冗余校验信息,组成长度较长的codeword,待到达接收端之后,如果错误在可纠范围之内,通过解码检查后纠正错误,从而降低误码率,提高通信系统的可靠性。在光通信系统中,通过FEC的处理,可以以很小的冗余开销,有效降低系统的误码率,延长传输距离,实现降低系统成本的目的。
前向纠错在数字通信领域应用很广,在无线、接入和传输等都有广泛应用,今天小K和大家分享的就是400G通信中和FEC相关的内容,在光通信领域,最早应用于长距传输的海底光缆,事实证明它可有效延长光信号传输距离。
那么降低误码率,具体可以降低到什么程度呢?我们以400G中 (50 Gb/s每通道)为例:电信号的 BER limit为1E-5,/1E-6 ,而光信号为 2.4 E-4,通过使用FEC之后可将修正过的误码率变为好于1E-15,由此可见虽然FEC增加了传输冗余却显著提高了数据的有效性。
Reed Solomon FEC 是如何实现的?
FEC的编码形式有很多种,比如说Hamming code, Golay编码,BCH 编码,但光通信领域使用较多的,从规范定义中就可以发现都以Reed Solomon为主,它是一种交织编码,使用一组纠错码,与低密度校验码和turbo码相比,具有更小的编码增益。但是它有很高的编码速率并且复杂度低,所以它适用于许多应用场景。
我们经常会听到 KR4 和 KP4 这两种FEC的方式。100G KR4 使用 528, 514 代码,KP4 使用 544, 514 代码。这里KP4中的514 表示编码器采用 514 个符号,增加 30 个校验符号,就会构成一个 544 个符号的码字。在谈到 KR4 FEC 时,我们说的其实是 528, 514 Reed Solomon码,KP4 表示 544, 514 Reed Solomon码。