1、故障现象

交换机端口学习不到或者错误学习到MAC地址。

 

2、故障可能原因

1) 数据丢包流量没有经过该二层接口;

2) STP拓扑震荡频繁清除MAC地址;

3) MAC地址学习能力被关闭或被配置MAC过滤;

4) 接口属性配置错误;

5) 端口开启安全功能;

6) 软件缺陷;

7) 硬件故障;

 

3、故障处理步骤

步骤1:交换机接口是否有收到报文流量,查看接口是否有丢包

通过在交换机上show int counter可以查看接口是否有流量(可以多show 几次,看进来的流量(单播报文个数、组播报文个数、广播报文个数)是否有增长,如果有增长表示接口收到了报文。另外也确认接口是否有丢包)

Switch#show int fastEthernet 0/1 counters

Interface : Fa0/1

5 minute input rate  : 0 bits/sec, 0 packets/sec //5分钟的平均速率

5 minute output rate : 0 bits/sec, 0 packets/sec

InOctets             : 68023600 进入的包总数

InUcastPkts          : 92842    进入单播包个数

InMulticastPkts      : 36700   进入组播包个数

InBroadcastPkts      : 75636   进入广播包个数

OutOctets            : 3630373  出去的总包数

OutUcastPkts         : 32053    出去单播包个数

OutMulticastPkts     : 1059    出去组播包个数

OutBroadcastPkts     : 13231   出去广播包个数

[1] Undersize packets    : 0

[2] Oversize packets     : 0

[3] collisions           : 0

[4] Fragments            : 0

[5] Jabbers              : 0

[6] CRC alignment errors : 0

[7] AlignmentErrors      : 0

[8] FCSErrors            : 0

[9] dropped packet events (due to lack of resources): 0

[10] packets received of length (in octets):                                      

  64:119136, 65-127: 75769, 128-255: 12663,

  256-511: 3149, 512-1023: 1955, 1024-1518: 38849

 

[1] 长度小于64字节,校验和正确的报文:和Fragment帧对应,区别在于校验和。

[2] 帧超长且校验和正确的报文:和Jabber帧对应,区别在于校验和。

[3] 冲突帧:多站点同时试图发送信息导致冲突,单双工遇到较多。

[4] 长度小于64字节,校验和错误的报文:和Undersize帧对应,区别在于校验和。

[5] 帧超长且校验和错误的报文:和Oversize帧对应,区别在于校验和。

[6] 非超常帧且校验和错误的报文:和FCS相同,CRC是发送方本地进行校验,对端收到后重新进行计算,然后比对FCS字段。

[7] 接收的帧有重组错误:没有通过帧校验且没有边界字节结束(非整字节)的帧,bit丢失。

[8] 帧的内容改变或者丢失:帧校验FCS错误

[9] 丢弃报文统计:总和

[10] 根据长度统计接收的报文

如果没有收到报文流量则无法学习到用户的MAC地址。

 

步骤2:物理端口不能是三层口,如果是三层口无法学习mac地址

只有switchport口(如access、trunk、hybird、dot1q-tunnel、uplink口)才有学习mac地址的能力,如果是no switchport口是没有学习地址的能力的。如果该端口配置的是no switchport 端口,该端口无法学习mac地址。只能show arp查看arp对应情况。

 

步骤3:确认端口的地址学习能力是否被关闭

  Ruijie#show mac-address-learning

  Gi0/1    learning ability: enable

  如果是enable则为开启。如果是disable 表示关闭

 

步骤4:确认是否有配置对应的静态MAC地址或过滤MAC地址。如果是,则不会学习到

 

步骤5:确认希望学习的MAC地址是否是组播地址,广播地址

可以通过抓包来看,收到的报文的源mac是否为广播地址和组播mac地址,交换机是无法学习组播及广播的MAC地址的。

判断该地址是否为组播mac地址的方式:

 

步骤6:检查网络中是否存在环路引起广播风暴,导致MAC表项振荡/STP 拓扑震荡(发送TC清除mac的可能性)

1、如果存在环路,会导致MAC地址出现漂移,可以多次show mac-address-table address xxxx.xxxx.xxxx查看mac地址是否有出现mac地址一会儿在一个端口学习到,一会儿在另外一个端口学习到的情况,如果有表示出现了环路。解除环路后故障消失则结束定位。

