下午客户打电话过来说 QQ 总是掉线,怀疑 (一口咬定) 是我们设备 (我们的是路由设备,放在出口) 故障导致的,态度十分强硬。从客户提出问题的第一秒起就已经可以断定是运营商网络问题了,为什么呢:
- 对路由器来说,路由逻辑都是在系统内核实现的,linux 系统跑了这么多年,不可能还出现这种问题。
- 客户那里断网不是每次都是所有 PC 集体断,只有少部分 PC 时断时续,不稳定。如果路由器有问题肯定是集体短线,而运营商有问题就不一定了,不是所有的 QQ 都在同一个服务器上,线路不同,网络状态也不同。
但是没有真凭实据可以来证明这一点,并且现象不是一直存在的,所以最后只能用挫招了:在设备的 lan 和 wan 口抓包,每十分钟重抓一次,直到客户网络出现问题。
最后抓了一个小时,终于抓到了数据包,那么如何判断是路由器的问题还是运营商网络的问题呢:
- 对比 LAN 和 WAN 的数据包,如果 LAN 的数据没有经过 WAN 发出去,或者从 LAN 收到数据包到 WAN 发出数据包的时间太长,那说明路由设备有问题。
- 如果来自 LAN 的数据包在 WAN 口都发出去了,但是没有收到对端服务器的回复,或者回复时间太长,那么就是运营商网络有问题了。
要用到的一个重要的功能就是 Wireshark 的追踪流功能:
使用追踪流可以把当前连接的所有交互数据都显示出来:
这个是 lan 口的抓包数据,PC 的 IP 是 192.168.10.62
,已经能看到有很多重传的数据包了,但是还不能确定是路由器丢包了还是服务端丢包了。此时就要对比两个口的数据包,看看 lan 口的数据包是否有被转发出去,lan 和 wan 的数据包可以通过目的 IP 地址来一一对应起来,因为不管数据怎么转发,目的 IP 都是不变的。可以先在 lan 口追踪每一个 TCP 流,然后在 wan 口过滤目的地址。
而在随机抓取的前面几个数据包中,发现,每个连接都是 wan 端发起的连接,然后服务端没有响应,一直在产生重传操作,这就可以证明是用户网络的问题而不是我们设备的问题了。
TCP 流 1
TCP 流 2
TCP 流 3
TCP 流 4
评论