网络拓扑发现技术旨在自动识别和绘制出网络中所有设备(如路由器、交换机、服务器、PC等)之间的连接关系图。
核心原理(技术选型)
1. 基于SNMP的原理
这是最经典、最主流的方法。
核心思想:利用SNMP协议查询网络设备(尤其是交换机和路由器)中预存的管理信息库(MIB)。
工作流程:
发现设备:通过Ping扫描或读取已知设备,建立初始设备列表。
查询MIB:
地址转发表(MAC Table):查询交换机的dot1dTpFdbTable(桥接MIB),获取每个端口学习到的MAC地址。这是最关键的一步。
接口信息表(IF-MIB):查询设备的接口列表、名称、状态、速度等。
IP路由表(IP Forwarding Table):查询路由器的路由表,了解网络层的路径信息。
分析连接关系:通过分析MAC地址表,可以推断出:如果一个交换机A的某个端口学到了另一个交换机B的MAC地址,那么这两个设备很可能通过该端口相连。通过关联ARP表和MAC表,可以进一步确定IP设备(如PC、服务器)连接在哪个交换机的哪个端口上。
2. 基于ARP/CAM表的原理
这是SNMP方法的一个子集或简化版,更侧重于二层连接。
核心思想:直接读取设备的ARP表(IP到MAC的映射)和交换机的CAM表(MAC到端口的映射)。
工作流程:
获取网络中活跃的IP地址列表。
通过SNMP或CLI登录,读取网关或核心交换机的ARP表,获取IP-MAC对应关系。
遍历所有交换机,读取它们的CAM表,获取MAC-端口对应关系。
将两者结合,即可绘制出“哪个IP设备(通过哪个MAC地址)连接在哪个交换机的哪个端口上”。
3. 基于主动探测的原理
这种方法不依赖于设备提供的MIB信息,而是通过发送探测包来推断拓扑。
核心思想:模拟数据包的传输路径,观察其行为。
工作流程:
Traceroute:向目标IP发送TTL递增的数据包,通过中间路由器返回的“超时”消息,可以构建出从源到目的地的三层路径。通过向多个目标进行Traceroute,可以拼凑出网络的三层拓扑。
CDP/LLDP 探测:主动向网络发送多播探测包,监听并解析支持CDP或LLDP的设备发送的邻居公告。
4. 基于邻居发现协议的原理
利用网络设备自动宣告的邻居信息,这是最直接、最准确的方法。
核心思想:直接监听或请求设备使用专用协议(如CDP、LLDP)报告的邻居信息。
工作流程:拓扑发现工具通过SNMP或CLI查询设备的LLDP-MIB或CDP-MIB,直接获取“本机端口 - 对端设备 - 对端端口”的完整连接信息。这种方式得到的结果非常精确。
5. 基于监听/被动发现的原理
核心思想:不主动发送任何探测包,而是通过监听网络流量(如ARP广播、DHCP请求)来发现设备和推断关系。
优点:零干扰,不会增加网络负担,安全性高。
缺点:发现速度慢,且如果设备不通信,就可能无法被发现。
关键协议
1. SNMP(简单网络管理协议)
角色:数据采集的核心协议。几乎所有现代的网络拓扑发现工具都使用SNMP来从设备上获取MIB数据。
版本:v2c最常用,v3提供了加密和认证,更安全。
2. LLDP(链路层发现协议)和 CDP(思科发现协议)
角色:直接提供邻居连接信息的协议。
CDP:思科专有协议,主要用于思科设备之间。
LLDP:IEEE标准的协议(802.1AB),被绝大多数厂商(华为、H3C、Juniper等)支持,是跨厂商环境下的首选。
功能:设备会定期向邻居发送包含自身身份(设备ID、端口ID、系统能力等)的信息。通过查询这些信息,可以精确绘制设备间的物理连接。
3. ICMP(互联网控制消息协议)
角色:用于设备发现和连通性测试。
功能:
Ping (Echo Request/Reply):用于发现活跃的IP设备。
Traceroute (Time Exceeded):用于发现源到目标之间的路径,构建三层拓扑。
4. ARP(地址解析协议)
角色:提供IP地址与MAC地址的映射关系。
功能:拓扑发现工具通过读取路由器或三层交换机的ARP表,将网络层的IP地址与数据链路层的MAC地址关联起来,这是将IP设备定位到交换机端口的关键一步。
流程概述
最终网络管理系统实现过程中综合运用以上多种技术和协议:
设备发现:使用ICMP Ping扫描一个IP地址段,找到存活的主机。
标识关键设备:通过SNMP sysObjectID等信息,识别出这些设备是路由器、交换机还是普通PC。
收集连接信息:
优先使用LLDP/CDP,如果能获取到,连接关系就基本确定了。
如果没有LLDP/CDP,则使用SNMP查询交换机的地址转发表(MAC Table) 和ARP表,通过算法分析出连接关系。
对于三层网络,使用Traceroute来补充路由器之间的连接路径。
数据关联与呈现:将所有收集到的信息(设备类型、接口状态、连接关系)进行关联和整合,在一个图形化界面上绘制出网络拓扑图。
开发成功展示:
