网络延迟:100Mbit vs. 1Gbit

And*_*ter 14 networking ping test benchmark

我有一个当前连接速度为 100Mbit 的网络服务器,我的提供商提供升级到 1Gbit。我知道这是指吞吐量,但数据包越大,它们的传输速度也就越快,所以我预计响应时间(例如 ping)会略有减少。有没有人对此进行过基准测试?

具有 30 字节负载的示例(100mbit 到 100mbit 服务器):

> ping server -i0.05 -c200 -s30
[...]
200 packets transmitted, 200 received, 0% packet loss, time 9948ms
rtt min/avg/max/mdev = 0.093/0.164/0.960/0.093 ms
Run Code Online (Sandbox Code Playgroud)

具有 300 字节负载(低于 MTU)的示例(100mbit 到 100mbit 服务器):

> ping server -i0.05 -c200 -s300
[...]
200 packets transmitted, 200 received, 0% packet loss, time 10037ms
rtt min/avg/max/mdev = 0.235/0.395/0.841/0.078 ms
Run Code Online (Sandbox Code Playgroud)

所以从 30 到 300 的平均值。延迟从 0.164 增加到 0.395 - 我希望这对于 1gibt 到 1gbit 的连接来说是一个较慢的增长。我什至希望 100mbit 到 1gbit 更快,如果连接是通过一个首先等待直到它收到整个数据包的交换机。

更新:请仔细阅读答案的评论!连接没有饱和,我认为这种速度的提高对人类对一个请求来说并不重要,但它是关于许多请求的加起来(Redis、数据库等)。

关于@LatinSuD 的回答:

> ping server -i0.05 -c200 -s1400
200 packets transmitted, 200 received, 0% packet loss, time 9958ms
rtt min/avg/max/mdev = 0.662/0.866/1.557/0.110 ms
Run Code Online (Sandbox Code Playgroud)

EEA*_*EAA 15

如果当前的 100Mbit 链路饱和,延迟会明显下降的唯一方法。如果它没有饱和,您可能不会注意到任何变化。

此外,您认为 1Gbit 链路将能够支持更大数据包的假设是不正确的。最大数据包大小由沿数据包路径的各种设备的 MTU 决定 - 从您服务器上的 NIC 开始,一直到您客户计算机的 MTU。在内部 LAN 应用程序中(当您可以控制路径上的所有设备时),有时可以增加 MTU,但在这种情况下,您几乎无法使用默认的 MTU 1500。如果您发送的数据包大于也就是说,它们最终会变得支离破碎,从而实际上降低了性能。

  • “明显”是这里的关键词。我刚刚检查了两台具有相同硬件和低网络负载但以太网速度不同的服务器。平均 ping 时间(本地,ping 源在同一子网上)从 0.21 毫秒下降到 0.17 毫秒。从家里 ping 相同的服务器,每个服务器的时间为 53 毫秒。有太多因素超出您的提供商的控制范围,无法进行值得的升级。 (2认同)
  • @安德烈亚斯;我认为你完全错过了这些评论的重点。这是 40 纳秒的改进。**人类完全无法察觉的数量**。这不是一个累积数字,也不是每个请求多花 40 纳秒;它只是第一个会快得多,所以第二个将排在它后面。 (2认同)

And*_*ter 14

YES gbit 具有较低的延迟,因为:

  • 可以在更快的时间内传输相同数量的字节

但是,只有当数据包具有特定大小时,改进才会明显

  • 56 字节包 => 几乎没有更快的传输
  • 1000 字节包 => 传输速度提高 20%
  • 20000 字节包 => 传输速度提高 80%

因此,如果您的应用程序对延迟非常敏感(4ms 对 0.8ms,往返 20kb)并且需要传输更大的包,那么从 100mbit 切换到 gbit 可以减少延迟,即使您使用远低于平均 100mbit/s(= 链路不会永久饱和)。

服务器 (100mbit) -> 交换机 (gbit) -> 服务器 (100mbit):

size: 56 :: rtt min/avg/max/mdev = 0.124/0.176/0.627/0.052 ms
size: 100 :: rtt min/avg/max/mdev = 0.131/0.380/1.165/0.073 ms
size: 300 :: rtt min/avg/max/mdev = 0.311/0.463/2.387/0.115 ms
size: 800 :: rtt min/avg/max/mdev = 0.511/0.665/1.012/0.055 ms
size: 1000 :: rtt min/avg/max/mdev = 0.560/0.747/1.393/0.058 ms
size: 1200 :: rtt min/avg/max/mdev = 0.640/0.830/2.478/0.104 ms
size: 1492 :: rtt min/avg/max/mdev = 0.717/0.782/1.514/0.055 ms
size: 1800 :: rtt min/avg/max/mdev = 0.831/0.953/1.363/0.055 ms
size: 5000 :: rtt min/avg/max/mdev = 1.352/1.458/2.269/0.073 ms
size: 20000 :: rtt min/avg/max/mdev = 3.856/3.974/5.058/0.123 ms
Run Code Online (Sandbox Code Playgroud)

服务器 (gbit) -> 交换机 (gbit) -> 服务器 (gbit):

size: 56 :: rtt min/avg/max/mdev = 0.073/0.144/0.267/0.038 ms
size: 100 :: rtt min/avg/max/mdev = 0.129/0.501/0.630/0.074 ms
size: 300 :: rtt min/avg/max/mdev = 0.185/0.514/0.650/0.072 ms
size: 800 :: rtt min/avg/max/mdev = 0.201/0.583/0.792/0.079 ms
size: 1000 :: rtt min/avg/max/mdev = 0.204/0.609/0.748/0.078 ms
size: 1200 :: rtt min/avg/max/mdev = 0.220/0.621/0.746/0.080 ms
size: 1492 :: rtt min/avg/max/mdev = 0.256/0.343/0.487/0.043 ms
size: 1800 :: rtt min/avg/max/mdev = 0.311/0.672/0.815/0.079 ms
size: 5000 :: rtt min/avg/max/mdev = 0.347/0.556/0.803/0.048 ms
size: 20000 :: rtt min/avg/max/mdev = 0.620/0.813/1.222/0.122 ms
Run Code Online (Sandbox Code Playgroud)

=在多台服务器上平均减少 80% 的 20kb ping 延迟

(如果只有一个链接是 gbit,则 20kb ping 的延迟仍将减少 5%。)