一种网络拓扑发现的方法及系统与流程

文档序号:11589893阅读:437来源:国知局
一种网络拓扑发现的方法及系统与流程

本申请涉及计算机领域,尤其涉及一种网络拓扑发现的方法及系统。



背景技术:

网络监控可以对网络环境中的故障进行发现和诊断,不仅能帮助管理员立即分离出计算机网络中正在大量使用的设备,更重要的是,利用它可以找到某些潜在的问题,并且可以在设备将要发生故障时,可以及时把信息通知给管理员;而网络拓扑图可以使管理员迅速地发现局域网上出现的节点不合法、机器死机或链路中断等信息并及时反馈给管理员故障信息,准确的拓扑图发现方法能够给网络监控提供便利。

目前,以太网的物理拓扑发现方法大多数根据网桥的mac地址转发表fdb来实现,但是由于fdb表中的数据具有动态性和不完整性,导致很难发现较为准确的网络拓扑图。

申请内容

本申请的一个目的是提供一种网络拓扑发现的方法及系统,解决现有技术中网络拓扑发现不完整、较低准确性的问题。

根据本申请的一个方面,提供了一种网络拓扑发现的方法,该方法包括:

根据路由器和交换机的个数信息确定三层链路的链路信息;

根据所创建的根设备和边缘设备的对应关系确定二层链路的链路信息;

基于所述三层链路的链路信息及所述二层链路的链路信息创建网络拓扑图。

进一步地,在上述方法中,基于所述三层链路的链路信息及所述二层链路的链路信息创建网络拓扑图,包括:

根据预设的链路协议对所述三层链路的链路信息及所述二层链路的链路信息进行补充,得到补充后的二三层链路的链路信息;

根据所述补充后的二三层链路的链路信息创建网络拓扑图。

进一步地,在上述方法中,基于所述三层链路的链路信息及所述二层链路的链路信息创建网络拓扑图,包括:

根据预设的校验原则对所述三层链路的链路信息及所述二层链路的链路信息中的重复链路和/或错误链路信息进行校验,得到校验后的链路信息;

基于所述校验后的链路信息创建网络拓扑图。

进一步地,在上述方法中,基于所述三层链路的链路信息及所述二层链路的链路信息创建网络拓扑图,包括:

根据预设的校验原则对所述补充后的二三层链路的链路信息中的重复链路和/或错误链路信息进行校验,得到校验后的链路信息;

基于所述校验后的链路信息创建网络拓扑图。

进一步地,根据路由器和交换机的个数信息确定三层链路的链路信息,包括:

根据路由器和交换机的个数信息建立子网内三层设备间的链路及子网间路由器与交换机之间的链路。

进一步地,在上述方法中,根据路由器和交换机的个数信息建立子网内三层设备间的链路,包括以下至少任一项:

若子网内存在至少三个路由器,则根据确定的核心路由器建立与其他路由器之间的链路;

若子网内存在两个路由器,则建立两个路由器之间的链路;

若子网内存在路由器和交换机,则根据路由器和交换机的接口表地址属于子网方式建立所述路由器与交换机之间的链路;

若子网内存在若干交换机,则判断每一交换机是否学习到路由器,若是,则建立所述交换机与所学习到的路由器之间的链路,若否,则根据所述交换机设备的接口表地址属于子网方式建立交换机间的链路。

进一步地,根据路由器和交换机的个数信息建立子网间路由器与交换机之间的链路,包括:

将每一子网内的交换机作为源设备进行遍历其他子网中的路由器,建立与学习到的路由器之间的链路。

进一步地,根据所创建的根设备和边缘设备的对应关系确定二层链路的链路信息,包括:

根据确定的根设备确定所述根设备与边缘设备之间的对应关系;

创建每一根设备所在的二层域,并确认所有二层域中设备的路由端口;

根据获取到的二层域根设备接口的上下联关系对象将二层域中所有设备更新至所述上下联关系对象中;

根据所述根设备与边缘设备之间的对应关系,确定每一二层域内设备的路由端口;

根据所述确定的路由端口及从所述上下联关系对象中获取到的上行端口建立两个端口之间的上下联关系链路。

进一步地,所述方法还包括:

根据记录的两个设备之间的非个人计算机设备的链路及链路的键判断所述两个设备之间是否存在多个链路,若是,

获取源接口对象设备和对端接口对象设备;

