fec (Forward Error Correction) ,向前纠错。
fec 主要用于在传输过程中,发现带宽时够的,但是会有丢包的情况。
一般用于udp传输,比如webrtc传视频, 视频会议传输视频。
另外提一下的是,udp传输视频一般会把一帧视频分为很多个分组,为啥要分组,因为如果不分组,传输过程中丢失了任何一个分组,整帧数据就丢失了。按mtu以下的分组传输好处是,可以实现udt,和fec了。
比如一帧分了5个分组,增加一个fec冗余包,当前面5个分组中丢失任何一个,都可以通过这个fec冗余分组恢复出来。
那么fec是如何做到恢复任何一个分组的呢?这里讲到几种矩阵,
1 范德蒙特矩阵
2 柯西矩阵
乍一看,上面的矩阵好像还有点复杂,那么为啥选择上面的这两种矩阵呢?
原因是这两矩阵可逆,什么叫可逆矩阵。举个简单的例子
方程组
x + y + z = 10
2x + 2y + 2z = 20
4x + y + 2z = 19
矩阵{1, 1, 1
2, 2, 2}
这个方程组无法求解,因为其中一行和另一行存在线性关系。
可逆矩阵的意义就是,如果通过矩阵构造一个方程组,这个方程组是可以求解的。
可以求解的方程组才能恢复其中任意一组丢失的分组数据。