【交换机在江湖之维护宝典】第十章 轻松定位MAC地址学习不到问题

 

 
 

人来咨询MAC地址学习不到的问题,把小编忙得不可开交。小编忙里偷闲反省了一下,“授人以鱼不如授人以渔”,于是把经验整理出来,与众侠分享。

 首先,小编还是要讲解一下MAC地址的基本原理,澄清几个概念,照顾一下初入江湖的少侠们。

什么是MAC

MAC全称Media Access Control,是设备的唯一标识符,是由各个厂商向IETF等机构申请的。它有48Bit,通常被表示为12位的点分十六进制数,每个MAC地址的前6位(点分十六进制)代表OUI(Organizationally Unique Identifier),后6位由厂商自己分配。

例如,48Bit的MAC地址000000001110000011111100001110011000000000110100,表示为12位点分十六进制就是00e0.fc39.8034。前面的00e0.fc是IEEE分配给华为公司的OUI,后面的39.8034是由华为公司自己分配的地址编号。

MACMAC地址表项、MAC地址表的关系是什么呢?

  MAC地址表是由一条条的MAC地址表项组成。MAC地址表项是由MAC、VLAN和端口组成。所以这里所说的MAC地址学习不到,是指的MAC地址表项学习不到。

? MAC地址表项是怎么学习的呢?

MAC地址表项是在交换机收到数据帧时,解析出数据帧的源MAC地址和VLANID,然后和接收数据帧的端口组合成的。如下图所示就是一条MAC地址表项。

MAC地址学习不到,会导致什么问题?

问题1:MAC地址是用来指导报文进行单播转发的。通过目的MAC地址在MAC地址表中查找不到的报文,就会进行广播,就会占用带宽,浪费网络资源了。

问题2:设备收到报文,才会进行MAC地址学习。MAC地址学习不到,很可能是设备没有收到报文。设备没有收到报文,就意味着设备间的通信是不通的哟。

 好了,跟小编一起来看看“MAC地址学习不到问题”的定位步骤吧。

第一步:判断端口是否收到报文

查看方法:先在用户视图下执行reset counters interface GigabitEthernet3/0/0命令清空端口的计数,然后再在用户视图下执行display interface GigabitEthernet 3/0/0查看入报文的统计计数是否为0。

江湖小贴士:在场景比较复杂的情况下,端口入报文计数不为0不表示端口就收到了指定MAC地址的报文哟。在这种情况下可以根据源MAC地址做流量统计,判断端口是否收到了指定MAC的报文。呵呵,如果条件允许,也可以直接在使用抓包工具进行抓包,判断端口是否收到了指定MAC的报文哟。

第二步:查看设备配置是否正确

1.VLAN是否创建并加入端口。

查看方法:任意视图下执行display vlan vlan-id命令,查看VLAN是否存在并加入端口。

2.端口下是否配置了MAC地址不学习功能。

查看方法:接口视图下执行display this命令,查看是否存在mac-address learning disable配置。

3.端口下是否配置了MAC地址学习限制数功能。

查看方法:接口视图下执行display this命令,查看是否存在mac-limit maximum配置。

4.VLAN下是否配置了MAC地址不学习功能。

查看方法:VLAN视图下执行display this命令,查看是否存在mac-address learning disable配置。

5.VLAN下是否配置了MAC地址学习限制数功能。

查看方法:VLAN视图下执行display this命令,查看是否存在mac-limit maximum配置。

江湖小贴士:接口视图下执行display this命令,会看到很多配置,是不是很烦呢。小编教你一招,可以使用display this | include  mac-address快速查看命令中含有mac-address的命令的。

第三步:查看端口是否被阻塞

1.查看端口是否被生成树协议阻塞。

查看方法:任意视图下,执行display stp brief命令查看端口的状态。

2.查看端口是否被LBDT或LDT环路检测协议阻塞。

查看方法:任意视图下,执行display loop-detection命令查看端口是否被LDT阻塞。在任意视图下,执行display  loopback-detect命令查看端口是否被LBDT阻塞。

江湖小贴士:端口被阻塞,是否正常呢?这就要各位大侠根据组网确认一下,该端口是否需要使能破环协议或者环路检测协议了,如果确认需要使能并且阻塞端口也是正确的,那这个端口学习不到MAC地址也是正常的哟。

光说不练假把式,根据现象找出问题并解决问题才是真本事。那么现在就和小编一起,来“定位两个MAC地址不学习”的问题吧。

典型问题一:端口没有加入VLAN,导致MAC地址学习不到。 

? 组网说明

PC1和PC2属于同一个网段,在同一个VLAN10内,通过两台交换机进行通信。

 

? 问题现象

PC1 ping PC2不通

 

交换机Switch1学习到了PC1的MAC地址

 

交换机Switch2没有学习到PC1的MAC地址

 

? 定位和解决

第一步:判断Switch2设备的GE0/0/2端口是否收到报文

 

哦?通过上图,发现端口入计数都是0, 看来是GE0/0/2端口没有收到报文才导致MAC地址学习不到呀,那到底什么原因导致的呢?还得进一步定位了。

第二步查看设备配置是否正确

1. 判断VLAN是否创建,并且端口是否加入VLAN。

 

 

有上图可以看出,VLAN10已经创建,但是GE0/0/2端口没有加入VLAN 10。这就是导致MAC地址学习不到的根本原因了。那就把GE0/0/2端口加入VLAN 10,再ping一下看看呢。

 

哈哈,可以ping通了,我们再来查看一下MAC地址表项。

 

哈哈,MAC地址也学习到了,问题搞定了。

典型问题二:端口被生成树协议STP阻塞,导致MAC地址学习不到。

? 问题现象:在VLAN100内,GE3/0/0端口学习不到MAC地址00e-fc01-0001。

? 定位和解决

第一步:判断该端口是否收到报文。

 

通过上图可以看到,端口有收到报文,但是端口收到的报文中,是否有源MAC地址是00e0-fc01-0001的报文呢?通过基于源MAC地址进行流量统计来判断一下了。

1.  配置流策略。

 

2.  把流策略应用到GE3/0/0端口。

 

3.  查看是否有统计计数。

 

 

通过上图可以看到,基于源MAC地址00e0-fc01-0001的流量统计计数不为0,可见端口收到了报文,那MAC地址学习不到的原因具体是啥呢?我们接着分析。

第二步查看设备配置是否正确

1.  查看配置第1项:VLAN是否创建并把端口加入VLAN。

 

通过上图可以看出,VLAN 100已经创建并且端口GE3/0/0也已经加入VLAN100。

2.  查看配置第2项和第3项:查看端口下是否配置了MAC地址不学习和MAC地址限制数。

 

通过上图可以看出,端口下没有配置MAC地址不学习和MAC地址限制数的功能。

3.  查看配置第4项和第5项:查看VLAN下的配置是否配置了MAC地址不学习和MAC地址限制数。

 

通过上图可以看出,VLAN下没有配置MAC地址不学习和MAC地址限制数的功能。

配置检查完了,没有发现问题,那就进行第三步。

第三步查看端口是否被阻塞

1.  判断端口是否被STP阻塞。

 

通过上图可以看出端口被阻塞了。这可能就是导致MAC地址学习不到的原因,那我们把端口去使能STP试试呢。

 

可以看到MAC地址可以学习到了。这样就可以确认是因为端口被环路block,导致MAC地址学习不到,问题定位了。

至于端口被STP阻塞是否合理,则需要根据组网判断了。如果确认端口被阻塞是正确的,那端口MAC地址学习不到,也就不是问题了哈。

OK,学习两个典型问题的定位过程,对MAC地址学习不到的问题是否有了思路呢。本期小编的讲解也结束了,下期小编再带你了解一下MAC地址漂移的前因后果,前世今生,敬请期待吧。

posted @ 2021-08-04 17:42  精舞门2020  阅读(1022)  评论(0编辑  收藏  举报