基于SNMP的网络拓扑发现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于SNMP的网络拓扑发现
一、SNMP简介
SNMP(Simple Network Management Protocol,简单网络管理协议)是一种基于TCP/IP协议的互连网管理协议。
SNMP诞生于1988年,当时只想把它作为一个短期的网络管理框架,临时用于管理连接到Internet上的设备。但随着SNMP的发展和大量应用,其使用范围已大为扩展,超出了Internet的范围。SNMP逐渐作为一种标准的协议在网络管理领域得到了普遍的接受和支持,成为了事实上的国际标准。
SNMP采用“管理进程/代理进程”模型来监视和控制各种可管理网络设备。其核心思想是在每个网络节点上设置一个管理信息库MIB(Manage Information Base),由节点上的代理负责维护,管理进程通过应用层协议对这些信息库进行访问。
图3.1说明了SNMP网络管理框架的一般体系结构,它由四个主要部件构成,分别是:通信网络、网络协议、网络管理进程和被管网络实体。
网络管理进程被管网络实体
图3.1 简单网络管理协议(SNMP )体系结构
二、 基于SNMP 协议的网络层拓扑发现
SNMP 已经成为网络管理的标准,为网络拓扑自动发现带来了巨大的方便,同时也大大提高了网络拓扑发现的速度。
路由器
子网
图3.2 网络拓扑结构模型
网络层拓扑发现算法的任务就是发现被管网络中的子网、路由器以及它们之间的连接关系。图3.2是网络拓扑结构的一个模型。其中,各子网通过各自的路由器与其他子网通信,它们都连接到路由器的一个端口上。路由器的一个端口可以连接一个子网,也可以同其他路由器相连。当子网内的某一机器向别的子网发送数据时,数据包首先到达本子网的缺省路由器,缺省路由器检测数据包中的目的地址,根据其路由表确定该目的地址是否在与自己相连的子网中。如果是,则把数据包直接发往目的地,否则转发给路由表中规定的下一个路由器,下一个路由器再进行类似处理,依次类推,数据包将最终到达目的地。可见,通过分析路由器上的路由表,就可以知道网络层的拓扑结构。
2.1 网络层拓扑发现用到的MIB 组
MIB-II(RFC-1213)是标准的SNMP MIB ,所有的路由器都必须实现它。拓扑发现程序为了具有通用性的特点,必然选择MIB-II 作为拓扑发现工具。MIB-II 由很多不同的组组成,本节的拓扑发现算法用到的组包括:system ,interfaces ,和ip 。下面详细介绍这三个组中包含的对象。
1) System组
该组内包含七个对象,分别为:sysDescr、sysObjectID、sysUpTime、sysContact、sysName、sysLocation和sysServices。其中sysDescr描述了设备的相关信息,一般包括厂商,型号等。S ysObjectID唯一标识特定厂商的特定类型设备,比如sysObjectID为1.3.6.1.4.9.5.45,则可以判断该设备为思科公司生产的型号为cisco6506的交换机。SysUptime表示设备从最近一次启动开始正常运行的时间。SysContact由网络管理员设定,一般设为网络管理员的联系方式。SysName 为设备的名字,算法中会用这个对象来判断不同的IP地址是否属于同一个设备。SysLocation由网络管理员设定,一般设为设备所在地点。SysServices表示了该设备所能提供的服务。
2) Interfaces组
该组包含两个对象ifNumber和ifTable。其中,ifNumber对象表示该设备所具有的接口数量。该组的另一个元素ifTable是一张表,表内的每一个字段都是某一个接口的一个属性,包括接口索引(ifindex),接口类型(ifType),接口速度(ifSpeed)和接口物理地址(ifPhysAddress)等。
3) IP组
该组的元素较多,其中有三个表对拓扑发现来说比较重要,分别是ipAddrTable,ipRouteTable和ipNetToMediaTable。
通过表ipAddrTable,可以找到被管设备所有的IP地址,同时结合interfaces 组的ifTable表,可以把接口和其IP地址一一对应起来。
网络层的拓扑发现算法主要就是利用表ipRouteTable来判断网络层的拓扑结构的。子网与路由器以及路由器和路由器的关系都能从路由表中得出来。该表中对应拓扑发现的对象列举如下:
IpRouteDest:路由的目的地址。如为0.0.0.0,说明该路由为缺省路由。通往同一个目的地的路由可能有多个,路由的选择依赖于所使用的路由协议。
IpRouteNextHop:路由的下一跳路由器地址。
ipRouteMask:路由目的地的子网掩码。提取IP数据包中的目的地地址,与ipRouteMask进行按位“与”运算,得到的结果与ipRouteDest比较,如相同则应选择该路由。如果ipRouteDest为0.0.0.0,则规定ipRouteMask也为0.0.0.0。
ipRouteType:路由的类型,为整型类型。其意义如表3.1所示:
表3.1 ipRouteType值及其意义
ipRouteType值意义
Other(1) 其他
Invalid(2) 非法
Direct(3) 该路由目的地址为路由器直接连接的子网
远程路由,目的地址为远程的主机、网络或
Indirect(4)
子网
2.2 基于SNMP的网络层对象发现
在详细讨论拓扑发现算法之前,首先对算法中涉及到的一些问题进行说明。
1)默认网关的发现
首先,访问拓扑发现程序所在计算机的SNMP MIBII中的ipRouteTable,如果发现有ipRouteDest值为0.0.0.0的记录,则说明程序所在的计算机设置了默认网关,该记录的ipRouteNextHop值即为默认网关的地址。
检查默认网关的ipForwarding值。如果为1,则表明该默认网关确实是路由设备,否则不是。
2) 子网的发现
遍历路由器MIBII的IP管理组中管理对象ipRouteDest下的所有对象,以每个路由目的网络号为索引,查询ipRouteType字段的值。若该值为3(direct),则表明这条路由为直接路由,若该值为4(indirect),则为间接路由。间接路由表明在通往目的网络或目的主机的路径上还要经过其它路由器,而直接路由表明目的网络或目的主机与该路由设备直接相连,这样就得到了与路由器直接相连的网络号。
再以这组网络号中的每个为索引,查询其路由掩码(ipRouteMask)。根据路