这个报告的长达一个小时的ping时间到底是怎么实现的?


15

我最近和我的父母一起度过了复活节银行假期,他们的父母住在英国的一个乡村地区。他们有一个(可怕的)ADSL互联网连接,该连接在几公里长的笨拙的铜线上运行,并且当附近的农民将拖拉机拖回电话线时会定期中断。

我注意到他们的路由器反复丢弃pptp握手,然后重新协商,有效地终止了连接。这真令人沮丧。因此,为了避免发疯,我告诉它将最低可接受的SNR余量和握手速度降低一倍,以降低速度:

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
U.S. Robotics Wireless MAXg ADSL Gateway
Login: ***********
Password: 
> sh


BusyBox v1.00 (2006.02.17-20:30+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

# adsl configure --snr 200; exit 
Connection closed by foreign host.

事情得到了改善,事情变得很稳定(即使非常缓慢),也可以连接到外界:

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
64 bytes from 8.8.8.8: icmp_seq=0 ttl=55 time=3236.679 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=3699.541 ms
...

大约在这一点上,现实生活介入了,然后我花了几个小时与猫玩耍,在手机上看了猫的gif图像, 实际上是在和家人聊天等等。一天后打ctrl-c

显示的摘要统计数据使我感到震惊:

--- 8.8.8.8 ping statistics ---
103074 packets transmitted, 100564 packets received, 2.4% packet loss
round-trip min/avg/max/stddev = 32.986/3034.479/3600577.732/87527.276 ms

如您所见,对到Google的DNS服务器进行跨大西洋短跃的ICMP数据包的最大记录响应时间为3600577.732 ms这几乎是一个小时,而且肯定比ping默认超时时间长得多。

地球上怎么这样可以吗?它准确吗?哪个路由器会愉快地保留一个数据包六十分钟,然后再发送它?为什么这个包没有丢掉?这是8位数据包计数器溢出并产生较大延迟的结果吗?

最后,我想知道英国是否有任何行为准则,说明与RFC 1149RFC 2549相比,消费者ADSL连接有望具有更少的延迟和更好的流量管理。


1
没有垃圾邮件超载的路由器。
棘轮怪胎

贪婪的路由器;)当您注意到它打算等待一个小时才能转发数据包时,请务必播放此文件。youtube.com/watch?v=moSFlvxnbgk
Cestarian '16

1
既然您说过将其放置一整夜,那么您的计算机是否有可能在夏令时开始时应用了+1个小时,并且与特定数据包的RTT的计算混淆了?
肯克2016年

@kenkh-不 我可以肯定,时钟改变的那一天不是那一天。此外,查看ping 源代码(来自〜l 761),我可以看到在随后的计算中忽略了时区(gettimeofday(nv, NULL)返回纪元微秒)。确实花了一个小时!
Landak '16

如果您有权访问系统,可以在其上运行路径吗?将大致显示减速的位置
Journeyman Geek

Answers:


4

ICMP数据包和ping的响应每个都长32个字节,因此对于一个小时的ping来说,似乎每个字节要花近一分钟的时间来传输。

这只能通过非常大的错误重试计数(您正在做什么?),非常慢的路由器以及对每个传输字节的痛苦等待或重试才能解释。

互联网协议(IP)通过数据报传输数据,并尝试不发送部分数据报。一旦开始传输,默认情况下它将等待200毫秒,以便将更多字节添加到数据报中。超过该时间后,软件/固件将发送所有内容作为一个数据报。在长达一小时的ping时间的情况下,数据包有效负载可能已经小到一个字节。只要数据仍在到达,连接就不会被两个参与方终止。

你可以做什么 :

  • 如果其他电话,传真或其他设备连接到同一条电话线上,请检查它们是否受到DSL过滤器的保护。确保没有在通往DSL调制解调器的线路上放置过滤器。
  • 尝试使用另一台路由器-一旦您发现自己的设备不好,除了将其丢弃并获得更好的性能外,您将无能为力。
  • 如果没有其他路由器可用,请与您联系ISP-他们可以从侧面运行有用的测试。
  • 如果ISP没有任何发现,请尝试要求更换路由器/调制解调器。
  • 如果另一个路由器出现相同的问题,请与电话公司联系。

定位有问题的交换机可能非常复杂,就像在电话公司中一样,但是ISP也可能拥有自己的交换机。正常情况下,交换机存在问题,范围广泛,可帮助您找到发生故障的交换机。但是在没有太多用户使用该交换机的农村地区,这可能未被发现。如果某些邻居使用相同的ISP,请尝试找出他们的连接是什么样的。


我会转2和3。首先致电ISP要容易得多。他们可以进行测试。如果他们发现问题,他们将发送一个新的调制解调器(不一定是路由器)。如果新的调制解调器不能解决问题,则ISP应联系电话公司。这就是它在这里工作的方式,但在英国可能有所不同。
SPRBRN '16

我的意思是应该并行执行以上所有点。就我而言,我的ISP可以决定派遣技术人员,但如果问题与未使用的DSL过滤器一样小,则可以决定收费。
harrymc '16

啊。注释指的是编号列表中的数字。然后,答案的发布者编辑了答案以删除数字,从而使注释似乎不合时宜。sk
TOOGAM'4

1
200毫秒:Windows / Linux软件内置。在分析为什么我公司的产品在小数据报上的TCP / IP吞吐量过低时,我找到了它,然后在套接字上找到了“立即发送”的系统调用。数据包有效载荷:这不是经过协商的,而是当太大的TCP / IP数据报遇到MTU太小的路径时,它将被分成几部分。DSL调制解调器:更改参数可能会在一定程度上补偿不良的电话线/交换机,但应该固定而不是补偿。
harrymc '16

1
另一个调整:禁用ADSL2 +,并保持与ADSL1的稳定性。无论您购买哪种路由器,都可以确保正确调整SNR余量(此处提供一些信息))。十亿个路由器都不错,Netgear也是如此(我更喜欢通过简单安装即可支持DD-WRT的型号)。此文章可以给你更多的想法-并看看距离/速度图。
harrymc '16

0

我认为这种情况与数据拥塞管理非常相关,尽管无论出于何种原因,这种情况都很难处理。据我了解,传输系统上的数据包缓冲区管理不善,这导致ICMP回显请求/回复数据包中出现此异常。

因此,将不良的拥塞管理策略与数小时的ping会话打开相结合,可能会导致这种奇怪的情况。

有关拥塞管理的更多信息,请参见此处

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.