发明内容
本发明的目的在于提供一种基于LLDP协议的MAC地址相同的检测方法和设备,以实现为LLDP邻居MAC地址相同导致的网络故障快速、准确地定位,为此,本发明采用如下技术方案:
一种基于链路层发现协议LLDP协议的媒体访问控制MAC地址相同的检测方法,包括:
设备接收LLDP邻居发送的LLDP报文,所述LLDP报文中携带有所述LLDP邻居的MAC地址,以及用于唯一标识所述LLDP邻居的标识信息;
当所述设备根据所述LLDP报文中携带的用于唯一标识所述LLDP邻居的标识信息确定自身与所述LLDP邻居不是同一台设备,且确定自身的MAC地址与所述LLDP邻居的MAC地址相同时,所述设备进行告警处理。
其中,所述LLDP报文中还携带有用于标识发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址是否相同的字段;所述字段的值包括表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址相同的第一标识值,以及表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址不同的第二标识值;
当所述设备确定自身的MAC地址与所述LLDP邻居的MAC地址相同时,该方法还包括:
所述设备将发送给所述LLDP邻居的LLDP报文中的所述字段的值设置为第一标识值;其中,所述LLDP报文中携带的所述字段的初始值为第二标识值。
其中,当所述设备接收到LLDP邻居发送的LLDP报文,且确定自身与所述LLDP邻居不是同一台设备时,所述设备通过以下方式确定自身的MAC地址与所述LLDP邻居的MAC地址是否相同:
所述设备获取所述LLDP报文中携带的所述字段的值;
当所述LLDP报文中携带的所述字段的值为第一标识值时,所述设备确定自身的MAC地址与所述LLDP邻居的MAC地址相同;
当所述LLDP报文中携带的所述字段的值为第二标识值时,所述设备比较所述LLDP报文中携带的MAC地址以及自身的MAC地址,确定自身的MAC地址与所述LLDP邻居的MAC地址是否相同;其中,所述LLDP报文中携带的所述字段的初始值为第二标识值;
该方法还包括:
当所述设备确定自身的MAC地址与所述LLDP邻居的MAC地址相同时,所述设备将发送给所述LLDP邻居的LLDP报文中的所述字段的值设置为第一标识值。
其中,所述设备进行告警处理,包括:
所述设备生成告警日志,其中记录MAC相同的设备的标识信息;或,
所述设备在LLDP的显示邻居信息的命令中增加用于表明所述LLDP邻居的MAC地址与自身的MAC地址相同的标识信息;或,
所述设备将与所述LLDP邻居连接的端口关闭。
其中,所述用于唯一标识所述LLDP邻居的标识信息,具体为:
所述LLDP邻居的主Master主控板的设备序列号;或,
根据以下参数中的至少两个生成的标识信息:
所述LLDP邻居的系统名称sysname、建立LLDP邻居的端口上的机框标识Chasis ID、所述LLDP邻居的设备类型、所述LLDP邻居的硬件数量。
一种基于链路层发现协议LLDP协议的媒体访问控制MAC地址相同的检测的设备,包括:
接收模块,用于接收LLDP邻居发送的LLDP报文,所述报文中携带有所述LLDP邻居的MAC地址,以及用于唯一标识所述LLDP邻居的标识信息;
确定模块,用于根据所述LLDP报文中携带的用于唯一标识所述LLDP邻居的标识信息确定所述设备与所述LLDP邻居是否为同一台设备,以及确定所述设备的MAC地址与所述LLDP邻居的MAC地址是否相同;
处理模块,用于当所述确定模块确定所述设备与所述LLDP邻居不是同一台设备,且所述设备的MAC地址与所述LLDP邻居的MAC地址相同时,进行告警处理。
其中,所述LLDP报文中还携带有用于标识发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址是否相同的字段;所述字段的值包括表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址相同的第一标识值,以及表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址不同的第二标识值;
所述设备还包括:
设置模块,用于当所述确定模块确定所述设备的MAC地址与所述LLDP邻居的MAC地址相同时,将所述设备发送给所述LLDP邻居的LLDP报文中的所述字段的值设置为第一标识值;其中,所述LLDP报文中携带的所述字段的初始值为第二标识值。
其中,所述确定模块具体用于,当所述设备接收到LLDP邻居发送的LLDP报文,且确定所述设备与所述LLDP邻居不是同一台设备时,通过以下方式确定所述设备的MAC地址与所述LLDP邻居的MAC地址是否相同:
获取所述LLDP报文中携带的所述字段的值;
当所述LLDP报文中携带的所述字段的值为第一标识值时,确定自身的MAC地址与所述LLDP邻居的MAC地址相同;
当所述LLDP报文中携带的所述字段的值为第二标识值时,比较所述LLDP报文中携带的MAC地址以及自身的MAC地址,确定自身的MAC地址与所述LLDP邻居的MAC地址是否相同。
其中,所述处理模块具体用于:
生成告警日志,其中记录MAC相同的设备的标识信息;或,
在LLDP的显示邻居信息的命令中增加用于表明所述LLDP邻居的MAC地址与自身的MAC地址相同的标识信息;或,
将与所述LLDP邻居连接的端口关闭。
其中,所述用于唯一标识所述LLDP邻居的标识信息,具体为:
所述LLDP邻居的主Master主控板的设备序列号;或,
根据以下参数中的至少两个生成的标识信息:
所述LLDP邻居的系统名称sysname、建立LLDP邻居的端口上的机框标识Chasis ID、所述LLDP邻居的设备类型、所述LLDP邻居的硬件数量。
本发明上述实施例中,通过对现有LLDP协议进行扩展,在现有的LLDP报文中增加用于唯一标识发送LLDP报文的设备的标识信息;当设备接收到LLDP邻居发送的LLDP报文时,该设备可以根据该LLDP报文中的携带的该用于唯一标识发送LLDP报文的设备的标识信息确定自身与该LLDP邻居是否为同一台设备;当设备确定自身与该LLDP邻居不是同一台设备时,根据LLDP报文中携带的LLDP邻居的MAC地址确定自身的MAC地址与该LLDP邻居的MAC地址是否相同,并当确定为相同时,进行告警处理,实现了为LLDP邻居MAC地址相同导致的网络故障快速、准确地定位。
具体实施方式
针对上述现有技术中存在的问题,本发明实施例提供了一种基于LLDP协议的MAC地址相同的检测的技术方案。在该技术方案中,通过对现有LLDP协议进行扩展,在现有的LLDP报文中增加用于唯一标识发送LLDP报文的设备的标识信息;当设备接收到LLDP邻居发送的LLDP报文时,该设备可以根据该LLDP报文中的携带的该用于唯一标识发送LLDP报文的设备的标识信息确定自身与该LLDP邻居是否为同一台设备;当设备确定自身与该LLDP邻居不是同一台设备时,根据LLDP报文中携带的LLDP邻居的MAC地址确定自身的MAC地址与该LLDP邻居的MAC地址是否相同,并当确定为相同时,进行告警处理,实现了为LLDP邻居MAC地址相同导致的网络故障快速、准确地定位。
下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。
如图1所示,为本发明实施例提供的一种基于LLDP协议的MAC地址相同的检测方法的流程示意图,可以包括以下步骤:
步骤101、设备接收LLDP邻居发送的LLDP报文,其中携带有该LLDP邻居的MAC地址,以及用于唯一标识该LLDP的标识信息。
具体的,当LLDP邻居关系建立后,LLDP邻居之间会相互发送LLDP报文(通常为周期性发送),该LLDP报文中会携带发送该LLDP报文的设备的MAC地址、设备名称等信息。设备接收到LLDP邻居发送的LLDP报文时,可以根据该LLDP报文获知LLDP邻居的MAC地址,进而可以确定自身的MAC地址与LLDP邻居的MAC地址是否相同。
而由于在实际应用中,存在同一设备的两个不同端口之间建立LLDP邻居的场景,在该场景下,由于设备与其LLDP邻居为同一台设备,该设备与该LLDP邻居的MAC地址相同是允许的。但是,当设备与其LLDP邻居不是同一台设备,且设备的MAC地址与LLDP邻居的MAC地址相同时,将可能导致网络故障的发生。
因此,为了对不同设备之间的MAC地址相同快速、准确定位,在本发明实施例中,对现有LLDP协议进行了扩展,在LLDP报文中增加了用于唯一标识发送该LLDP报文的设备的标识信息,以使接收到该LLDP报文的设备可以根据该标识信息判断自身与该LLDP邻居是否为同一台设备。
其中,在本发明实施例中,该用于唯一标识发送LLDP报文的设备的标识信息可以是设备的Master(主)主控板的DEVICE_SERIAL_NUMBER(设备序列号),还可以是根据设备的sysname(系统名称)、建立LLDP邻居的端口的Chasis(机框)ID(标识)、设备类型、设备的硬件数量等参数中的至少两个生成的标识信息。该设备可以是路由器设备或交换机设备。
步骤102、设备判断自身与该LLDP邻居是否为同一台设备;若判断为是,则结束当前流程;否则,转至步骤103。
具体的,在本发明实施例中,当设备接收到LLDP邻居发送的LLDP报文后,可以获取该LLDP报文中携带的用于唯一标识发送该LLDP报文的设备的标识信息,并根据该标识信息确定自身与该LLDP邻居是否为同一台设备。若确定自身与该LLDP邻居为同一台设备,则可以不用进行后续的MAC地址是否相同的检测;否则,需要进一步检测设备自身的MAC地址与该LLDP邻居的MAC地址是否相同。
步骤103、设备判断自身的MAC地址与该LLDP邻居的MAC地址是否相同,若判断为是,则转至步骤104;否则,转至步骤101。
具体的,当设备确定自身与LLDP邻居不是同一台设备时,该设备需要进一步检测自身的MAC地址与该LLDP邻居的MAC地址是否相同。
相应地,设备可以获取接收到的LLDP报文中携带的MAC地址,并将该MAC地址与自身的MAC地址进行比较,从而确定自身的MAC与LLDP邻居的MAC地址是否相同。若确定为相同,则需要进行相应地告警处理;否则,可以对后续接收到的报文进行上述处理。
其中,为了提高设备识别自身与LLDP邻居的MAC地址是否相同的效率,在本发明实施例中,还可以在LLDP报文中增加一个用于标识发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址是否相同的字段;该字段的值可以包括表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址相同的第一标识值,以及表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址不同的第二标识值。当设备接收到LLDP邻居发送的LLDP报文时,可以首先根据该字段的值确定自身的MAC地址与该LLDP邻居的MAC地址是否相同。
当设备接收到LLDP邻居发送的LLDP报文,且确定自身与该LLDP邻居不是同一台设备时,设备可以获取该LLDP报文中携带的该字段的值,当LLDP报文中携带的该字段的值为第一标识值时,设备确定自身的MAC地址与该LLDP邻居的MAC地址相同;当LLDP报文中携带的该字段的值为第二标识值时,设备进一步根据LLDP报文中携带的LLDP邻居的MAC地址确定自身的MAC地址与该LLDP邻居的MAC地址是否相同。
其中,LLDP邻居之间交互的LLDP报文中携带的上述字段的初始值为第二标识值;当设备确定自身的MAC地址与LLDP邻居的MAC地址相同时,设备可以将发送给该LLDP邻居的LLDP报文中的上述字段的值设置为第一标识值。
例如,在本发明实施例中,可以在LLDP报文中增加一个TLV(如“MacIsSame”),其对应的第一标识值和第二标识值分别为1和0,即MacIsSame=1时,表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址相同;MacIsSame=0时,表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址不相同。
步骤104、设备进行告警处理。
具体的,当设备确定自身与LLDP邻居不是同一台设别,且自身的MAC地址与LLDP邻居的MAC地址相同时,该设备可以进行告警处理。
其中,在本发明实施例中,设备进行的告警处理可以具体为:
设备生成告警日志,其中记录有MAC地址相同的设备的标识信息;或,
设备在LLDP的显示邻居信息的命令中增加用于表明LLDP邻居的MAC地址与自身的MAC地址相同的标识信息;或,
设备将与LLDP邻居相连的接口shutdown(关闭)。
例如,在本发明实施例中,设备可以在“dis lldp nl”命令中增加一列字段(如“MacIsSame”)来标识两台设备的MAC是否相同,其具体示意图可以参见图2。在该示例中,设备6608x-1的LLDP邻居(设备6608x-0)的MAC地址相同。
通过以上描述可以看出,在本发明实施例提供的技术方案中,当设备接收到LLDP邻居发送的LLDP报文时,该设备可以根据该LLDP报文中的携带的该用于唯一标识发送LLDP报文的设备的标识信息确定自身与该LLDP邻居是否为同一台设备;当设备确定自身与该LLDP邻居不是同一台设备时,根据LLDP报文中携带的LLDP邻居的MAC地址确定自身的MAC地址与该LLDP邻居的MAC地址是否相同,并当确定为相同时,进行告警处理,实现了为LLDP邻居MAC地址相同导致的网络故障快速、准确地定位。
基于上述方法实施例系统的发明构思,本发明实施例还提供了一种基于LLDP协议的MAC地址相同的检测的设备,可以应用于上述方法实施例。
如图3所示,为本发明实施例提供的一种基于LLDP协议的MAC地址相同的检测的设备的结构示意图,可以包括:
接收模块31,用于接收LLDP邻居发送的LLDP报文,所述报文中携带有所述LLDP邻居的MAC地址,以及用于唯一标识所述LLDP邻居的标识信息;
确定模块32,用于根据所述LLDP报文中携带的用于唯一标识所述LLDP邻居的标识信息确定所述设备与所述LLDP邻居是否为同一台设备,以及确定所述设备的MAC地址与所述LLDP邻居的MAC地址是否相同;
处理模块33,用于当所述确定模块32确定所述设备与所述LLDP邻居不是同一台设备,且所述设备的MAC地址与所述LLDP邻居的MAC地址相同时,进行告警处理。
其中,所述LLDP报文中还携带有用于标识发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址是否相同的字段;所述字段的值包括表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址相同的第一标识值,以及表明发送该LLDP报文的设备与接收该LLDP报文的设备的MAC地址不同的第二标识值;
所述设备还包括:
设置模块34,用于当所述确定模块确定所述设备的MAC地址与所述LLDP邻居的MAC地址相同时,将所述设备发送给所述LLDP邻居的LLDP报文中的所述字段的值设置为第一标识值;其中,所述LLDP报文中携带的所述字段的初始值为第二标识值。
其中,所述确定模块32具体用于,当所述设备接收到LLDP邻居发送的LLDP报文,且确定所述设备与所述LLDP邻居不是同一台设备时,通过以下方式确定所述设备的MAC地址与所述LLDP邻居的MAC地址是否相同:
获取所述LLDP报文中携带的所述字段的值;
当所述LLDP报文中携带的所述字段的值为第一标识值时,确定自身的MAC地址与所述LLDP邻居的MAC地址相同;
当所述LLDP报文中携带的所述字段的值为第二标识值时,比较所述LLDP报文中携带的MAC地址以及自身的MAC地址,确定自身的MAC地址与所述LLDP邻居的MAC地址是否相同。
其中,所述处理模块具体用于:
生成告警日志,其中记录MAC相同的设备的标识信息;或,
在LLDP的显示邻居信息的命令中增加用于表明所述LLDP邻居的MAC地址与自身的MAC地址相同的标识信息;或,
将与所述LLDP邻居连接的端口关闭。
其中,所述用于唯一标识所述LLDP邻居的标识信息,具体为:
所述LLDP邻居的主Master主控板的设备序列号;或,
根据以下参数中的至少两个生成的标识信息:
所述LLDP邻居的系统名称sysname、建立LLDP邻居的端口上的ChasisID、所述LLDP邻居的设备类型、所述LLDP邻居的硬件数量。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。