判断所述源接口对象设备的接口索引是否等于所述对端接口对象设备的接口索引,若是,则删除所述源接口对象设备与所述对端接口对象设备之间的链路信息,若否,则保留所述链路信息。

进一步地,获取源接口对象设备和对端接口对象设备,包括:

通过正向比较和/或反向比较获取源接口对象设备和对端接口对象设备。

进一步地,通过正向比较获取源接口对象设备和对端接口对象设备,包括:

若链路源索引相同,则根据比较链路对端索引获取对端接口对象设备;

若链路对端索引相同,则根据比较链路源索引获取源接口对象设备。

进一步地,通过反向比较获取源接口对象设备和对端接口对象设备,包括:

若链路源索引和对端索引相同,则比较所述链路源索引对应的对端索引与所述对端索引对应的源索引,根据所述对端索引获取源接口对象设备;

若链路对端索引相同,则比较链路源索引和对端索引,根据所述源索引获取对端接口对象。

根据本申请另一个方面,还提供了一种网络拓扑发现的系统,所述系统包括:

三层链路创建装置,用于根据路由器和交换机的个数信息确定三层链路的链路信息;

二层链路创建装置,用于根据所创建的根设备和边缘设备的对应关系确定二层链路的链路信息;

确定装置,用于基于所述三层链路的链路信息及所述二层链路的链路信息创建网络拓扑图。

进一步地,在上述系统中,所述确定装置用于:

根据预设的链路协议对所述三层链路的链路信息及所述二层链路的链路信息进行补充,得到补充后的二三层链路的链路信息;

根据所述补充后的二三层链路的链路信息创建网络拓扑图。

进一步地,所述确定装置用于:

根据预设的校验原则对所述三层链路的链路信息及所述二层链路的链路信息中的重复链路和/或错误链路信息进行校验,得到校验后的链路信息;

基于所述校验后的链路信息创建网络拓扑图。

进一步地,所述确定装置用于:

根据预设的校验原则对所述补充后的二三层链路的链路信息中的重复链路和/或错误链路信息进行校验,得到校验后的链路信息;

基于所述校验后的链路信息创建网络拓扑图。

进一步地,所述三层链路创建装置用于:

根据路由器和交换机的个数信息建立子网内三层设备间的链路及子网间路由器与交换机之间的链路。

进一步地,所述三层链路创建装置用于以下至少任一项:

若子网内存在至少三个路由器,则根据确定的核心路由器建立与其他路由器之间的链路;

若子网内存在两个路由器,则建立两个路由器之间的链路;

若子网内存在路由器和交换机,则根据路由器和交换机的接口表地址属于子网方式建立所述路由器与交换机之间的链路;

若子网内存在若干交换机,则判断每一交换机是否学习到路由器,若是,则建立所述交换机与所学习到的路由器之间的链路,若否,则根据所述交换机设备的接口表地址属于子网方式建立交换机间的链路。

进一步地,所述三层链路创建装置用于:

将每一子网内的交换机作为源设备进行遍历其他子网中的路由器,建立与学习到的路由器之间的链路。

进一步地,所述二层链路创建装置用于:

根据确定的根设备确定所述根设备与边缘设备之间的对应关系;

创建每一根设备所在的二层域,并确认所有二层域中设备的路由端口;

根据获取到的二层域根设备接口的上下联关系对象将二层域中所有设备更新至所述上下联关系对象中;

根据所述根设备与边缘设备之间的对应关系,确定每一二层域内设备的路由端口;

根据所述确定的路由端口及从所述上下联关系对象中获取到的上行端口建立两个端口之间的上下联关系链路。

进一步地,所述系统还包括:

判断装置,用于根据记录的两个设备之间的非个人计算机设备的链路及链路的键判断所述两个设备之间是否存在多个链路,若是,

获取装置,用于获取源接口对象设备和对端接口对象设备;

删除装置,用于判断所述源接口对象设备的接口索引是否等于所述对端接口对象设备的接口索引,若是,则删除所述源接口对象设备与所述对端接口对象设备之间的链路信息,若否,则保留所述链路信息。

进一步地,所述获取装置用于:

通过正向比较和/或反向比较获取源接口对象设备和对端接口对象设备。

进一步地,所述获取装置用于:

若链路源索引相同,则根据比较链路对端索引获取对端接口对象设备;

若链路对端索引相同,则根据比较链路源索引获取源接口对象设备。

进一步地,所述获取装置用于:

