有问有答:为什么千兆网络跑不到125MB/s?
相信很多人在公司或者家里早就用上了千兆局域网,按照我们老生常谈的公式,从Mbps换算成MB/s要除以8,这样算出来,千兆网路的理论传输速度上限应该是125MB/s才对,但在实际应用场景中,我们从来就没看到过这个数字,为什么呢?这是因为在理论与实际之间,除了有传输线材物理上的损耗和协议层开销外,在底层上面还有20%的校验开销。
在我们的观念中,通过网线传输的就是“000011111”这样子没有经过任何“包装”的二进制流,但实际上为了保证数据传输过程中的稳定可靠,在底层上面就已经设计了相应的编码机制。千兆网络使用的是8b/10b的编码方式,其实就是以前USB、PCIe等协议使用的编码方式,在传输时,每8bit实际数据附带2个bit的校验位,这2个bit的校验码有时还有其他诸如控制、同步等作用。8b/10b编码将原始的8bit数据分成5bit和3bit两部分,然后通过提前规定好的编码表将其转换成6bit+4bit、共10bit带校验的数据。在物理链路上面传输的,就是经过8b/10b编码之后的数据,也就是说,它的效率为80%。
所以千兆网络的实际传输带宽也就是1000Mbps × 80% = 800Mbps,这里再算上各种损耗,最终我们看到的就是100MB/s都不到的实际传输速度。
8b/10b编码非常成熟可靠,在很多地方都有相关的应用,但它有一个问题,那就是80%的效率太低了。于是,标准制定者在8b/10b编码思路的基础上面进行扩充,搞出了64b/66b、128b/132b这样的编码,保证数据传输安全可靠的同时大幅度提升了编码效率,比如已经在PCIe上面应用多年的128b/132b的效率为96.97%;而千兆网络的更高级——万兆网络采用的就是64b/66b的编码,效率提升比较明显。
赞 (0)