拓扑自动发现的主要目的是获取和维护网络节点的信息和它们之间的连接关系,并在此基础上绘制出整个网络拓扑图。拓扑自动发现是网络管理功能中网络配置功能的重要内容,其他的各项功能都以已知网络的拓扑结构为基础。
网络拓扑自动发现的方法主要有3种:基于简单网络管理协议(simple network management protocol,SNMP)的网络拓扑发现方法、基于通用协议的网络拓扑发现方法和基于路由协议的网络拓扑发现方法。
网络层拓扑发现的原理是,首先通过默认网关路由器获取存在的子网列表,然后通过因特网控制消息协议(Internet control message protocol,ICMP)或路由器中的地址解析协议(address resolution protocol,ARP)遍历指定子网中的活动设备,并用系统团体名库去找到设备的团体名(community string),如果找到则用SNMP协议获取设备的基本信息,判断出设备的类型(路由器/交换机/防火墙/不间断电源/主机等),并在此基础上获取相应设备的详细信息。如果没有找到设备的团体名,则默认此设备为主机。
链路层拓扑发现的原理是根据交换机的思科发现协议(Cisco discovery protocol,CDP)邻居表、端口接口索引和端口对应表以及自学习表判断出各交换机的连接关系,具体的拓扑发现步骤如下:获取所有路由器的ARP表信息,对于主机则通过ARP来获取信息。获取所有交换机的CDP邻居表、端口接口索引和端口对应表以及自学习表。对交换机的互联关系进行判断,如果某个交换机的某个端口学习到了路由器的媒体访问控制地址,则认为此端口为上行端口,如果交换机只有一个端口有自学习表项,也认为此端口是上行端口。如果一个交换机的上行端口中没有接其他的交换机则此交换机为根交换机。对于每个交换机,如果它的某个端口和其他根上的多个端口冲突,通过CDP信息修正二者之间的连接关系。
路由层的拓扑发现原理是通过轨迹路由发现所有设备节点,根据返回的路由路径即可得到相关设备的路由拓扑关系,拓扑发现的步骤如下:首先找到根节点,如果没有则生成一个;然后对每一个非路由器设备调用轨迹路由程序,将标识号为空又没有子节点的主干节点删掉,将主机有子节点的设备改成路由器。