若链路源索引和对端索引相同,则比较所述链路源索引对应的对端索引与所述对端索引对应的源索引,根据所述对端索引获取源接口对象设备;

若链路对端索引相同,则比较链路源索引和对端索引,根据所述源索引获取对端接口对象。

与现有技术相比,本申请通过根据路由器和交换机的个数信息确定三层链路的链路信息;根据所创建的根设备和边缘设备的对应关系确定二层链路的链路信息;基于所述三层链路的链路信息及所述二层链路的链路信息创建网络拓扑图。从而建立较为完整的、动态的网络拓扑图,给网络监控提供便利,以便在设备将要发生故障时,及时把信息通知给管理员从而迅速发现局域网上出现的节点不合法、机器死机或链路中断等信息。同时能够在网络监控环境中快速、准确的发现网络中设备之间的关系,并最终以拓扑图的形式展现出来,更加的直观和便利。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请的一个方面提供的一种网络拓扑发现的方法流程示意图;

图2示出本申请中一实施例的网络拓扑发现的过程示意图;

图3示出根据本申请的另一个方面提供的一种网络拓扑发现的系统结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

图1示出根据本申请的一个方面提供的一种网络拓扑发现的方法流程示意图,该方法包括:

步骤s11,根据路由器和交换机的个数信息确定三层链路的链路信息;步骤s12,根据所创建的根设备和边缘设备的对应关系确定二层链路的链路信息;步骤s13,基于所述三层链路的链路信息及所述二层链路的链路信息创建网络拓扑图。在本申请一实施例中,通过三层路由算法和二层域算法分别计算三层链路及二层域中的二层链路,从而建立较为完整的、动态的网络拓扑图,给网络监控提供便利。在本申请一实施例中,计算三层链路时使用三层路由算法,其中,三层路由算法是指通过路由器和交换机的个数信息进行确定路由器与路由器、路由器与交换机、交换机与交换机之间的链路信息,从而创建出子网内以及子网间的完整链路信息。而计算二层链路时使用二层域算法,其中,二层域算法是指通过用户指定的根设备,创建根设备与边缘设备之间的对应关系,从而建立二层链路的链路信息,从而根据所建立好的三层链路的链路信息和二层链路的链路信息能够比较完整的发现网络中的拓扑,以便在设备将要发生故障时,及时把信息通知给管理员从而迅速发现局域网上出现的节点不合法、机器死机或链路中断等信息。通过本申请所述的网络拓扑发现的方法,能够在网络监控环境中快速、准确的发现网络中设备之间的关系,并最终以拓扑图的形式展现出来,更加的直观和便利。

在步骤s11中,根据路由器和交换机的个数信息建立子网内三层设备间的链路及子网间路由器与交换机之间的链路。在本申请一实施例中,建立子网内三层设备间的链路时,子网分类可以包括三个路由器、两个路由器、一个路由器和一个交换机以及两个三层交换机,根据子网分类建立子网内的每个设备之间的链路,其中,子网内设备包括若干路由器和/或若干交换机,还可能有个人计算机设备(pc)等,子网内的路由器和交换机个数决定路由器和路由器之间、路由器和交换机之间以及交换机与交换机之间的建立链路的方式;三层链路中存在多个子网,路由器也可能为多个,建立子网间链路信息时,与子网内有一个路由器和一个交换机的情况时建立的链路信息方式不同,因此,在本申请实施例中,采用根据路由器和交换机的个数信息进行确定三层链路的链路信息。

在步骤s12中,根设备一般为具有路由功能的三层交换机或网络环境中最顶层的设备,而边缘设备是指若交换机的某个端口只学习到路由器,没有学习到交换机,则指定该学习到的路由器为边缘设备,需要说明的是,开启路由功能的三层交换机即既为边缘设备也可为根设备。

优选地,在步骤s13中,根据预设的链路协议对所述三层链路的链路信息及所述二层链路的链路信息进行补充,得到补充后的二三层链路的链路信息;根据所述补充后的二三层链路的链路信息创建网络拓扑图。在本申请一实施例中,预设的链路协议可以为只应用于同类厂商的设备的私有协议或网络环境中的应用于所有设备的邻居发现协议,通过预设的链路协议进行补充发现二三层链路发现过程中遗漏的链路。

