linux – 大规模数据包重复

前端之家收集整理的这篇文章主要介绍了linux – 大规模数据包重复前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
精简版:
我们遇到了一个特定服务器接收大量数据包的问题.经过多次故障查找后,我们发现问题是由交换机将每个端口的数据包发送出去(即充当集线器),3个路由器正在反映数据包.当路由器反射数据包时,交换机将再次将数据包发送到每个其他端口,并且它们将再次被其他路由器反射回来.这将持续到TTL递减到0.我不明白为什么路由器正在发回数据包.路由器不应该丢弃数据包,因为dest mac地址与其mac地址不匹配吗?

长版:
假设有3个路由器(A,B和C)连接到交换机和我的VM.一个udp数据包将从路由器A到达我的VM.在这个阶段,TTL是60.交换机没有我的VM的mac地址,因此它会将数据包从每个其他端口溢出.路由器B和C接收数据包并看到IP地址在同一端口上,因此递减TTL并将数据包发送回同一端口.我们现在有2个TTL为59的数据包.交换机再次将2个数据包溢出并从其他2个路由器反射出来,因此我们最终获得了4个TTL为58的数据包.然后我们得到8个,57个,16个,56个等等,直到数据包开始被丢弃.我的VM一直在接收所有这些数据包的副本.因为VM只接收它,所以永远不会设法进入交换机的MAC表. ARP在这里有帮助,但它的超时大于mac表上的交换机超时.降低解决问题但问题仍然是路由器为什么反射数据包.据我所知,这不是标准行为.

编辑:来自wireshark捕获的详细信息(仅显示mac的最后2位数字):

MAC    TTL
95     60

99     59
EC     59

95     58
EC     58
95     58
99     58

then 8 packets at 57 etc

看看它是如何从MAC地址以95结尾,然后从其他2个路由器反弹,那么这两个数据包再次从另一个2反弹以产生4个数据包?

解决方法

你所描述的是当交换机的CAM表已满时会发生什么,它无法再学习MAC地址,并且每个端口都会转发数据包.可能很难弄清楚这是否是非托管交换机的问题,但是使用托管交换机,您应该能够显示CAM表.

在这个问题上也有帮助的是网络图.

编辑:

添加的图表中,您可以看到您有两个问题.第一个仍然是交换机将每个端口的数据包转发出去的地方,如果它不知道去哪里.检查日志以查看从表中删除MAC地址的原因.

第二个问题是路由器收到数据包并将其发送回交换机,交换机又将数据包发送到每个端口(除了它自己的端口).是否有特定端口设置了默认路由,0.0.0.0?

猜你在找的Linux相关文章