现象

最近发现电脑的网络会不时地出现非常卡顿的情况,我在电脑连接上光猫的无线网之后直接ping光猫发现延迟特别高,有时还会出现ping超时的情况。

$ ping 192.168.1.1

Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time=544ms TTL=64
Reply from 192.168.1.1: bytes=32 time=191ms TTL=64
Reply from 192.168.1.1: bytes=32 time=161ms TTL=64
Reply from 192.168.1.1: bytes=32 time=19ms TTL=64

Ping statistics for 192.168.1.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 19ms, Maximum = 544ms, Average = 228ms

我的电脑距离光猫不过5米,并且传输过程也不需要经过其它的设备。按照光的传输速度来计算,即使考虑到设备处理数据所需要的时间,延迟绝对不可能这么高。

原因和解决方案

经过V友的指教怀疑是光猫的无线网存在问题。光猫使用的是2.4g的无线网,使用软件检测之后发现当前环境2.4g无线网的干扰十分严重,数据在传输的过程发生了极其严重的丢包现象。根据TCP协议,数据传输过程中的丢包会导致数据包被重传,如果数据包大量的丢失就必然会导致数据被反复重传,整体系统的吞吐量降低,在上层用户看起来就表现为数据传输的延迟很高。

解决办法如下:

  1. 购买一个支持5g的路由器
  2. 把5g路由器通过网线直接连到光猫的网络接口上
  3. 电脑使用支持5g的网卡通过5g无线网连接到新的路由器

使用如上方法就可以成功解决无线网丢包的问题了,本质上是因为目前工作在5g信道的设备极少、干扰小,无线网络在传输时更稳定而不会发生频繁丢包的情况。现在再ping路由器发现延迟变得很低了:

$ ping 192.168.0.1

Pinging 192.168.0.1 with 32 bytes of data:
Reply from 192.168.0.1: bytes=32 time<1ms TTL=64
Reply from 192.168.0.1: bytes=32 time<1ms TTL=64
Reply from 192.168.0.1: bytes=32 time<1ms TTL=64
Reply from 192.168.0.1: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

优化前后的拓扑图对比

类似情况

同样的现象在守望先锋中也有所体现,守望先锋在游戏界面的左侧有时会出现如下的两个橙色图标

按照网络上面找到的说法

The lightning bolt means that the server has not heard from your client for some period of time and is now extrapolating. The squares mean that you’re experiencing packet loss.

也就是说闪电代表延迟,而三个方块代表着丢包,看来暴雪对于网络状态的检测还是比较细致的。

事实上在守望先锋中你可以通过快捷键 ctrl + shift + r 在左上角显示游戏状态,也可以使用快捷键 ctrl + shift + n 显示网络状态。

解释

一般来说在使用网络时,除了网络游戏、直播、语音通话等等这些对实时性要求较高的场景,大部分情况下网络的延迟并不会对我们产生太大的困扰。因为虽然网络延迟较高,但是网络吞吐量基本上不会受到影响,我打开一个网页也就是慢一点嘛,下载文件的速度也丝毫不受到延迟的影响。

但是丢包就不一样了,丢包会导致大量的数据丢失,此时就不仅是TCP数据包的重传所导致网络延迟了,更会导致网络吞吐量降低。如果不考虑服务端的限速,丢包可能导致100m的带宽仅剩几十K的下载速度,十分的影响网络使用体验。

参考

https://www.v2ex.com/t/236257