其中,二层无设备链路发现,主要是指对交换机、网桥、哑设备、防火墙、集线器(hub)、等设备进行重新发现,可以通过以下方式实现:通过stp链路的建立,cdp链路的建立,ndp链路的建立和lldp链路的建立中任一种或任几种的链路发现后,建立无链路设备与子网内三层之间的链路,建立无链路设备与子网内二层之间的链路。需要说明的是,stp为生成树协议,可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余;cdp、ndp分别为不同厂家的私有协议,可以发现与厂家的设备相邻设备之间的链路,lldp为链路层临近发现协议,可以向网络中其他节点公告自身的存在,并保存各个邻近设备的发现信息,以便获得链路信息。

三层无链路设备发现主要是指对路由器、pc等设备中的孤立设备进行重新发现,过程可以如下:通过cdp链路的建立、ndp链路的建立,建立无链路设备和下一跳设备的链路。其中,cdp和ndp只是一个补充链路算法协议,当通过二层和三层链路算法无法获得链路时,可以通过尝试获取。

进一步地,在步骤s13中,建立好二层链路的链路信息和三层链路的链路信息后,还可以根据预设的校验原则对所述三层链路的链路信息及所述二层链路的链路信息中的重复链路和/或错误链路信息进行校验,得到校验后的链路信息;基于所述校验后的链路信息创建网络拓扑图,从而对上述链路发现过程中重复发现的链路进行删除,或错误发现的链路进行矫正,最终过滤出符合要求的、准确的链路,以建立更准确的网络拓扑图。

当然,可以理解的是,在步骤s13中,不仅可以直接利用建立好的二层链路的链路信息和三层链路的链路信息进行创建网络拓扑图或者利用补充后的链路信息进行创建网络拓扑图,还可以对所述补充后的二三层链路的链路信息中的重复链路和/或错误链路信息进行校验,得到校验后的链路信息;基于所述校验后的链路信息创建网络拓扑图。在本申请一实施例中,如图2所示的网络拓扑发现的过程示意图,为一种基于网络监控系统下的网络拓扑发现,首先采用了二三层链路协议共用来发现拓扑,即实现二层链路发现和三层链路发现后建立起链路信息,又采用私有协议和网络环境中的邻居发现协议来补充发现二三层链路发现过程中遗漏的链路,最后对整个链路发现过程中的出现的重复链路和错误链路进行校验,得出最终链路信息,从而能够在网络监控环境中快速、准确的发现网络设备之间的关系,并最终以拓扑图的形式展现出来。

进一步地,在步骤s11中,建立子网内三层设备之间的链路信息时,子网分类支持以下四种:若子网内存在至少三个路由器,则根据确定的核心路由器建立与其他路由器之间的链路;若子网内存在两个路由器,则建立两个路由器之间的链路;若子网内存在路由器和交换机,则根据路由器和交换机的接口表地址属于子网方式建立所述路由器与交换机之间的链路;若子网内存在若干交换机,则判断每一交换机是否学习到路由器,若是,则建立所述交换机与所学习到的路由器之间的链路,若否,则根据所述交换机设备的接口表地址属于子网方式建立交换机间的链路。在本申请一实施例中,子网内存在三个路由器时,需要找到核心路由器,可以以设备唯一标识(ip)最小的为路由器也可以选择其他规则找到核心路由器,之后建立核心路由器与其他路由器之间的链路;若子网内是两个路由器的情况,则直接建立它们之间的链路;若是一个路由器和一个或若干交换机,则查找路由器和交换机的接口表地址属于子网的方式建立路由器与交换机之间的链路;若是两个三层交换机,则判断每个交换机是否学习到子网内的路由器,若学习到,则建立交换机与所学习到的路由器之间的链路,若否,则查找两个交换机设备接口表地址属于子网的方式建立链路,其中,交换机学习到路由器(或其他设备)是指交换机在与其他设备进行交互时,会自动记录下该设备的ip及设备的访问控制地址(mac地址)。

进一步地,在步骤s11中,不仅要建立子网间的链路信息,还需要建立子网间的链路信息,从使得三层链路的链路信息完整,通过将每一子网内的交换机作为源设备进行遍历其他子网中的路由器,建立与学习到的路由器之间的链路来实现。在本申请一实施例中,因存在多个子网,因此需要建立子网间的链路信息,即创建路由器和交换机之间的链路,将设备池中所有的三层交换机为源,遍历所有路由器设备,判断交换机是否学习到该路由器设备,如果学习到,则建立当前为源的交换机与其遍历学习到的路由器之间的链路。

