如何解释特定的 MTR 数据包丢失数据(这些 IP 是内部的还是外部的?)

如何解释特定的 MTR 数据包丢失数据(这些 IP 是内部的还是外部的?)

我遇到了一些非常严重但间歇性的数据包丢失,我不确定是否需要新的电缆调制解调器或路由器,或者是否是 ISP。

今晚该问题一出现我就运行了 MTR(好吧,winmtr)(我当时正在玩游戏,它变得不稳定了),我用大约 200 个数据包得到了以下结果(我只运行了几秒钟,以免在它停止丢包时稀释百分比):

Host                                              %Lost Sent| Recd
192.168.0.1                                       0     195 | 195
96.120.89.245                                     9     148 | 136
68.87.227.73                                      6     159 | 150 
68.86.143.37                                      5     167 | 160 
be-224-rar01.pinole.ca.sfba.comcast.net           4     171 | 165 
be-298-ar01.santaclara.ca.sfba.comcast.net        4     171 | 165
be-33651-cr02.sunnyvale.ca.ibone.comcast.net      9     147 | 135
be-11025-cr01.9greatoaks.ca.ibone.comcast.net     7     156 | 146
be-12578-pe04.9greatoaks.ca.ibone.comcast.net     5     167 | 160
66.208.228.6                                      5     163 | 155
one.one.one.one                                   5     163 | 155

现在,be-* 地址显然是 ISP。但是,前几个数字分别丢失了 9%、6%、5%:这些也是康卡斯特的还是内部的?我查了一下,它们似乎归康卡斯特所有,但老实说,我不知道该如何下这个结论(它们看起来与清楚地comcast 地址)。

我对此的解释是,由于我收到了 195 个响应,所以我的 PC 的 195 次 ping 都到达了路由器 (192.168.0.1),但随后从路由器到外部主机的 ping 却不太成功。

我有一些额外的困惑,因为我认为随着列表的向下移动,该数字应该逐渐变小 - 如果我发送了 195 次 ping,但只有 148 次进入第二步,那么 159 次如何进入第三步,然后 167 次甚至 171 次如何进入第三步?(如果发生故障,它会发送多次吗?它有时会跳过一些步骤吗?)

答案1

但是,前几个数字分别让我损失了 9%、6%、5%:这些也是康卡斯特的还是内部的?我查了一下,它们似乎归康卡斯特所有,但老实说,我了解的还不足以得出这个结论(而且它们看起来与下面的康卡斯特地址非常不同)。

内部的对什么? 我猜您的意思是“我的 LAN 内部”,因为 ISP 的网络通常立即在 LAN 之外启动。

但由于 192.168.0.1 是您的路由器(其工作是将 LAN 与非 LAN 分离),因此它们必须在物理上超出它,这意味着它们不再是您的 LAN 内部,这意味着它们必须是康卡斯特网络的一部分。

最有可能的是,康卡斯特只是对区域客户连接和全国骨干网使用不同的地址范围。它们甚至可能由不同的人管理,例如,骨干网团队希望为其路由器设置反向 DNS,而其他人则认为没有必要。

我还有一些额外的困惑,因为我认为随着列表的向下移动,这个数字应该逐渐变小——如果我发送了 195 次 ping,但只有 148 次进入了第二步,那么 159 次是如何进入第三步的,然后 167 次甚至 171 次是如何进入第三步的?(如果失败,它会发送多个 ping 吗?它有时会跳过一些步骤吗?)

我认为你假设 mtr 只发送了 195 次 ping全部的,并且每个数据包都会记录其所经过的整个路径。但事实并非如此——尽管这种机制在技术上是存在的,但它从未被使用过,因为它不足以应对任何超过 8 跳的路径,许多 ISP 甚至在不知不觉中完全阻止了它。

相反,traceroute/MTR 依赖于路由器在收到 TTL(即跳数限制)已达到的数据包时能够回复错误消息已达到零,并且每个探测只能从单个路由器产生响应。

例如,如果你发送了一个 TTL=5 的数据包,它将悄悄经过前 4 跳,只会产生来自 5 跳之外的路由器的响应。但是,如果该数据包(或其响应)丢失,MTR 就无法知道它是“进入第二步”还是第三步或第四步——它只知道它丢失了某处在第 5 跳之前。

这意味着每跳都会发送单独的探测,TTL 递增。有 195 个数据包以 TTL=1 发送,发送了 148 个数据包,TTL=2,159 个数据包,TTL=3,依此类推。

(根据您的结果,我认为可以安全地假设数据包丢失发生在您的路由器和 ISP 之间的连接上。因此,仅计算通过该链接的数据包,即不包括第一行,您总共发送了 1612 个数据包并收到了 1527 个回复,平均丢失率为 5.3%。)

相关内容