世事洞明皆学问,人情炼达即文章。白鹿原中让人记忆最深刻的人物田小娥为了追求幸福的生活不小心触犯了封建社会的忌讳,他的黑娃男人为了事业却不幸当了土匪,留下了她独守空房,她一个女人无依无靠终究逃不过封建社会的魔爪,被她见不得那些伤风败俗的公公白刀子进红刀子出了。你以为这样就结束了吗?
SmartRG SR506n多机出现断PING的情况是这样的,先给大家画个多机环境拓扑图和交换机配置。
如果想了解多机服务器是怎么工作的,请参考上一篇文章多机服务器使用介绍。
从产线TE处了解,从PC去PING板子出现PING断,导致telnet登录失败或者telnet登录成功了命令下不进去,参数写不成功。
问题剖析过程
首先复现问题
如上图搭建多机测试环境,电脑ping 192.168.1.5 -t,ping 192.168.1.6 -t,ping 192.168.1.7 -t
问题很容易复现,如下图出现PING断。
看到问题后,抓包debug。
1、先抓在多机服务器和交换机之间的包,看看报文是什么样子的?
那么request包都经历了什么才导致ping不通的呢?
下面我们去看看未得到回复的request报文的上面的报文是啥?这个板子有个特点,喜欢发arp报文,从192.168.1.2到192.168.1.254都问一遍,每20s发一次。
ping 192.168.1.5每次出现断ping的时候都出现了什么报文
通过过滤vlan id=5的报文,其他vlan的报文都不会影响到我,寻找每次出现ping断时候出现的奇怪报文,从上图我们很明显的看到有两个报文影响到了我。
一个是源mac为dut,目的mac为广播的who has 192.168.1.5?tell 192.168.1.7的报文。一个是源mac为dut,目的mac为广播的免费arp报文。
那么这两个报文是谁发出来的?如何影响pc出现ping断的呢?
先分析第一个问题,pc为什么会出现ping断?
通过在交换机和dut之间抓包发现,没有出现单独的request报文。难道这个request报文被丢掉了。
为了确定这是不是真的?我在pc上ping 192.168.1.5 -t -n 20,查看在交换机和多机server之间的icmp包和交换机和dut之间的包的差异。
多机server和交换机之间的包
DUT和交换机之间的包
怎么看,比对一下两边的数据包,有两个request交换机没有转发。那么交换机为什么会不转发呢?
交换机是二层设备,他只负责根据mac地址学习表转发报文。那么我们ping 192.168.1.5 -t,ping 192.168.1.6 -t,ping 192.168.1.7 -t看一下mac地址学习表的情况。
2210-1801-0003是板子的mac地址,三个板子的mac地址都一样
448a-5baa-c5b5是ping命令pc的mac地址,定心看一下mac地址学习表的变化,结合交换机端口的配置。
request报文的源mac为pc的mac448a-5baa-c5b5,目的mac为dut的mac2210-1801-0003,vlan id 5。
如果交换机正常转发的话mac地址学习表应该是这样的。
[H3C]display mac-address dynamic
MAC ADDR VLAN ID STATE PORT INDEX AGING TIME(s)
5c63-bf8c-e2d7 1 Learned GigabitEthernet1/0/4 AGING
2210-1801-0003 5 Learned GigabitEthernet1/0/2 AGING
448a-5baa-c5b5 5 Learned GigabitEthernet1/0/4 AGING
2210-1801-0003 6 Learned GigabitEthernet1/0/3 AGING
448a-5baa-c5b5 6 Learned GigabitEthernet1/0/4 AGING
2210-1801-0003 7 Learned GigabitEthernet1/0/1 AGING
448a-5baa-c5b5 7 Learned GigabitEthernet1/0/4 AGING
但是当trunk口4口学习了下面这三种情况的话,我request报文过来后就无法寻址转发了
2210-1801-0003 7 Learned GigabitEthernet1/0/4 AGING
2210-1801-0003 6 Learned GigabitEthernet1/0/4 AGING
2210-1801-0003 5 Learned GigabitEthernet1/0/4 AGING
官方称之为“mac地址表抖动”,何谓“抖动”?就是指通过一个mac地址在两个或者两个以上端口学习到了,导致mac地址表不断更新。通过绑定静态mac地址解决mac地址抖动的问题。于是我把这3个mac地址分别绑定到3个端口的3个vlan下面,再去ping,问题果然解决了。
PING断的问题解决了,我们去分析是不是我们之前说的那个报文导致的PING断呢?
还有一个报文是
使用模拟发包工具小兵以太网测试仪,去模拟上述的两个报文在多机服务器和交换机之间的HUB上发包,ping 192.168.1.5,确实会根据这两个报文的发送而ping断。
果然,出现了ping断。接下来又回到第一个问题了,这些报文是谁发出来的呢?什么都不想说了,矛头直指多机服务器。怎么证实是多机服务器搞得鬼?我们要证据啊,猜猜猜,就知道猜。很意外,当时多机服务器上的配置是这样的。
我以为只会收到5,6,7的异常arp报文,谁知道在抓的包里面发现了13的异常arp报文
Info:who has 192.168.1.13? Tell 192.168.1.7
我尝试在多机服务器里面将192.168.1.13的配置删除,该报文也就真的不会被抓到了。这应该是多机服务器搞出来的报文,但也不应该怪多机服务器啊,要不是你板子不断地发下面这个,我多机服务器也不会发这样子的报文。其他牌子样机就不会发这个报文,所以其他牌子的样机就不会PING断的。
天啦撸!接下来的问题是多机服务器为什么会发这个报文?为什么会出现免费arp报文?