进一步地,在步骤s12中,根据确定的根设备确定所述根设备与边缘设备之间的对应关系;创建每一根设备所在的二层域,并确认所有二层域中设备的路由端口;根据获取到的二层域根设备接口的上下联关系对象将二层域中所有设备更新至所述上下联关系对象中;根据所述根设备与边缘设备之间的对应关系,确定每一二层域内设备的路由端口;根据所述确定的路由端口及从所述上下联关系对象中获取到的上行端口建立两个端口之间的上下联关系链路。在本申请一实施例中,首先添加用户指定的设备为根设备,创建根设备和边缘设备之间的对应关系,例如一个根设备a下有三个边缘设备a1、a2和a3,三个边缘设备还可以再为根设备,比如a1为根设备,再遍历学习到其他设备,存在自己的边缘设备a11,则设备a与设备a1有对应关系,设备a1与设备a11有对应关系,确定每个根设备与其学习到的边缘设备的对应关系之后,创建所有根设备所在的二层域,如以根设备a创建一个二层域,而同样也需要以设备a1创建一个二层域,在创建二层域后确定所有二层域中设备的路由(r)端口,将二层域中所有设备加入到根设备所在的二层域中的r端口下,获取根设备二层域根接口的上下联关系对象,最后将二层域所有设备加入到该上下联关系对象中,其中,上下联关系对象包括接口学习到的pc机和交换机;可以理解的是,二层域存在多个,因此在创建所有二层域并随之确定二层域中设备的r端口仅是一个大的范围,还需要定位到每个二层域的r端口,因此需要找到根设备对应的边缘设备,若边缘设备不为空,则通过二层域的设备和根设备对应的边缘确定1个二层域内设备的r端口,其中,路由器学习到的非路由设备都可以加入到二层域的设备中。将最终没有确认出的上行端口(upport)添加到二层域的孤儿设备集合中,若没有确认到upport,则建立该设备的端口的上下联关系链路,其中,孤儿设备是指没有确认出设备的上行端口的设备,而上行端口是指上下联关系对象中的下一联设备与上一联设备发生交互的端口,建立二层链路的链路信息其实是建立上下联关系对象中两个设备之间的链路,通过确定上行端口与r端口确定链路信息。

进一步地,所述方法还包括:步骤s131,根据记录的两个设备之间的非个人计算机设备的链路及链路的键判断所述两个设备之间是否存在多个链路,若是,步骤s132,获取源接口对象设备和对端接口对象设备;步骤s133,判断所述源接口对象设备的接口索引是否等于所述对端接口对象设备的接口索引,若是,则删除所述源接口对象设备与所述对端接口对象设备之间的链路信息,若否,则保留所述链路信息。在本申请一实施例中,对链路发现过程中重复发现的链路进行删除,整理出两个设备间有多个链路的情况可以通过以下方式实现:只记录两端非pc的链路及链路的键,其中,链路的键(key)为“链路源设备ip+"-"+链路对端设备ip”,表示链路的保存方式,一条链路两端有源设备和目的设备(对端设备),ip为设备的唯一标识;因物理口比较稳定,逻辑口为人为设定,若发生变更,则会造成链路不准确,所以若链路有重复且为两个端口,则优先保留物理口的链路,再保留索引最小的口,提高链路的准确性。

进一步地,在步骤s132中,通过正向比较和/或反向比较获取源接口对象设备和对端接口对象设备。在此,预设的校验原则包括正向比较和/或反向比较,以确定链路发现过程中是否存在重复链路,进行链路的过滤。具体地,正向比较方式如下:若链路源索引相同,则根据比较链路对端索引获取对端接口对象设备;若链路对端索引相同,则根据比较链路源索引获取源接口对象设备。反向比较方式如下:若链路源索引和对端索引相同,则比较所述链路源索引对应的对端索引与所述对端索引对应的源索引,根据所述对端索引获取源接口对象设备;若链路对端索引相同,则比较链路源索引和对端索引,根据所述源索引获取对端接口对象。

