一种物理网络拓扑发现系统及其方法 【技术领域】
本发明涉及计算机网络拓扑发现以及通用的MIB(管理信息库)库信息,特别是一种物理网络拓扑发现系统及其方法,基于此类信息的物理拓扑发现以及通用的拓扑发现技术。
背景技术
交换机已成为现代计算机网络的关键设备。对于网络管理员来说,能够随时获取网络的拓扑信息具有极其重要的意义。它可以帮助判断链路的通断、进行错误相关性分析,以及将服务器安放在最合适的位置。
传统的拓扑发现技术只进行三层的逻辑网络连接发现,即发现路由器和子网的连接,这种技术显然不适用于交换机的环境。因为与路由器的路由表存放了相邻实体(指路由器)的信息不同,交换机的通用地址转发表并不能明确给出相邻实体(指交换机)地信息。当然,某些厂商提供特定的协议支持设备的发现,如CISCO的CDP协议。但通常局域网中的设备并不来自同一个厂家,在这种异构网络的环境下,需要有新的算法来支持异构网络的拓扑发现,这些算法所基于的信息基础必须是所有厂商都支持的共同标准。
【发明内容】
本发明的目的在于提供一种物理网络拓扑发现的方法,是能在异构网络环境提供的有限信息基础上,准确地发现二层物理网络拓扑结构,包括交换机端口与交换机端口的连接、交换机与主机的连接、交换机和HUB的连接、主机与HUB的连接。同时可以把该算法应用到VLAN的环境中。
基于通用MIB库信息的二层网络拓扑(在本文档中,二层网络拓扑等同于物理网络拓扑,二者可以互换)发现方法。本发明通过自行设计的算法,通过设备确定、信息采集、信息计算三个阶段发现二层网络的拓扑结构。本发明的特点在于,将一般算法收集网络信息前所需要发送的ICMP消息数从O(n2)降低到O(n),减少了对网络带宽的占有量并提高了系统运行的速度;本发明同时能发现网络中对于交换机透明的HUB设备,从而给出确切的物理连接而非逻辑连接。该发明能应用到各类IP网(IPV4,IPV6,IP电信网等)中实现,既适用于没有VLAN的环境,也适用于配置有VLAN且每个VLAN对应于一棵生成树的环境等。
基于通用RFC定义的MIB信息的二层物理网络拓扑发现方法,包括设备发现、信息采集和拓扑计算三个阶段来达到目的,我们所提出的算法基于通用的RFC定义的MIB信息,适用于异构网络,通过计算能给出二层网络中交换机端口与交换机端口,交换机端口与HUB,交换机端口与主机,主机与HUB的连接关系;
我们提出的算法,算法运行前的采集信息预处理过程,所发送的ICMP信息量为O(n),算法所基于的理论基础是关于上行端口和下行端口划分。
首先介绍我们所提出的基于二层拓扑发现的算法
1定义
转发表:交换机Si的端口j在交换过程中存储的该端口收到的源MAC
地址集合,记为F(Si,j);
转发表完整:交换机Si的端口j的转发表完整指F(Si,j)包含了所有
该端口所能看到的设备MAC地址的集合;
叶交换机:在转发表完整的情形下,若某个交换机存在且仅存在一个
端口,其转发表包含其它交换机的MAC地址;
标志节点:当算法运行的主机为待发现子网中的成员,则该主机称为
标志节点;否则,连接该子网的路由器称为标志节点;
交换机的叶端口:如果交换机Si端口j的转发表F(Si,j)在完整的情
况下不包含其它任何交换机或标志节点的MAC地址,则
称为该交换机的叶端口;
上行端口:端口对应的转发表中出现标志节点MAC地址的端口;
下行端口:端口对应的转发表中没有出现标志节点MAC地址的端口;
2定理
若交换机Si与Sk满足:(n=1,2….,N,N为交换机Sk的端口计数,且n不等于上行端口集合中端口的编号),则Si的端口j与Sk的上行端口1直接相连。例如,图2中S3的上行端口为1,下行端口为2,3,满足F(S2,2)=F(S3,2)∪F(S3,3)∪{S3},因此判定S2端口2与S3上行端口1相连。
我们提出的算法1,算法的理论计算依据是:交换机A的下行端口与交换机B的上行端口直接连接的条件是交换机A的下行端口转发表正好等于交换机B的非上行端口转发表之并集再并上B本身。3算法-1(适用于交换机与交换机直接相连而不是通过HUB相连)
1)PING子网内所有交换机
图3给出了PING消息流的方向;
2)依次读取每台交换机的地址转发表;
3)从各交换机地址转发表中构造每台交换机的上行端口与下行端口集合,同时将子网内所有交换机节点放入待检测队列;
4)将叶交换机节点依次压入待生成队列(此队列为先进先出队列),同时把叶交换机从待检测队列移去;
5)从待生成队列中取出一节点,使其成为待检测节点;
6)在其它结点的下行端口集合中各端口的地址转发表中查询是否包含待检测节点MAC地址,若出现但表中节点个数大于1,则删除此表项,若仅出现检测节点,则此项所对应的端口的端口号与待检测节点的上行端口直接连接,同时将此端口从当前节点的下行端口集合中移去;
7)每遍历完一节点,若此节点的下行端口集合为空,则将此交换机节点压入待生成结点队列中,同时从待监测队列移去;
8)若待生成队列不空,重复6至8。我们给出的算法2能发现多个交换机之间通过HUB相连的情况,其特征在于,某个交换机的下行端口转发表等于若干个交换机的非上行端口转发表的并集再并上这些交换机本身。4算法-2(对于算法-1的改进,能适用于交换机与交换机之间通过HUB相连的情况,兼容算法1的情况,但复杂性稍大)
1)找出所有的交换机集合;
2)PING所有交换机;
3)获取所有交换机的转发表,并判断上行端口和下行端口;
4)将所有叶交换机节点压入待生成队列,所有非叶交换机压入待检测队列;
5)取出待检测队列中的一个检测节点,逐个检测其下行端口
CASE1:若某个下行端口仅包含一个待生成队列中的节点而不包含待检测队列中的节点,则将此下行端口直接与生成队列中该节点的上行端口相连,并将此下行端口从转发表中去掉,若去除后该节点已经没有下行端口,则将此节点压入待生成队列;把对应与之相连的的生成队列中的节点去掉;
CASE2:若其下行端口包含若干个待生成队列中的节点,而不包括待检测队列中的节点,则此下行端口与这几个待生成队列的上行端口之间通过HUB相连接,同时,将此下行端口从转发表中去除,若去除后没有任何别的下行端口,则将此节点压入待生成队列;把对应与之相连的生成队列中的节点去掉;
CASE3:若其下行端口包含有非待生成队列的节点,则检测下一个下行端口;
6)检测完所有下行端口后,若该节点仍然存在下行端口,则将此节点重新压入待检测节点的队列尾部;
7)重复5、6两步,直到待检测节点队列为空(表示完成),
图4所示为一个包含HUB的子网环境,运用该算法进行拓扑发现过程如下:
各下行端口的转发表为
F(S1,2)={S2,S5,S6}
F(S1,3)={S3,S4,S7}
F(S2,2)={S5,S6}
F(S3,2)={S7}
记待生成队列为Q,待检测队列为T,则初始时
Q={S5,S6,S7,S4}
T={S1,S2,S3}
第一步,取出S1,检测F(S1,2),F(S1,3),均为CASE3,于是将S1压入T队尾,此时
Q={S5,S6,S7,S4}
T={S2,S3,S1}
第二步,取出S2,检测F(S2,2),为CASE2,于是在S2端口2,S5端口1和S6端口1之间加一个HUB,从Q中去除S5,S6,同时删除S2的端口2的下行端口转发表,删除后S2已经不存在下行端口转发表,因此将S2压入Q,此时
Q={S7,S4,S2}
T={S3,S1}
第三步,取出S3,检测F(S3,2),为CASE1,将S3端口2和S7端口1直接相连,同时从Q中去掉S7,同时删除S3端口2的下行端口转发表,删除后S3已经不存在下行端口转发表,将S3压入Q,此时
Q={S4,S2,S3}
T={S1}
第四步,取出S1,检测F(S1,2),为CASE1,将S1端口2与S2端口1直接相连,并将S2从Q中去除,删除S1端口2的下行端口转发表,由于S1还有一个下行端口,所以继续检测S1的下一个下行端口转发表,此时
Q={S4,S3}
第五步,检测F(S1,3),为CASE2,将S1端口3,S4端口1,S3端口1通过HUB相连,将S4,S3从Q中去除,删除S1端口3的下行端口转发表,删除后S1已经不存在下行端口转发表,将S1压入Q,此时
Q={S1}
T=空集
算法结束
为了达到所要求的目的,本解决方案在所提出的算法基础上,通过设备发现、信息采集和拓扑计算三个阶段来达到需要的目的,具体包括以下步骤:(如图5所示)
一确定管理域的IP地址范围,可以由网络管理员手动给出,或者可以通过查询网关路由器自动获得,通过查询网关路由器的ipRouteTable来获得。同时查询路由器的端口号,判断是否存在单臂路由
二确0定步骤一所得到的网络地址范围中活动的IP地址集合,通过ping所有IP地址实现;
三确定子网数以及相应的子网号和子网掩码,通过访问路由器的ipAddrEntry来获得;
四将步骤二中所得到活动IP地址集合映射到具体的物理设备,并实例化相应设备;
向每个活动的IP地址发送SNMP GET消息,若该IP地址对应设备没有实现BRIDGE-MIB,则该IP地址对应设备为主机;若该IP地址对应设备实现了BRIDGE-MIB,并且其ipForwarding为0,则该IP地址对应设备为交换机;若该IP地址对应设备实现了BRIDGE-MIB,并且其ipForwarding为1,则该IP地址对应设备为路由器;多个IP地址可能对应于同一个物理设备,可以通过查看该设备的IP地址表来避免把这些IP地址映射为不同的设备;
五对于某个子网,从运行拓扑发现的主机ping所有步骤四中所获得的属于该子网的交换机设备;
六获取步骤四中发现的属于该子网的交换机的地址转发表信息;
七通过所给出的算法对步骤六中所获得的信息进行分析计算,获得交换机端口与交换机端口之间的连接(可能存在交换机-HUB-交换机连接);
八根据交换机地址转发表中的信息,确定主机与交换机端口的连接,包括交换机-HUB-主机的连接;
本发明的优点在于:利用各个厂家都支持的RFC所定义的MIB信息作为拓扑发现算法的基础,能够适用于异构网络;摈弃了一般二层拓扑发现对于所有转发表都要完整的要求,算法所采集的信息能保证算法准确地进行拓扑发现,大大减少了为达到转发表完整要求而所需要的PING操作数;能准确定位到端口与端口的连接,而不是简单的设备与设备的逻辑连接;能发现对于交换机透明的HUB设备;同时,该算法也能应用于配置VLAN且每个VLAN都对应于一棵生成树的环境;
【附图说明】
图1是典型的子网环境图。
图2是定理示例图。
图3是ICMP消息的流向图。
图4是一个包含HUB的子网环境,运用该算法进行拓扑的流程图。
图5是本发明的物理网络拓扑发现方法流程图。
图6是本发明的物理网络拓扑发现系统图。
图1是关于一个典型子网环境的各个术语示例
其中S1、S2、S3、S4、S5为交换机,M为管理节点,即算法运行的节点,M同时也为该子网的标志节点。其中S3的上行端口为端口1,下行端口为端口2与端口3。S2、S4、S5为叶交换机。S4的端口2、S2的端口2分别为交换机S4和交换机S2的叶端口。
M为管理站,同时也是标志节点;Sk(k=1..5)为交换机,交换机旁边的数字表示端口号,Host代表主机。
图2是定理的一个例子
图中,S3的上行端口为1,下行端口为2,3,满足F(S2,2)=F(S3,2)∪F(S3,3)∪{S3},因此判定S2端口2与S3上行端口1相连。
交换机S2,S3的转发表如下所示
F(S2,2)={S3,S5,S6}
F(S3,2)={S5}
F(S3,3)={S6}满足F(S2,2)=F(S3,2)∪F(S3,3)∪{S3},因此判定S2端口2与S3上行端口1相连。
图3是ICMP消息的流向
其中虚线箭头为ICMP请求消息流,实线箭头为ICMP响应消息流
图4是算法2网络环境的一个实例
图中有管理站和标志节点M,交换机Sk(k=1..7)以及两个连接交换机的HUB。
【具体实施方式】
实施该方案的前提有
(1)各个交换机都配置有IP地址,都为可管理的,且都实现了
RFC1213-MIB和RFC1493定义的BRIDGE-MIB;
(2)运行算法所在的主机安装有SNMP agent
(3)活动的交换机和主机都响应PING消息
可以将实现系统划分为四个装置:
(1)设备确定装置;
(2)信息采集装置;
(3)信息处理装置;
(4)拓扑信息数据库;
(5)拓扑显示装置;
图6给出了五个装置的相互关系。设备确定装置包括了确定管理域IP地址范围,确定活动IP地址集合,收集设备信息并实例化各个物理设备。所需要查询的MIB信息包括ipRouteTable、ipAddrTable、sysDescr、ifTable、ipForwarding、dotldBaseType等。该装置最终的结果是给出特定IP地址范围内活动的交换机集合、路由器集合、主机集合,并实例化相应设备。
信息采集装置通过SNMP消息收集算法所需要的信息。在信息采集之前,首先需要对给定子网内的所有交换机都发送PING消息,以填充相应交换机的转发表。信息采集所需要查询的MIB信息为dotldTpFdbTable。
信息处理装置包括算法分析计算过程和信息存储过程装置。信息处理过程采用我们给出的算法通过对上行端口、下行端口及其转发表的分析,得出交换机端口到端口、交换机与HUB以及交换机与主机之间的物理连接信息。信息存储过程的前提是要进行数据库接口设计,所设计的数据库要使得拓扑显示装置能简单而全面地获得拓扑信息。通过数据库接口同时实现了信息计算与显示的分离。
信息存储过程负责把算法分析的结果存放到数据库中。
拓扑信息数据库;存贮拓扑信息数据;
拓扑显示装置包括获取数据库拓扑信息,根据拓扑信息进行拓扑显示。拓扑显示可以根据用户的喜好采用不同的显示风格。但无论采用哪种拓扑显示方法,显示总是独立于拓扑信息的计算的。
其中,设备确定装置连接于信息采集装置,信息采集装置连接于信息处理装置,信息处理装置连接于拓扑信息数据库,拓扑信息数据库连接于拓扑显示装置,拓扑显示装置连接于设备确定装置。