路由器交换机MAC地址漂移问题--python抓取实时MAC数据情况

华为路由器交换机MAC地址漂移问题–python抓取实时MAC数据情况

一、故障拓扑说明:
1、在汇聚交换机A上,下挂两台接入交换机B、C;
2、交换机A、B、C间查看LLDP邻居,没发现环路;
3、接入设备的MAC地址是程序计算的,非固定MAC。
MAC地址漂移故障拓扑图
二、故障现象:
在汇聚交换机A上时不时有告警其中一个MAC地址出现漂移,告警信息如下:
#Sep 21 2022 08:59:41+08:00 SW1 L2ADP/4/hwMacHopAlarmRisingThreshold: OID 1.3.6.1.4.1.2011.5.25.42.2.1.7.30 Mac-hopping exist. (VlanId = 21, Vsi = -, BDId = 0, the port list of Mac-hopping = Eth-Trunk14, Eth-Trunk12, -, -, the peer list of Mac-hopping = -, DetectMac = XXXX-XXXX-AAAA)。

三、故障怀疑方向:
1、交换机误告警;
2、下挂设备MAC计算有异常,恰好出现相同MAC;
3、交换机设备间有环路(概率较低、其他MAC没有漂移)。

四、排查思路与过程:
1、检查交换机配置:使用display alarm history(查看当前告警信息)、display current-configuration interface GigabitEthernet X/X/X(查看接口配置)、display current-configuration interface eth-trunk X/X/X(查看聚合口的配置信息)、display mac-address(查看mac地址信息)、display arp all(查看mac和IP地址对应关系)…

——————————————结果:设备配置均正常,MAC正常从Eth-trunk 12学习到,无法确认情况。
2、使用端口镜像查看抓包信息,查看MAC地址XXXX-XXXX-AAAA,和IP地址对应情况。
——————————————结果:MAC地址XXXX-XXXX-AAAA均对应IP地址XXX.XXX.XXX.AAA。
3、需要实时获取MAC地址XXXX-XXXX-AAAA的表项,因为运维人员对设备不了解,无法让他们实时查看告警后的MAC地址表项。

五、进一步故障诊断方法
1、采用python实时抓取设备的MAC表项信息。
2、结合故障MAC地址漂移告警时间查看MAC地址表项信息,进行故障排查。

六、实时抓取MAC表项的python代码
采用一个txt文件保存巡检的结果,然后登录设备,使用一个while循环间隔3s(休眠了3s)抓取一次设备MAC地址表项。
注意事项:因为python会消耗设备较多的CPU(华为NE08E运行该代码后,消耗了50%左右的CPU),建议设备CPU空闲较多情况下运行python程序。注意运行python后不间断查看设备情况(CPU、内存等),如遇异常情况及时终止python程序。

# encoding=utf8
import telnetlib
import time
import os
import datetime

#巡检结果保存的文件和目录
file1 = open(r'D:\xunjian\file.txt','ab+')

#设备登录信息(IP、用户名、密码)
HOST1 = "XXX.XXX.XXX.AAA"
user1 = "XXXXXX"
password1 = "XXXXXX"


#异常处理的方法
def command(con, flag, str_=""):
    data = con.read_until(flag.encode())
    print(data.decode('ascii', errors='ignore'), end="")
    # errors -- 设置不同错误的处理方案。   end="" 输出不做换行处理
    con.write(str_.encode() + b"\n")

#设备登录
tn = telnetlib.Telnet(HOST1, port=23)
i = 1
n = 1
#tn.set_debuglevel(2)
command(tn, "Username:", user1)
command(tn, "Password:", password1)
tn.write(b"screen-length 0 temporary \n")
time.sleep(1)

#设备查看命令,不断循环查看
while i == 1:
    tn.write('display clock'.encode('utf-8') + '\n'.encode('utf-8'))
    tn.write('display mac-address'.encode('utf-8') + '\n'.encode('utf-8'))
    print("第",n,"次完成查看!")
    n = n + 1
    file1.write(tn.read_very_eager())
    time.sleep(3)#休眠3s,实现间隔3s抓一次。

#因为没有任何跳出循环的操作,下面的代码无作用
print("完成查看!")
file1.close()
tn.close()
print("完成执行")

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值