在本申请一实施例中,正向比较时,如果链路源索引相同,则比较链路对端索引,并根据对端索引获取对端接口对象,若链路对端索引相同,则比较链路源索引,并根据源索引获取源接口对象。反向比较时,如果链路源索引和对端索引相同,则比较链路对端索引和源索引,并根据对端索引获取源接口对象,若链路对端索引相同,则比较链路源索引和对端索引,并根据源索引获取对端接口对象。通过上述的正向比较和反向比较确定源接口对象和对端接口对象,从而再比较源接口对象的接口索引是否等于对端接口对象的接口索引,若等于,则说明是重复链路,删除该链路,否则,需要保留链路信息,最终过滤出符合要求的、准确的链路,以提高网络拓扑图的准确性,利用校验后的链路信息创建的网络拓扑图在网络监控环境中较为准确的发现网络中设备之间的连线。

图3示出根据本申请的另一个方面提供的一种网络拓扑发现的系统结构示意图,该系统包括:

三层链路创建装置11,用于根据路由器和交换机的个数信息确定三层链路的链路信息;二层链路创建装置12,用于根据所创建的根设备和边缘设备的对应关系确定二层链路的链路信息;确定装置13,用于基于所述三层链路的链路信息及所述二层链路的链路信息创建网络拓扑图。在本申请一实施例中,通过三层路由算法和二层域算法分别计算三层域中的三层链路及二层域中的二层链路,从而建立较为完整的、动态的网络拓扑图,给网络监控提供便利。在本申请一实施例中,计算三层链路时使用三层路由算法,其中,三层路由算法是指通过路由器和交换机的个数信息进行确定路由器与路由器、路由器与交换机、交换机与交换机之间的链路信息,从而创建出子网内以及子网间的完整链路信息。而计算二层链路时使用二层域算法,其中,二层域算法是指通过用户指定的根设备,创建根设备与边缘设备之间的对应关系,从而建立二层链路的链路信息,从而根据所建立好的三层链路的链路信息和二层链路的链路信息能够比较完整的发现网络中的拓扑,以便在设备将要发生故障时,及时把信息通知给管理员从而迅速发现局域网上出现的节点不合法、机器死机或链路中断等信息。通过本申请所述的网络拓扑发现的系统,能够在网络监控环境中快速、准确的发现网络中设备之间的关系,并最终以拓扑图的形式展现出来,更加的直观和便利。

三层链路创建装置11,用于根据路由器和交换机的个数信息建立子网内三层设备间的链路及子网间路由器与交换机之间的链路。在本申请一实施例中,建立子网内三层设备间的链路时,子网分类可以包括三个路由器、两个路由器、一个路由器和一个交换机以及两个三层交换机,根据子网分类建立子网内的每个设备之间的链路,其中,子网内设备包括若干路由器和/或若干交换机,还可能有个人计算机设备(pc)等,子网内的路由器和交换机个数决定路由器和路由器之间、路由器和交换机之间以及交换机与交换机之间的建立链路的方式;三层域中存在多个子网,路由器也可能为多个,建立子网间链路信息时,与子网内有一个路由器和一个交换机的情况时建立的链路信息方式不同,因此,在本申请实施例中,采用根据路由器和交换机的个数信息进行确定三层链路的链路信息。

二层链路创建装置12,根设备一般为具有路由功能的三层交换机或网络环境中最顶层的设备,而边缘设备是指若交换机的某个端口只学习到路由器,没有学习到交换机,则指定该学习到的路由器为边缘设备,需要说明的是,开启路由功能的三层交换机即既为边缘设备也可为根设备。

优选地,确定装置13,用于根据预设的链路协议对所述三层链路的链路信息及所述二层链路的链路信息进行补充,得到补充后的二三层链路的链路信息;根据所述补充后的二三层链路的链路信息创建网络拓扑图。在本申请一实施例中,预设的链路协议可以为只应用于同类厂商的设备的私有协议或网络环境中的应用于所有设备的邻居发现协议,通过预设的链路协议进行补充发现二三层链路发现过程中遗漏的链路。

其中,二层无设备链路发现,主要是指对交换机、网桥、哑设备、防火墙、集线器(hub)等设备进行重新发现,可以通过以下方式实现:通过stp链路的建立,cdp链路的建立,ndp链路的建立和lldp链路的建立中任一种或任几种的链路发现后,建立无链路设备与子网内三层之间的链路,建立无链路设备与子网内二层之间的链路。需要说明的是,stp为生成树协议,可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余;cdp、ndp分别为不同厂家的私有协议,可以发现与厂家的设备相邻设备之间的链路,lldp为链路层临近发现协议,可以向网络中其他节点公告自身的存在,并保存各个邻近设备的发现信息,以便获得链路信息。

