千兆以太网极限传输速度计算与分析

  众所周知,千兆以太网标识的传输速度是1.0 Gbps,那么在实际传输的过程中,能够达到的最大传输速度又是多少呢?这篇文章结合理论计算及实际测试告诉你答案。

计算器

  这里提供一个计算器来方便计算各网络情况下的速度:

预备知识

数据长度单位
  • 计数单位:
    • 比特:bit缩写b,表示1个二进制位,可以表示0或1
    • 字节:Byte缩写B,表示8个二进制位,可以表示0~255
  • 换算关系:1 Byte = 8 bit
  • 内部换算关系:
字节(Byte) 比特(bit)
1024 Byte = 1 KByte 1000 bit = 1 Kbit
1024 KByte = 1 MByte 1000 Kbit = 1 Mbit
1024 MByte = 1 GByte 1000 Mbit = 1 Gbit
  • 后文皆以B表示Byte,以b表示bit,务必注意区分
  • 网络设备通常以bit作为单位,而操作系统中计算文件大小通常以Byte作为单位
数据传输速度单位
  • 比特率:bps(bits per second),每秒传输比特数
  • 波特率:baud,每秒传输码元数

计算过程

物理层

  我们在操作系统的许多地方都可以找到,千兆以太网标识的传输速度是1.0 Gbps,也就意味着在网线等传输媒介中每秒可以传输1 * 10^9个比特。换算成字节,并不能简单的除以8,因为Gb与GB并不是简单的8倍关系。

  • 物理层数据实际传输速度:
    • 1000 Mb
    • 119.21 MB,计算公式:10^9 / 8 / 1024 / 1024 ≈ 119.21
数据链路层

  在数据链路层中,RFC894规定,以太网MTU(最大传输单元)为1500B,也就是说一个以太网帧可以携带1500B的数据,加上帧头14B数据(不考虑4B的802.1Q标签),帧尾校验码4B数据,帧前导码8B(7B前导码+1B帧开始界定符),帧间间隔12B,传输一个帧实际上要消耗1538B带宽。

  • 数据链路层数据实际传输速度:
    • 975.29 Mb,计算公式:1000 / 1538 * 1500 ≈ 975.29
    • 116.26 MB,计算公式:119.21 / 1538 * 1500 ≈ 116.26
网络层

  如今网络层绝大多数网络设备都使用IP协议,其中IPv4首部固定长度20B,可选部分最大40B(这里不讨论),IPv6首部固定长度40B,因此我们可以很容易得出网络层数据实际传输速度。

  • 网络层数据实际传输速度:
    • IPv4:
      • 962.29 Mb,计算公式:1000 / 1538 * (1500 - 20) ≈ 962.29
      • 114.71 MB,计算公式:119.21 / 1538 * (1500 - 20) ≈ 114.71
    • IPv6:
      • 949.28 Mb,计算公式:1000 / 1538 * (1500 - 40) ≈ 949.28
      • 113.16 MB,计算公式:119.21 / 1538 * (1500 - 40) ≈ 113.16
传输层

  在传输层有面向连接的TCP协议,其中首部固定长度20B,这里不考虑附加字段;面向无连接的UDP协议,其中首部固定长度8B

  • 传输层数据实际传输速度:
    • TCP via IPv4:
      • 949.28 Mb,计算公式:1000 / 1538 * (1500 - 20 - 20) ≈ 949.28
      • 113.16 MB,计算公式:119.21 / 1538 * (1500 - 20 - 20) ≈ 113.16
    • UDP via IPv4:
      • 957.08 Mb,计算公式:1000 / 1538 * (1500 - 20 - 8) ≈ 957.08
      • 114.09 MB,计算公式:119.21 / 1538 * (1500 - 20 - 8) ≈ 114.09
    • TCP via IPv6:
      • 936.28 Mb,计算公式:1000 / 1538 * (1500 - 40 - 20) ≈ 936.28
      • 111.61 MB,计算公式:119.21 / 1538 * (1500 - 40 - 20) ≈ 111.61
    • UDP via IPv6:
      • 944.08 Mb,计算公式:1000 / 1538 * (1500 - 40 - 8) ≈ 944.08
      • 112.54 MB,计算公式:119.21 / 1538 * (1500 - 40 - 8) ≈ 112.54

实验与测试

  实验使用iPerf3工具测试链路带宽,使用CAT-5e双绞线将2台PC连接至同个交换机,分别以网络层IPv4、IPv6协议,传输层TCP、UDP协议组合,共计4组测试,其中测试UDP协议时,使用-b 1000M参数,指定传输带宽为1.0 Gbps

  • TCP via IPv4理论传输速度:949.28Mb/113.16MB,实际测试结果:
  • UDP via IPv4理论传输速度:957.08Mb/114.09MB,实际测试结果:
  • TCP via IPv6理论传输速度:936.28Mb/111.61MB,实际测试结果:
  • UDP via IPv6理论传输速度:944.08Mb/112.54MB,实际测试结果:

结论与展望

数据链路层 以太网帧 巨型帧*
网络层 IPv4 IPv6 IPv4 IPv6
传输层 TCP UDP TCP UDP TCP UDP TCP UDP
Ethernet* 1.13MB/s 1.14MB/s 1.12MB/s 1.13MB/s 1.18MB/s 1.18MB/s 1.18MB/s 1.18MB/s
Fast Ethernet* 11.32MB/s 11.41MB/s 11.16MB/s 11.25MB/s 11.82MB/s 11.83MB/s 11.79MB/s 11.81MB/s
Gigabit Ethernet 113.16MB/s 114.09MB/s 111.61MB/s 112.54MB/s 118.18MB/s 118.34MB/s 117.92MB/s 118.07MB/s

注:*表示尚未进行实际测试

  经过测试,理论计算与实验结果完全相同,因此我们可以认为:在一般情况下,所有网络设备均达到千兆标准,且没有发生网络拥塞时,数据实际传输速度约为113MB每秒,此为使用TCP协议在IPv4网络下的结果,大部分网络协议在千兆网络下,例如Samba、rsync、iSCSI等,可以视此结果为极限最大值。基于UDP的其他协议或使用IPv6网络时,可以参考上表的结论;其他速率的网络,可以参考上文的计算方法。实际使用时,由于网络设备可能存在缺陷、发生网络拥塞、发生以太网碰撞,IP协议/TCP协议头部存在其他可选字段等情况,以及应用层协议存在的开销,实际传输速率会存在波动,可能达不到理论最大值。
  不难看出,若要提高极限传输速度,那么必须减少网络协议首部的开销,提高数据传输的有效率,即有效数据大小 / 实际消耗的带宽。一个有效的解决方案便是使用巨型帧,可以使得数据链路层的MTU达到9000B,理论上传输速率可以提高到118.23MB每秒,但是由于网络设备的原因,未能测试巨型帧的情况,有待以后补充。

参考文献