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?

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...