三层无链路设备发现主要是指对路由器、pc等设备中的孤立设备进行重新发现,过程可以如下:通过cdp链路的建立、ndp链路的建立,建立无链路设备和下一跳设备的链路。其中,cdp和ndp只是一个补充链路算法协议,当通过二层和三层链路算法无法获得链路时,可以通过尝试获取。

进一步地,建立好二层链路的链路信息和三层链路的链路信息后,确定装置13还可以用于根据预设的校验原则对所述三层链路的链路信息及所述二层链路的链路信息中的重复链路和/或错误链路信息进行校验,得到校验后的链路信息;基于所述校验后的链路信息创建网络拓扑图,从而对上述链路发现过程中重复发现的链路进行删除,或错误发现的链路进行矫正,最终过滤出符合要求的、准确的链路,以建立更准确的网络拓扑图。

当然,可以理解的是,确定装置13,不仅可以用于直接利用建立好的二层链路的链路信息和三层链路的链路信息进行创建网络拓扑图或者利用补充后的链路信息进行创建网络拓扑图,还可以用于对所述补充后的二三层链路的链路信息中的重复链路和/或错误链路信息进行校验,得到校验后的链路信息;基于所述校验后的链路信息创建网络拓扑图。在本申请一实施例中,如图2所示的网络拓扑发现的过程示意图,为一种基于网络监控系统下的网络拓扑发现,首先采用了二三层链路协议共用来发现拓扑,即实现二层链路发现和三层链路发现后建立起链路信息,又采用私有协议和网络环境中的邻居发现协议来补充发现二三层链路发现过程中遗漏的链路,最后对整个链路发现过程中的出现的重复链路和错误链路进行校验,得出最终链路信息,从而能够在网络监控环境中快速、准确的发现网络设备之间的关系,并最终以拓扑图的形式展现出来。

进一步地,三层链路创建装置11,用于建立子网内三层设备之间的链路信息时,子网分类支持以下四种:若子网内存在至少三个路由器,则根据确定的核心路由器建立与其他路由器之间的链路;若子网内存在两个路由器,则建立两个路由器之间的链路;若子网内存在路由器和交换机,则根据路由器和交换机的接口表地址属于子网方式建立所述路由器与交换机之间的链路;若子网内存在若干交换机,则判断每一交换机是否学习到路由器,若是,则建立所述交换机与所学习到的路由器之间的链路,若否,则根据所述交换机设备的接口表地址属于子网方式建立交换机间的链路。在本申请一实施例中,子网内存在三个路由器时,需要找到核心路由器,可以以设备唯一标识(ip)最小的为路由器也可以选择其他规则找到核心路由器,之后建立核心路由器与其他路由器之间的链路;若子网内是两个路由器的情况,则直接建立它们之间的链路;若是一个路由器和一个或若干交换机,则查找路由器和交换机的接口表地址属于子网的方式建立路由器与交换机之间的链路;若是两个三层交换机,则判断每个交换机是否学习到子网内的路由器,若学习到,则建立交换机与所学习到的路由器之间的链路,若否,则查找两个交换机设备接口表地址属于子网的方式建立链路,其中,交换机学习到路由器(或其他设备)是指交换机在与其他设备进行交互时,会自动记录下该设备的ip及设备访问控制地址(mac地址)。

进一步地,三层链路创建装置11,不仅用于建立子网间的链路信息,还用于建立子网间的链路信息,从使得三层链路的链路信息完整,通过将每一子网内的交换机作为源设备进行遍历其他子网中的路由器,建立与学习到的路由器之间的链路来实现。在本申请一实施例中,因存在多个子网,因此需要建立子网间的链路信息,即创建路由器和交换机之间的链路,将设备池中所有的三层交换机为源,遍历所有路由器设备,判断交换机是否学习到该路由器设备,如果学习到,则建立当前为源的交换机与其遍历学习到的路由器之间的链路。

