欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种网络拓扑发现方法及装置、设备、存储介质独创技术48539字

一种网络拓扑发现方法及装置、设备、存储介质

2021-03-13 13:19:01

一种网络拓扑发现方法及装置、设备、存储介质

  技术领域

  本申请实施例涉及但不限于网络技术,尤其涉及一种网络拓扑发现方法及装置、设备、存储介质。

  背景技术

  网络拓扑发现是网络管理系统的一项重要的基本功能,主要作用是发现和维护网络设备、主机设备的连接关系,帮助网络管理员对整个网络拓扑有一个全面的认识。在拓扑图的基础上,网络管理员可以对故障节点进行快速定位。但是,相关技术中的网络拓扑发现方法还存在一定的局限性。

  发明内容

  有鉴于此,本申请实施例提供一种网络拓扑发现方法及装置、设备、存储介质。

  本申请实施例的技术方案是这样实现的:

  一方面,本申请实施例提供一种网络拓扑发现方法,所述方法包括:

  针对目标网络中的每一子网,确定所述子网中各交换机的端口转发表;

  基于各交换机的端口转发表,确定每一交换机的各下行端口和每一下行端口的MAC集合;

  基于所述各交换机的下行端口和每一下行端口对应的MAC集合,确定所述子网的网络拓扑。

  另一方面,本申请实施例提供一种网络拓扑发现装置,所述装置包括:

  第一确定模块,用于针对目标网络中的每一子网,确定所述子网中各交换机的端口转发表;

  第二确定模块,用于基于各交换机的端口转发表,确定每一交换机的各下行端口和每一下行端口的MAC集合;

  第三确定模块,用于基于所述各交换机的下行端口和每一下行端口对应的MAC集合,确定所述子网的网络拓扑。

  再一方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。

  又一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。

  本申请实施例中,首先,针对目标网络中的每一子网,确定子网中各交换机的端口转发表,然后,基于各交换机的端口转发表,确定每一交换机的各下行端口和每一下行端口的MAC集合,最后,基于各交换机的下行端口和每一下行端口对应的MAC集合,确定子网的网络拓扑。这样,由于在进行子网的网络拓扑发现时,简化了对完整的端口转发表的依赖性,只需下行的端口转发表数据完整,而下行的端口转发表的完整性是容易实现的,因此,具有更高的处理效率,得到的结果更准确,并且具有更高的容错性,对环境也具有更小的依赖性。

  附图说明

  图1A为本申请实施例提供的一种网络拓扑发现方法的实现流程示意图;

  图1B为二层网络场景中的端口连接示意图;

  图2为本申请实施例提供的一种网络拓扑发现方法的实现流程示意图;

  图3为本申请实施例提供的一种网络拓扑发现方法的实现流程示意图;

  图4为本申请实施例提供的一种基于路由表的BFS逻辑网络拓扑绘制方法的实现流程示意图;

  图5为本申请实施例提供的一种基于端口地址转发表的DFS二层网络拓扑绘制方法的实现流程示意图

  图6A为本申请实施例提供的一种网络拓扑绘制系统的组成结构示意图;

  图6B为本申请实施例提供的一种网络拓扑绘制系统的网络拓扑展示界面示意图;

  图6C为本申请实施例提供的一种网络拓扑绘制系统的交换机详情情况展示页面示意图;

  图7为本申请实施例提供的一种网络拓扑发现装置的组成结构示意图。

  具体实施方式

  为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

  在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

  如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一第二第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一第二第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

  除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

  为了更好地理解本申请实施例提供的网络拓扑发现方法,首先对相关的技术术语进行简单说明。

  简单网络管理协议(Simple Network Management Protocol,SNMP):一种应用层协议,是专门设计用于在IP网络中管理网络节点的一种标准协议。

  链路层发现协议(Link Layer Discovery Protocol,LLDP):一种数据链路层协议,是一种能够使网络中的设备互相发现并通告状态、交互信息的协议。

  管理信息库(Management Information Base,MIB):MIB定义了受管设备必须保存的数据项、允许对每个数据项进行的操作及操作的含义,即管理系统可访问的受管设备的控制和状态信息等数据变量都保存在MIB中。

  宽度优先搜索算法(Breadth First Search,BFS):又称广度优先搜索,是最简便的图的搜索算法之一,BFS算法也是很多重要的图的算法的原型。

  深度优先搜索算法(Depth First Search,DFS):一种用于遍历或搜索树或图的算法。

  在网络拓扑中,二层网络拓扑和三层网络拓扑都有着非常重要的作用。

  二层网络拓扑即开放式系统互联(Open System Interconnect,OSI)参考模型中第二层的网络拓扑,称为链路层网络拓扑。从底层看,二层网络拓扑是交换机之间的连接关系。

  三层网络拓扑是OSI参考模型中的第三层,通常这一层的网络拓扑称为逻辑网络拓扑,它描述的是路由器、子网之间的连接关系。

  在相关技术中,对于三层网络拓扑的发现方案,主要有以下几种方式:

  1)基于开放式最短路径优先(Open Shortest Path First,OSPF)协议的网络拓扑搜索算法:该算法就是在自身设备上构造OSPF协议数据,与网络中的设备通信,从而获取得到的路由信息来构筑连接关系,这种技术最大的优点就是速度快、性能高,但作用范围有限。

  2)基于SNMP路由表的网络拓扑发现:基于传输控制协议/网际协议(TransmissionControl Protocol/Internet Protocol,TCP/IP)的网络可以由很多个网络互连而成,其间最核心的网络设备就是路由器。路由信息包含了完整的拓扑信息,所以基于路由信息的拓扑发现算法能够较为完整的展现整个逻辑拓扑,在SNMP的MIB中定义的路由表详细的记录了设备的路由信息,通过对路由信息进行分析,便能得到网络的逻辑拓扑。

  对于二层网络拓扑的发现,主要解决的是交换机、网桥、集线器(Hub)、主机之间的连接关系的发现,相关技术中主要有以下几种方案:

  1)基于生成树协议(Spanning Tree Protocol,STP)的算法:通过监听网桥周期性发送的网桥协议数据单元(Bridge Protocol Data Unit,BPDU),以及SNMP里保存的生成树信息,再通过相关算法进行拓扑发现,得到二层网络的连接情况。

  2)贝尔(Bell)实验室的Breitbart等人提出了基于地址转发表获取链路层连接的相关算法,该算法的优点是能够处理虚拟局域网(Virtual Local Area Network,VLAN)内部的二层连接情况,缺点则是需要完整的地址转发表信息,具有一定的局限性。

  上述相关技术中的网络拓扑发现方法,存在如下缺陷:

  1)对于三层网络拓扑的发现,基于OSPF协议的搜索算法需要所有设备支持OSPF,且需要实现OSPF协议,较为复杂,实现难度较大;而基于SNMP路由表的网络拓扑发现方法,虽然基于SNMP的路由协议应用广泛,实现简单,只需设备支持SNMP协议即可,但对于多网口多网际协议(Internet Protocol,IP)的网络设备来说,单纯的基于路由表的拓扑发现会造成错误的拓扑判定和重复搜索。

  2)对于二层网络拓扑,基于STP的算法需要网络中的交换机开启STP协议,且当子网中有Hub、哑交换机等不可管理的哑设备时,基于STP的算法便会遇到阻碍,无法正常进行,因此适配场景较为单一;Bell实验室提出的基于地址转发表的相关算法,需要取得交换机各端口可以转发的全部MAC地址,也即交换机的完整的端口转发表,由于交换机在端口转发表里记录MAC的前提是在一段时间内有目的MAC为该MAC的流量经过,因此,取得交换机的完整端口转发表是有一定困难的。

  本申请实施例提供一种网络拓扑发现方法,如图1A所示,所述方法可以由计算机设备的处理器执行,包括:

  步骤S101,针对目标网络中的每一子网,确定所述子网中各交换机的端口转发表;

  这里,目标网络为需要进行网络拓扑发现的网络,目标网络中包括至少一个子网。在实施时,目标网络中的子网可以是预先配置的,也可以是通过任意合适的网络拓扑发现方法确定的,这里并不限定。由于三层网络拓扑中可以包括路由器与子网之间的连接关系。因此,在一些实施例中,可以在确定目标网络中的三层网络拓扑后,从该三层网络拓扑中获得目标网络中的子网。

  通过开启接入控制器(Access Controller,AC)的终端识别扫描模块,针对目标网络中的每一子网,在该子网范围内进行终端识别扫描,可以得到该子网内的各交换机。由于AC的终端识别扫描模块开启后,会对扫描网段内的所有IP不断的进行因特网包探索器(Packet Internet Groper,PING)探测,这样可以保证下行的端口转发表的完整性。

  交换机的作用就是基于目标媒体访问控制地址(Media Access ControlAddress,MAC)来进行数据包的转发,每个交换机都维护有一个端口转发表,又称MAC转发表,用于记录局域网主机端口MAC地址与交换机端口的对应关系,交换机就是根据这张表负责将数据帧传输到指定的主机端口上的。在实施时,子网中各交换机的端口转发表可以通过SNMP协议获取。在一些实施例中,还可以通过SNMP协议获取交换机的接口表等信息。

  步骤S102,基于各交换机的端口转发表,确定每一交换机的各下行端口和每一下行端口的MAC集合;

  这里,交换机端口可以分为上行端口和下行端口。将子网范围内出口路由或网关的MAC设置为标志节点,交换机端口中,出现标志节点的端口为上行端口,未出现标志节点的端口为下行端口。

  端口的MAC集合为通过该端口转发的数据包的目的MAC的集合,可以根据该端口所在的交换机的端口转发表获得。

  步骤S103,基于所述各交换机的下行端口和每一下行端口对应的MAC集合,确定所述子网的网络拓扑。

  这里,子网的网络拓扑可以为目标网络中的二层网络拓扑,可以包括但不限于子网中的交换机与交换机之间的连接、交换机与主机端口之间的连接关系等中的一种或多种。在实施时,本领域技术人员可以根据实际情况确定子网的网络拓扑包含的信息,这里并不限定。

  在子网的网络拓扑中,位于上行位置的交换机的下行端口的MAC集合是包含处于下行位置的交换机的下行端口的MAC集合的。

  例如,对于如图1B所示的二层网络场景来说,该场景二层网络中包含了交换机S1至S6,每一交换机分别有端口0至n,其中n为大于0的整数。假设交换机S4至S6末端分别连了终端pc1至pc3(图中未示出),出口路由为R,则对端口进行上下行划分,结果如下:

  上行端口:

  A1-15={R};

  A2-0={S1,R};

  A3-0={R,S1,S2,S4,pc1};

  A4-0={R,S1,S2,S3,S5,S6,pc2,pc3};

  A5-0={R,S1,S2,S3,S4,pc1,S6,pc3};

  A6-0={R,S1,S2,S3,S4,S5,pc1,pc2};

  下行端口:

  A1-1={S2,S3,S4,S5,S6,pc1,pc2,pc3};

  A2-1={S3,S5,S6,pc2,pc3};……;A2-2={S4,pc1};

  A3-1={S5};……;A3-2={S6};

  A4-1={pc1};

  A5-1={pc2};

  A6-1={pc3}。

  可见,下行端口的MAC集合元素数量越多的交换机越处于更上行的位置。因此,每次找出下行端口的MAC集合最多的交换机放在上行位置,利用交换机在二层网络拓扑中的位置与交换机下行端口的MAC集合的元素数量之间的关系,便可以得到交换机与交换机之间的连接、交换机与主机端口的连接关系等。这样,基于子网中所述各交换机的下行端口和每一下行端口对应的MAC集合,即可确定子网的网络拓扑。

  本申请实施例提供的网络拓扑发现方法,首先,针对目标网络中的每一子网,确定子网中各交换机的端口转发表,然后,基于各交换机的端口转发表,确定每一交换机的各下行端口和每一下行端口的MAC集合,最后,基于各交换机的下行端口和每一下行端口对应的MAC集合,确定子网的网络拓扑。这样,由于在进行子网的网络拓扑发现时,简化了对完整的端口转发表的依赖性,只需下行的端口转发表数据完整,而下行的端口转发表的完整性是容易实现的,因此,具有更高的处理效率,得到的结果更准确,并且具有更高的容错性,对环境也具有更小的依赖性。

  本申请实施例提供一种网络拓扑发现方法,如图2所示,所述方法可以由计算机设备的处理器执行,包括:

  步骤S201,针对目标网络中的每一子网,确定所述子网中各交换机的端口转发表;

  步骤S202,基于各交换机的端口转发表,确定每一交换机的各下行端口和每一下行端口的MAC集合;

  这里,上述步骤S201和S202分别对应前述步骤S101和S102,在实施时可以参照前述步骤S101和S102的具体实施方式

  步骤S203,确定所述子网的根交换机;

  这里,根交换机为子网内与该子网的出口网络设备连接的交换机。子网的出口网络设备为在三层网络中与该子网连接的网络设备,可以包括但不限于该子网的出口路由器、网关、三层交换机等中的任意一种。

  在一些实施例中,上述步骤S203可以包括:

  步骤S211,确定所述子网的出口网络设备;

  步骤S212,当所述出口网络设备为路由设备时,针对每一交换机,根据所述交换机的端口转发表,确定所述交换机的各端口的MAC集合;

  步骤S213,当所述各端口的MAC集合中存在仅包含所述子网的出口网络设备MAC的特定MAC集合时,确定所述特定MAC集合对应的端口与所述出口网络设备连接,并将所述交换机确定为所述子网的根交换机。

  在一些实施例中,上述步骤S203可以包括:当所述出口网络设备为三层交换机时,将所述三层交换机确定为根交换机。这里,由于三层交换机为具备路由功能的交换机,同时具备二层交换功能和三层转发功能,因此,当子网的出口网络设备为三层交换机时,该三层交换机即为该子网的根交换机。

  步骤S204,以所述根交换机为起始节点,基于深度优先遍历算法,对各交换机的每一下行端口进行遍历;

  步骤S205,针对每次遍历,基于所述各交换机的下行端口和每一下行端口对应的MAC集合,确定当前交换机的下行端口与其他交换机的端口的连接关系。

  这里,当前交换机为遍历过程中当前遍历到的交换机。由于在二层网络拓扑中,下行端口的MAC集合元素数量越多的交换机越处于更上行的位置,因此可以基于所述各交换机的下行端口和每一下行端口对应的MAC集合,确定当前交换机的下行端口与其他交换机的端口的连接关系。

  步骤S206,基于每一交换机的下行端口与其他交换机的端口的连接关系,确定各交换机之间的连接关系。

  这里,子网的网络拓扑可以包括子网中各交换机之间的连接关系。

  在一些实施例中,上述步骤S205可以包括:

  步骤S221,将所述子网内各交换机的MAC组成的集合,确定为所述子网的内部MAC集合;

  这里,内部MAC集合为子网内所有网络设备的MAC的集合,包括子网内各交换机的MAC。

  步骤S222,针对所述当前交换机的每一下行端口,根据所述下行端口的MAC集合确定所述下行端口的下行交换机集合;

  这里,下行端口的下行交换机集合中包括该下行端口的MAC集合中的每一MAC对应的交换机。

  步骤S223,针对所述下行交换机集合中的每一下行交换机,对所述下行交换机的各下行端口的MAC集合取并集,得到所述下行交换机的MAC集合;

  这里,下行交换机的MAC集合中包括该下行交换机的所有下行端口的MAC集合中的元素。

  步骤S224,对所述下行交换机的MAC集合与所述子网的内部MAC集合取交集,得到所述下行交换机的下行MAC数;

  步骤S225,确定所述下行交换机集合中下行MAC数最多的下行交换机;

  步骤S226,建立当前交换机的所述下行端口与所述下行MAC数最多的下行交换机的上行端口之间的连接关系。

  在一些实施例中,上述方法还可以包括:

  步骤S207,对于所述各交换机的每一下行端口,确定与所述下行端口连接的下行交换机;

  步骤S208,对所述下行交换机的各下行端口的MAC集合取并集,得到所述下行交换机的MAC集合;

  步骤S209,当所述下行端口的MAC集合的元素个数与所述下行交换机的MAC集合的元素个数之差大于1时,确定所述下行端口与所述下行交换机之间通过哑设备连接。

  这里,哑设备可以包括但不限于Hub、哑交换机等不可管理的或未识别的二层网络设备。

  本申请实施例提供的网络拓扑发现方法,以子网的根交换机为起始节点,基于深度优先遍历算法,对子网内的各交换机的每一下行端口进行遍历,并针对每次遍历,基于各交换机的下行端口和每一下行端口对应的MAC集合,确定当前交换机的下行端口与其他交换机的端口的连接关系。这样,可以快速且完整地得到子网中各交换机端口之间的连接关系,进而可以得到各交换机之间的连接关系。进一步地,还可以根据各下行端口的下行交换机的MAC集合的数量发现交换机之间接入的哑设备,因而在存在私接交换机或Hub的场景下,或某些拓扑节点获取不到数据的场景下,也能实现网络拓扑的发现,从而可以适用更广泛的场景,且容错性更好。

  本申请实施例提供一种网络拓扑发现方法,如图3所示,所述方法可以由计算机设备的处理器执行,包括:

  步骤S301,基于目标网络中各三层网络设备的路由表,确定所述目标网络的三层网络拓扑;

  这里,三层网络设备可以包括但不限于路由器、三层交换机等。

  三层网络设备的路由表可以基于SNMP协议从各三层网络设备中获取到。路由表中可以包括至少一个路由表项,每一路由表项的数据如下表1-1所示:

  表1-1

  如表1-1所示,路由表项的ipRouteType表示该路由表项对应的路由类型,当ipRouteType为4时,表示该三层网络设备连接的是邻接三层网络设备,也即该三层网络设备的下一跳地址是另一个三层网络设备(如路由器、三层交换机等);当ipRouteType为3时,表示该三层网络设备连接的是一个子网。

  三层网络拓扑中可以包括但不限于三层网络设备与三层网络设备之间的连接关系、三层网络设备与子网之间的连接关系等。基于目标网络中各三层网络设备的路由表的数据,可以确定目标网络的三层网络拓扑。

  在一些实施例中,上述步骤S301可以包括:

  步骤S311,基于广度优先遍历算法,对目标网络中的各三层网络设备进行遍历;

  这里,在进行广度优先遍历时,需要确定一个遍历起始点,遍历起始点可以是预先设定的三层网络设备,也可以是默认选取的三层网络设备。在实施时,可以将AC设备的默认网关对应的三层网络设备作为遍历起始点。本领域技术人员可以根据实际情况选择合适的遍历起始点,本申请实施例对此并不限定。

  步骤S312,针对每次遍历,获得当前三层网络设备的路由表中的各路由表项;

  步骤S313,针对每一路由表项,根据所述路由表项的路由类型和所述路由表项的下一跳地址,确定所述路由表项对应的下一跳节点,并建立所述三层网络设备与所述下一跳节点之间的连接关系;

  这里,下一跳节点可以包括但不限于下一跳地址对应的三层网络设备或子网。在确定路由表项对应的下一跳节点后,可以确定该三层网络设备与该下一跳节点之间是连接的,从而建立该三层网络设备与该下一跳节点之间的连接关系。

  在一些实施例中,还可以通过SNMP协议获取各三层网络设备的IP表;基于该路由表项中的下一跳地址和该IP表,确定该三层网络设备与下一跳节点之间的IP连接关系。

  在一些实施例中,还可以通过SNMP协议获取各三层网络设备的接口信息表;基于该路由表项中的路由出去的接口和该接口信息表,确定该三层网络设备与下一跳节点之间的接口连接关系。

  步骤S314,当确定所述下一跳节点有效时,将所述下一跳节点和所述连接关系不重复地添加至目标网络的三层网络拓扑中。

  这里,下一跳地址可能无法对应有效的三层网络设备或子网,因此需要检测下一跳地址对应的下一跳节点是有效的。

  当下一跳节点为子网时,需要判断子网的有效性。本领域技术人员可以根据实际情况选择合适的方式判断子网的有效性,本申请实施例对此并不限定。在一些实施例中,可以通过以下步骤确定下一跳节点是否有效:当所述下一跳节点为子网时,获得所述路由表项中的目的IP地址、下一跳IP地址和子网掩码;将所述目的IP地址与所述子网掩码进行位与运算,得到第一子网地址;将所述下一跳IP地址与所述子网掩码进行位与运算,得到第二子网地址;当所述第一子网地址与所述第二子网地址相同时,确定所述下一跳节点有效。在实施时,可以将routeType为3的路由表项中的目的IP地址与对应的子网掩码进行位与,得到目的地址对应的子网地址,将该路由表项中的下一跳IP地址与对应的子网掩码进行位与,得到下一跳地址对应的子网地址,若目的地址对应的子网地址与下一跳地址对应的子网地址相同,则表示目的IP为该子网中的可访问IP,也即该子网为一个有效的子网;若目的地址对应的子网地址与下一跳地址对应的子网地址不同,则表示目的IP为该子网中的不可访问IP,也即该子网为一个无效的子网。

  当下一跳节点为三层网络设备时,需要判断该三层网络设备的有效性,也即判断该三层网络设备是否为目标网络中的三层网络设备。在实施时,可以通过判断目标网络中是否存在下一跳地址对应的三层网络设备来确定该三层网络设备的有效性,若目标网络中存在下一跳地址对应的三层网络设备,则该三层网络设备是有效的,若不存在,则该三层网络设备无效。

  由于目标网络中可能存在多IP的三层网络设备,因而针对这类三层网络设备,会存在多个IP对应同一个设备的情况,也即在遍历过程中可能会出现同一三层网络设备被遍历多次,造成三层网络拓扑冗余的情况。因此,在确定每一路由表项对应的下一跳节点以及路由表项对应的三层网络设备与该下一跳节点之间的连接关系后,需要判断当前三层网络拓扑中是否存在重复的三层网络设备或重复的连接关系。对于重复的三层网络设备以及重复的连接关系,则不再添加至三层网络拓扑中。

  步骤S302,针对目标网络的三层网络拓扑中的每一子网,确定所述子网中各交换机的端口转发表;

  步骤S303,基于各交换机的端口转发表,确定每一交换机的各下行端口和每一下行端口的MAC集合;

  步骤S304,基于所述各交换机的下行端口和每一下行端口对应的MAC集合,确定所述子网的二层网络拓扑。

  这里,上述步骤S302至S304分别对应前述步骤S101和S103,在实施时可以参照前述步骤S101和S103的具体实施方式

  本申请实施例提供的网络拓扑发现方法,在进行子网的网络拓扑发现之前,基于目标网络中各三层网络设备的路由表,确定目标网络的三层网络拓扑。这样,可以准确高效地发现子网的网络拓扑和三层网络拓扑。进一步地,可以基于广度优先遍历算法,对目标网络中的各三层网络设备进行遍历,得到三层网络设备之间的连接关系以及三层网络设备与子网的连接关系。并且,可以通过对各三层网络设备及子网进行有效性判断,以去除三层网络拓扑中的无效节点。此外,该可以对多IP的三层网络设备进行有效去重,从而去除三层网络拓扑中的冗余数据,进而更加高效地完成网络拓扑的发现。

  本申请实施例提供一种网络拓扑发现方法,通过SNMP协议获取到待发现拓扑中网络设备的MIB信息,通过相应的逻辑算法,绘制当前的网络拓扑。该方法主要包括:三层网络(也即网络层)的拓扑绘制、二层网络(也即数据链路层)的拓扑绘制。下面分别对本申请实施例提供的三层网络拓扑绘制方法和二层网络拓扑绘制方法的具体实现过程进行说明。

  三层网络拓扑绘制方法

  在进行三层网络的拓扑绘制时,可以通过SNMP协议获取各三层网络设备的路由表、IP表、接口表信息,通过基于广度优先遍历的绘制算法,得到三层网络设备之间的连接关系、三层网络设备与子网的连接关系。

  图4为本申请实施例提供的一种基于路由表的BFS逻辑网络拓扑绘制方法的实现流程示意图,如图4所示,该方法包括以下步骤:

  步骤S401,初始化待访问路由器队列、拓扑根节点、路由器集合;

  这里,在初始化待访问路由器队列时,需要指定一个起始路由器,将该起始路由器放入待访问路由器队列。起始路由器可以人为指定,也可以将AC设备的默认网关作为起始路由器。

  步骤S402,判断待访问路由器队列是否为空,若为空则结束流程,若不为空则转至步骤S403;

  步骤S403,取出待访问路由器队列的首元素Rx;

  步骤S404,访问Rx的路由表;

  步骤S405,判断Rx的路由表是否为空,若为空则转至步骤S418,若不为空则转至步骤S406;

  步骤S406,取出Rx的一个路由表项;

  步骤S407,判断路由表项中路由类型是否为4,若不是则转至步骤S408,若是则转至步骤S411;

  步骤S408,取出路由表项中的子网信息;这里,子网信息包括但不限于子网掩码、目的IP地址、下一跳IP地址;

  步骤S409,判断该子网是否为有效子网,若是则转至步骤S410,若不是则转至步骤S416;

  这里,需要判断子网的有效性,具体做法是对routeType=3的路由表项中的目的IP地址与子网掩码按位与得到子网地址,若该子网地址与IP地址表项中的IP、子网掩码按位与得到的结果相同,则表示该路由表项对应的子网为一个有效的子网。

  步骤S410,将该子网不重复地加入子网队列,并记录Rx与该子网的连接关系;

  步骤S411,判断根据路由表项中的下一跳地址是否能找到路由器,若能则转至步骤412,若不能则转至步骤S416;

  步骤S412,判断该路由器是否已经访问过,若没访问过则转至步骤S413,若访问过转至步骤S415;

  这里,对于已访问过的设备不创建新的节点,仅记录对应的IP连接关系,这样可以有效避免对多IP的设备创建重复的节点。

  步骤S413,将该路由器加入到待访问路由器队列;

  步骤S414,创建该路由器节点;

  步骤S415;记录Rx与该路由器的连接关系;

  步骤S416,判断该路由表中是否有下一个路由表项,若有则转至步骤S417,若没有则转至步骤S418;

  步骤S417,取出下一个路由表项,并转至步骤S407;

  步骤S418,将Rx从待访问路由器队列里移出,并转至步骤S402。

  需要说明的是,由于三层交换机也具有路由功能,因此需要将该三层交换机加入到待访问路由器队列中,并做特殊标记,用于二层拓扑发现。

  二层网络拓扑绘制方法

  在进行二层网络的拓扑绘制时,通过SNMP协议获取各二层网络设备的端口转发表、接口表等信息,通过基于深度优先遍历的绘制算法,得到二层网络设备之间的连接关系、二层网络设备与终端主机的连接关系。

  下面首先对本方法涉及的一些理论基础进行说明,本方法涉及以下推论:

  推论1:路由器与交换机的连接关系:

  简单来说,交换机Sx的端口j的转发表集合Sx-j有且仅包含路由器Rx的MAC,则该交换机Sx的j端口与Rx相连。

  推论2:交换机与交换机的连接关系:

  a)记子网内所有的交换机MAC集合为A,记交换机Sx所有下行端口的MAC集合为Bx,则A∩Bx=Cx,统计集合Cx的元素个数为Cxn;

  b)对于交换机的Sx的下行端口j的转发表集合Sx-j,若Sx-j中即存在A中的交换机MAC记录,取Sx-j中Cxn值最大的交换机Sm,则Sx的下行端口j与Sm的上行端口相连。

  推论3:交换机与Hub的连接:

  对于交换机Sx的端口j的转发表集合Sx-j,若交换机Sx与交换机Sm相连,则新的Sn=Sx-j-Bm,如集合Sn的元素个数>=2,则交换机Sx的端口j与Hub相连。

  基于上述推论,本申请实施例提供一种基于端口地址转发表的DFS二层网络拓扑绘制方法,如图5所示,该方法包括以下步骤:

  步骤S501,输入当前子网信息,并设置标志节点;

  这里,通过输入当前子网信息可以从逻辑拓扑发现的子网队列中获得对应的子网,对该子网进行二层网络拓扑绘制。

  此外,还可以遍历逻辑拓扑发现的子网队列,逐一取出子网进行二层拓扑绘制;

  步骤S502,找出该子网范围内的所有交换机设备,建立交换机队列;

  步骤S503,遍历每个交换机,得到上行端口和下行端口;

  步骤S504,计算下行端口转发表里出现过交换机mac的个数,记为Cxn;

  步骤S505,确定根交换机;

  这里,如果子网的出口网络设备是三层交换机,则此三层交换机为根交换机,如果出口网络设备是路由设备,则根据上述推论1,得到根交换机。

  步骤S506,将根交换机的下行端口依次压入端口栈;

  步骤S507,判断端口栈是否为空,若为空则转至步骤S514,若不为空则转至步骤S508;

  步骤S508,取出位于栈顶的下行端口,获取该下行端口的MAC转发表;

  步骤S509,判断该MAC转发表是否存在未处理过的交换机MAC;若存在则转至步骤S510,若不存在则转至步骤S513;

  步骤S510,根据推论2,得到与该下行端口连接的交换机,并标记已处理过的交换机;

  步骤S511,将得到的与该下行端口连接的交换机的所有下行端口转发表的MAC集合从该下行端口转发表的MAC集合中去除;

  步骤S512,将该交换机的所有下行端口依次压入端口栈;转至步骤S509;

  步骤S513,根据推论3,得到该下行端口的Hub连接情况;转至步骤S507;

  步骤S514,记录该子网内总的交换机及Hub的连接情况。

  这里,最后得到的各交换机的端口的MAC集合即为与该端口相连的交换机。

  本申请实施例提供的二层网络拓扑绘制方法,简化了对完整的端口转发表的依赖性,只需下行的端口转发表完整即可。而要做到下行的端口转发表完整,对于AC来说,是完全可行的,因为AC的终端识别扫描模块,本身就会对监控网段的所有IP不断的进行PING探测,这样就可以保证下行端口的完整性。

  本申请实施例提供的二层网络拓扑绘制方法利用标志节点划分上行端口和下行端口,利用下行端口的MAC集合之间的包含关系,得到具体各交换机的连接关系,不仅算法效率更高,且只需下行端口的MAC集合完备即可。此外,如果一个端口有多个MAC与之相连,则中间必然有未识别的交换机与之相连,便可以确定端口下是否有私接交换机或Hub的场景,这样,容错性处理更好,即使子网中有哑交换机、Hub或是未识别的交换机,也不会影响整个拓扑绘制流程的进行。

  基于上述网络拓扑发现方法,本申请实施例提供一种网络拓扑绘制系统,整个网络拓扑绘制系统的核心目的即是将用户的网络拓扑情况展示出来,其流程可以概括为采集数据、分析数据、展示数据。

  在网络拓扑绘制系统中,各子模块如图6A所示,包括数据采集模块610、拓扑绘制模块620和拓扑展示模块630,其中:

  数据采集模块610可以基于用户配置的监控网段,获得AC通过终端识别扫描得到的该监控网段内的网络设备列表,并基于SNMP协议获得网络设备列表中各网络设备的路由表、IP表、接口表信息、端口转发表等数据,并将获得的各网络设备数据发送至拓扑绘制模块620;

  拓扑绘制模块620可以对数据采集模块610发送的网络设备数据进行分析,得到网络拓扑的结果数据,并将该结果数据发送给拓扑展示模块630;

  拓扑展示模块630可以将网络拓扑的结果数据通过展示界面进行展示。

  该系统绘制的网络拓扑的展示界面如图6B所示,管理员在首次执行拓扑绘制后,便能在网络拓扑展示页面得到路由器与交换机、交换机与交换机、AC与交换机、交换机与终端之间的连接关系。对于每个设备,点击进去都能得到每个设备的详情情况,设备详情页可以展示设备的基本信息,对于交换机来说,如图6C所示,每个端口的连接情况得到充分展示。

  基于前述的实施例,本申请实施例提供一种网络拓扑发现装置,该网络拓扑发现装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备(可以是个人计算机、服务器或者网络设备等)中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。

  图7为本申请实施例网络拓扑发现装置的组成结构示意图,如图7所示,所述网络拓扑发现装置700包括:第一确定模块710、第二确定模块720和第三确定模块730,其中:

  第一确定模块710,用于针对目标网络中的每一子网,确定所述子网中各交换机的端口转发表;

  第二确定模块720,用于基于各交换机的端口转发表,确定每一交换机的各下行端口和每一下行端口的MAC集合;

  第三确定模块730,用于基于所述各交换机的下行端口和每一下行端口对应的MAC集合,确定所述子网的网络拓扑。

  在一些实施例中,所述子网的网络拓扑包括子网中各交换机之间的连接关系。对应地,所述第二确定模块还用于:确定所述子网的根交换机;以所述根交换机为起始节点,基于深度优先遍历算法,对各交换机的每一下行端口进行遍历;针对每次遍历,基于所述各交换机的下行端口和每一下行端口对应的MAC集合,确定当前交换机的下行端口与其他交换机的端口的连接关系;基于每一交换机的下行端口与其他交换机的端口的连接关系,确定各交换机之间的连接关系。

  在一些实施例中,所述第二确定模块还用于:将所述子网内各交换机的MAC组成的集合,确定为所述子网的内部MAC集合;针对所述当前交换机的每一下行端口,根据所述下行端口的MAC集合确定所述下行端口的下行交换机集合;针对所述下行交换机集合中的每一下行交换机,对所述下行交换机的各下行端口的MAC集合取并集,得到所述下行交换机的MAC集合;对所述下行交换机的MAC集合与所述子网的内部MAC集合取交集,得到所述下行交换机的下行MAC数;确定所述下行交换机集合中下行MAC数最多的下行交换机;建立当前交换机的所述下行端口与所述下行MAC数最多的下行交换机的上行端口之间的连接关系。

  在一些实施例中,所述第二确定模块还用于:确定所述子网的出口网络设备;当所述出口网络设备为路由设备时,针对每一交换机,根据所述交换机的端口转发表,确定所述交换机的各端口的MAC集合;当所述各端口的MAC集合中存在仅包含所述子网的出口网络设备MAC的特定MAC集合时,确定所述特定MAC集合对应的端口与所述出口网络设备连接,并将所述交换机确定为所述子网的根交换机。

  在一些实施例中,所述第二确定模块还用于:当所述出口网络设备为三层交换机时,将所述三层交换机确定为根交换机。

  在一些实施例中,所述第二确定模块还用于:对于所述各交换机的每一下行端口,确定与所述下行端口连接的下行交换机;对所述下行交换机的各下行端口的MAC集合取并集,得到所述下行交换机的MAC集合;当所述下行端口的MAC集合的元素个数与所述下行交换机的MAC集合的元素个数之差大于1时,确定所述下行端口与所述下行交换机之间通过哑设备连接。

  在一些实施例中,所述目标网络的网络拓扑包括三层网络拓扑;所述网络拓扑发现装置还包括:第四确定模块,用于基于目标网络中各三层网络设备的路由表,确定所述目标网络的三层网络拓扑。

  在一些实施例中,所述第四确定模块还用于:基于广度优先遍历算法,对目标网络中的各三层网络设备进行遍历;针对每次遍历,获得当前三层网络设备的路由表中的各路由表项;针对每一路由表项,根据所述路由表项的路由类型和所述路由表项的下一跳地址,确定所述路由表项对应的下一跳节点,并建立所述三层网络设备与所述下一跳节点之间的连接关系;当确定所述下一跳节点有效时,将所述下一跳节点和所述连接关系不重复地添加至目标网络的三层网络拓扑中。对应地,第一确定模块还用于针对目标网络的三层网络拓扑中的每一子网,确定所述子网中各交换机的端口转发表。

  在一些实施例中,第四确定模块还用于:当所述下一跳节点为子网时,获得所述路由表项中的目的IP地址、下一跳IP地址和子网掩码;将所述目的IP地址与所述子网掩码进行位与运算,得到第一子网地址;将所述下一跳IP地址与所述子网掩码进行位与运算,得到第二子网地址;当所述第一子网地址与所述第二子网地址相同时,确定所述下一跳节点有效。

  以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

  需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的网络拓扑发现方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ReadOnly Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

  对应地,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。

  对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。

  这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

  应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

  需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

  在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

  上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

  另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

  本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。

  或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

  以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

《一种网络拓扑发现方法及装置、设备、存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)