一天,有同事反映,他的内网服务器192.168.193.254访问北京总部的资源172.16.1.1丢包严重,ping测试在服务器上用tcpdump看如下图:
可以看到很多发出的request没有回包,中间部分有回包。
和他确定组网如下:
ros路由器通过v*n连接北京的资源172.16.1.1。
看组网,自己pc去ping172.16.1.1,看到很少有丢包,如下图:
很奇怪,为啥他的ping丢包这么厉害,决定从ros到核心交换机逐级抓包,看看丢在哪一级了?
在ros上抓包,看到ping的包序号不连续,上来的ping的request消息均收到了目的方回复的reply消息,判断是很多ping的request消息没有发到ros导致,没有丢在ros路由器侧。服务器侧看到发出的ping的seq连续,而ros出口看到只有很少一部分。
决定镜像抓一下机柜汇聚交换机到核心交换机间的包看看,发出来的是否有问题?
发现序号不连续,过来的ping的request均收到回包。判断发出的ping消息丢了好多。
觉得交换机丢包的可能性不大,到服务器上192.168.192.254上去看看?
看ip配置
执行route -n查看路由表的情况?
看到配置有双路由,而且等级一样!
决定执行tcpdump -i any -nne icmp 看看发出的mac地址,另起一个putty进行ping看看。
发现有一部分ping request发向了另一mac地址,这些request都没有返回ping的reply消息。
发现发给fa:16:3e:1c:fd:81的ping的request消息都没有收到reply消息。
而发给c8:50:e9:67:fa:0c却收到的reply消息,检查一下这两个mac对应的ip地址。
检查这两个mac地址:
由mac地址表对应关系看出,双路由导致发给192.168.193.116的mac地址的包没有收到响应reply消息。
同事反馈,116那条路由是过去测试虚拟机临时加的,不能上外网,现在不使用。所以删掉路由route del -net 0.0.0.0/0 gw 192.168.193.116后,ping的抓包后正常。
知识点:
1,ros路由器可以指定mangle里tzsp端口进行抓包。
2,ping消息含序号,用来确定是那一包。
3,Tcpdump命令查看mac地址用-enn,但当使用-i any时,因为没有指定端口无法获取收发双方的mac地址。
4,交换机一般不会引起丢包。