进一步地,二层链路创建装置12,用于根据确定的根设备确定所述根设备与边缘设备之间的对应关系;创建每一根设备所在的二层域,并确认所有二层域中设备的路由端口;根据获取到的二层域根设备接口的上下联关系对象将二层域中所有设备更新至所述上下联关系对象中;根据所述根设备与边缘设备之间的对应关系,确定每一二层域内设备的路由端口;根据所述确定的路由端口及从所述上下联关系对象中获取到的上行端口建立两个端口之间的上下联关系链路。在本申请一实施例中,首先添加用户指定的设备为根设备,创建根设备和边缘设备之间的对应关系,例如一个根设备a下有三个边缘设备a1、a2和a3,三个边缘设备还可以再为根设备,比如a1为根设备,再遍历学习到其他设备,存在自己的边缘设备a11,则设备a与设备a1有对应关系,设备a1与设备a11有对应关系,确定每个根设备与其学习到的边缘设备的对应关系之后,创建所有根设备所在的二层域,如以根设备a创建一个二层域,而同样也需要以设备a1创建一个二层域,在创建二层域后确定所有二层域中设备的路由(r)端口,将二层域中所有设备加入到根设备所在的二层域中的r端口下,获取根设备二层域根接口的上下联关系对象,最后将二层域所有设备加入到该上下联关系对象中,其中,上下联关系对象包括接口学习到的pc机和交换机;可以理解的是,二层域存在多个,因此在创建所有二层域并随之确定二层域中设备的r端口仅是一个大的范围,还需要定位到每个二层域的r端口,因此需要找到根设备对应的边缘设备,若边缘设备不为空,则通过二层域的设备和根设备对应的边缘确定1个二层域内设备的r端口,其中,路由器学习到的非路由设备都可以加入到二层域的设备中。将最终没有确认出的上行端口(upport)添加到二层域的孤儿设备集合中,若没有确认到upport,则建立该设备的端口的上下联关系链路,其中,孤儿设备是指没有确认出设备的上行端口的设备,而上行端口是指上下联关系对象中的下一联设备与上一联设备发生交互的端口,建立二层链路的链路信息其实是建立上下联关系对象中两个设备之间的链路,通过确定上行端口与r端口确定链路信息。

进一步地,所述系统还包括:判断装置131,用于根据记录的两个设备之间的非个人计算机设备的链路及链路的键判断所述两个设备之间是否存在多个链路,若是,获取装置132,用于获取源接口对象设备和对端接口对象设备;删除装置133,用于判断所述源接口对象设备的接口索引是否等于所述对端接口对象设备的接口索引,若是,则删除所述源接口对象设备与所述对端接口对象设备之间的链路信息,若否,则保留所述链路信息。在本申请一实施例中,对链路发现过程中重复发现的链路进行删除,整理出两个设备间有多个链路的情况可以通过以下方式实现:只记录两端非pc的链路及链路的键,其中,链路的键(key)为“链路源设备ip+"-"+链路对端设备ip”,表示链路的保存方式,一条链路两端有源设备和目的设备(对端设备),ip为设备的唯一标识;因物理口比较稳定,逻辑口为人为设定,若发生变更,则会造成链路不准确,所以若链路有重复且为两个端口,则优先保留物理口的链路,再保留索引最小的口,提高链路的准确性。

进一步地,获取装置132用于通过正向比较和/或反向比较获取源接口对象设备和对端接口对象设备。在此,预设的校验原则包括正向比较和/或反向比较,以确定链路发现过程中是否存在重复链路,进行链路的过滤。具体地,正向比较方式如下:若链路源索引相同,则根据比较链路对端索引获取对端接口对象设备;若链路对端索引相同,则根据比较链路源索引获取源接口对象设备。反向比较方式如下:若链路源索引和对端索引相同,则比较所述链路源索引对应的对端索引与所述对端索引对应的源索引,根据所述对端索引获取源接口对象设备;若链路对端索引相同,则比较链路源索引和对端索引,根据所述源索引获取对端接口对象。

在本申请一实施例中,正向比较时,如果链路源索引相同,则比较链路对端索引,并根据对端索引获取对端接口对象,若链路对端索引相同,则比较链路源索引,并根据源索引获取源接口对象。反向比较时,如果链路源索引和对端索引相同,则比较链路对端索引和源索引,并根据对端索引获取源接口对象,若链路对端索引相同,则比较链路源索引和对端索引,并根据源索引获取对端接口对象。通过上述的正向比较和反向比较确定源接口对象和对端接口对象,从而再比较源接口对象的接口索引是否等于对端接口对象的接口索引,若等于,则说明是重复链路,删除该链路,否则,需要保留链路信息,最终过滤出符合要求的、准确的链路,以提高网络拓扑图的准确性,利用校验后的链路信息创建的网络拓扑图在网络监控环境中较为准确的发现网络中设备之间的连线。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1