2、多次show int count summary(可以clear count后多次查看),观察是否有接口的广播/组播报文远大于单播报文,若有这样的接口,关注该接口下是否存在攻击或者环路的情况;

3、STP 震荡(如收到TC报文)会清 mac地址,可以通过show spanning-tree查看

多show spanning-tree几次,如果toplogychanges 这个值很大并且增长的很快,并且timesincetopologychange时间值很小,表示出现了STP震荡。

 

步骤7:检查是否开启端口安全功能

端口安全功能可以显示端口的MAC学习个数,检查是否由于端口学习mac地址数量已经达到了上限

#show port-security address

如果MAC地址学习已经达到上限,修订端口安全的地址限制个数,命令如下:

Ruijie(config-if)# switchport port-security maximum value

配置完端口安全地址的个数后,如果故障消失,则结束定位。

 

步骤8:检查MAC表项是否已经达到设备支持的最大规格

在设备上执行#show mac-address-table count确认当前还可以学习的MAC地址个数,如果还可以学习的MAC地址个数为0,说明MAC地址已经学满。

如果某接口学习到的MAC远远大于接口所连接的网络实际运行的主机数,说明存在MAC扫描攻击,先找到攻击源排除攻击。

如果存在攻击,排除攻击后故障消失,则结束定位。

 

步骤9:确认是否发生了HASH冲突

可以修改下PC终端的MAC地址看交换机是否能够学习到,如果能里面学习到,然后再改回原来的MAC,看是否又无法学习了,如果是,那么判断该MAC对交换机来说发生了HASH冲突。

 

步骤10:最简化环境进行测试确认

      在只有一台PC、一台交换机情况进行直连ping测试,看mac地址是否能正常学习。

 

步骤11:进行抓包确认

端口mac地址学习错误和端口mac地址学习不到的情况,在交换机的相应端口做RX镜像,确认报文有没有到达交换机,以及报文的具体信息,封装字段是否存在异常等。

注:进行镜像的PC或者测试仪请确保能够识别带tag的报文,具体操作方法可以参考附录--》附录4:如何设置电脑抓带vlan tag报文

 

如果替换后故障仍未解决,请收集信息,拨打4008-111-000寻求进一步处理。

 

4、故障信息搜集

 

步骤1:收集基础信息

以下蓝色的部分修订接口号后可直接粘贴复制。

show ver

show ver slo

show run

show mac-address-learning

show mac-address-table

show mac-address-table count

show mac-address-table aging-time

show mac-address-table static

show task   

show int co su

show int co su

show int co su

show int co rate

show int  counters   //建议收集具体接口的,例如show int g0/1 cou ,多收集几次

show port-security address

show spanning-tree  

show spanning-tree summary

show task   

show log

show cpu

show cpu-protect mb

show cpu-protect mb

show cpu-protect mb

deb support

show task   

exit

 

步骤2:配置端口镜像进行rx方向抓包,例如:

注:进行镜像的PC或者测试仪请确保能够识别带tag的报文,具体操作方法可以参考附录--》附录4:如何设置电脑抓带vlan tag报文

 

步骤3:进行底层信息收集

注意:底层信息风险性较高,收集不当可能导致设备死机,需要重启交换机才能恢复,请联系4008111000工程师协助收集

以下命令适用于S2600、S26E/P、S29E、S29S、S3250E、S37E、S5750、S5750P、S5750S、S5750L交换机

1)查看地址硬件表项

sd

sh console on

sh ps

sh show c

sh dump chg l2_user_entry

sh dump chg vlan

sh dump chg port

sh dump chg vlan_profile

sh l2 show

sh l2 show

sh l2 show

sh console off

sh l2 show

exit

 

2)进行debug相关信息调试

注意:DEBUG操作可能存在风险(最坏情况可能需要重启设备才能恢复),需要客户知晓风险并同意后才能收集,建议在低峰期操作!(若是核心设备,必须更加慎重评估)

debug ssp matbl all

该调试信息收集5分钟左右,期间要重现故障现象,比如接上pc,却学习不到该pc的mac地址等

关闭该调试信息

      no debug ssp matbl all