您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 绩效管理 > 基于SNMP的校园网拓扑发现系统的设计与实现
基于SNMP的校园网拓扑发现系统的设计与实现刘家乐,雷显臻,周兴旺(湖南交通工程职业技术学院计算机系,湖南衡阳,421001)摘要:网络拓扑信息的发现是校园网络管理软件中非常重要的功能。论文文基于SNMP协议,设计了一个校园网拓扑发现系统,提出了系统的总体架构和功能模块,研究了网络层拓扑发现技术和链路层拓扑发现技术,实现了网络层拓扑发现功能和链路层拓扑发现功能,并给出了系统的实际运行效果。关键字:网络拓扑发现;SNMP;校园网;网络管理中图分类号:TP315。DesignandImplementationofCampusNetworkTopologyDiscoverySystemBasedonSNMPLIUJia-le,LEIXian-zhen(HunanTechnicalCollegeofCommunication&EngineeringDepartmentofComputerTechnology,Hengyang,421001,China)Abstract:ThediscoveryofNetworktopologyinformationisaveryimportantfunctionofthecampusnetworkmanagementsoftware.Inthispaper,wehavedesignedacampusnetworktopologydiscoverysystem,basedontheSNMPprotocol,andhaveproposedthegeneralframeworkandfunctionalmodulesofthenetworklayertopologydiscoverytechniques,wealsohavestudiedlink-layertopologydiscoverytechnology.Andthusithasrelizedthefunctionofnetworklayertopologydiscoveryandthefunctionoflinklayertopologydiscovery,andhaspresentedthesystem'sactualoperatingeffects.Keywords:NetworkTopologyDiscovery;SNMP;CampusNetwork;NetworkManagement1引言网络拓扑结构的获得对于校园网的网络管理具有十分重要的意义,是校园网络管理软件中一项非常基础的功能,校园网拓扑发现系统就是为了解决校园网络中的拓扑发现问题而开发的。SNMP协议在当前的校园网环境中广泛应用,利用SNMP的相关技术进行校园网拓扑结构的获取具有技术成熟,可行性强的特点。本系统的主要功能就是利用SNMP协议自动发现校园网络环境中的各种网络设备,并确定它们的连接信息,绘制出校园网络的拓扑结构图。2拓扑发现系统的总体设计2.1系统体系结构校园网络拓扑发现系统的体系结构如图1所示,划分为三个层次:最下层是拓扑信息获取层,负责网络设备基础拓扑信息的采集,然后以一定的形式送到中间层;中间层是拓扑信息分析层,负责从收集到的基础拓扑数据中分析出网络拓扑结构;最上层为拓扑图形显示层,负责拓扑图的绘制和展示。拓扑图形显示拓扑拓扑信息分析拓扑拓扑信息获取网络设备图1拓扑发现系统体系结构2.2功能模块系统的功能模块分为5个部分,如图2所示总体控制模块链路层拓扑发现拓扑信息储存拓扑图形显示系统图形界面网络层拓扑发现图2拓扑发现系统总体功能模块2.3系统开发环境本系统采用Eclipse集成环境、ObjectSNMP及AdventNetSNMPAPI软件开发包在Java平台上进行开发。AdventNetSNMPAPI是美国AdventNet公司推出的一个开发包,它提供了全面的API用于开发基于SNMP的网络管理应用。ObjectSNMP是智和信通公司推出的一个面向对象的SNMP开发组件,实现了Object到SNMPMIB的映射。3网络层拓扑发现3.1网络层拓扑发现的基本原理网络层拓扑发现的主要任务是发现网络层节点设备之间的连接关系,主要是指路由器与路由器、路由器与子网之间的连接关系。SNMP通过管理站/代理的模式对网络设备进行管理,实质上是对网络设备中的管理信息库MIB进行管理。IETF规定的MIB中定义了可访问的网络设备及其属性,由对象识别符OID唯一指定。MIB是一个树形结构,SNMP协议消息通过遍历MIB树形目录中的节点来访问网络中的设备。基于SNMP协议的网络层拓扑发现的基本原理是:利用SNMP协议,从设备的MIB库中提取出与网络层拓扑发现相关的信息,如接口地址表和路由转发表,然后将这些信息安装一定的算法归纳、整理,从而得出网络的逻辑拓扑结构。3.2网络层拓扑发现相关的MIB本系统网络层拓扑发现功能主要基于RFC-1213定义的MIB-II是标准。MIB-II由很多不同的部分组成,本文的主干拓扑发现算法用到的组包括:System组,Interfaces组和IP组。在算法中需要使用的对象描述如下:(1)system组的sysService对象,表示设备服务层次。(2)interfaces组的ifNumber对象,表示系统中的网络接口数量。(3)算法中用到的IP组的对象有三个:简单对象ipFowrarding和两个表对象,接口地址表ipAddrTable、路由转发表ipRouteTable。简单对象ipFowrarding用来表示设备是否具有转发功能,它的值只能为1或2,为1代表系统开启了路由功能,正在进行数据转发,2则代表关闭了转发功能。路由转发表ipRouterTable是对路由器的路由信息的相关描述,其中ipRouteNextHop表示下一条地址,有可能就是邻近路由器的接口地址。3.3网络层拓扑发现的算法描述网络层拓扑发现算法从当前管理站的网关地址开始,使用SNMP协议对网关IP地址进行探测。如果ipForwarding=1且sysServices3,则判断该节点是一个三层设备。如果设备具有dot1dBaseBridgeAddress则是三层交换机,否则便是路由器。如果ipForwarding=2且sysServices值为2、3,则该节点是一个二层设备。既不是二层设备、也不是三层设备的节点可以判定它是普通的PC主机。对于三层设备,可以获得它的IP地址表ipAddrTable,并根据其中的ipRouteNextHop来确定下一个发现的三层设备。网络层拓扑发现算法的伪代码描述如下:初始化网关路由器集合routerVector;初始化路由器连接集合routerConnectVector;获取指定起始网关的标识和指定的IP地址,实例化一个Rouer类对象,设定其processFlag值为false,将该对象放入RouterVector中;while(RouterVector中还有processFlag为false的路由器){从RouterVector中读取一个Router对象,记为currentRouter;获取currentRouter的ipAddrTable信息,填入其addrVector中;获取currentRouter的ipRouterTable信息,除去其中ipRouteType为“无效”的条目;for(ipRouterTable表中各项路由记录){if(路由记录为直连网段){以ipRouteDest及ipRouteMask等实例化一个Subnet类对象;将该对象无重复地放入currentRouter的subnetVector中;}else{判断当前条目的ipRouteNextHop不同于currentRouter的所有IP地址;获取ipRouterNextHop对应网关路由器的RouterID;以ipRouteNextHop和currentRouter的标识和IP地址值实例化一个RouterConnect类对象routerConn;If(routerConn没有在ConnectVector中存在)将routerConn填入ConnectVector中;ipRouteNextHop等信息实例化一个Router类对象aRouter;设置aRouter的processFlag为false,将其放入RouterVector中;}}设置currentRouter标志为“已处理”;}算法完成后,结果信息保存在全局变量routerVector和routerConnectVector中。4链路层拓扑发现4.1链路层拓扑发现的基本原理本系统采用基于地址转发表(AFT)的链路层拓扑发现技术,通过分析交换机的AFT表来推算交换机及其与主机、路由器之间的连接关系。贝尔实验室的YuriBreitbart给出了基本算法,通过分析交换机端口对应的AFT中的MAC地址集合关系来确定交换机和交换机,交换机和路由器、主机之间的连接关系。此算法在实际应用中要求每台交换机的地址转发表必须完整,即每台交换机必须知道其他交换机所连接的端口。为此本系统采取了一项改进措施,对每个交换机作一次Ping操作,使得地址转发表中的记录完整。4.2链路层拓扑发现相关的MIB交换机MIB对应的标准是Bridge-MIB。在Bridge-MIB中定义了dot1dTpFdbAddress(OID:1.3.6.1.2.1.17.4.3.1.1)来存放地址交换机的地址转发表,其对应的端口存放在端口信息表dot1dTpFdbPort(OID:1.3.6.1.2.1.17.4.3.1.2)上。通过查询dot1dTpFdbAddress和dot1dTpFdbPort便可以找到发现交换机MAC的端口。4.3链路层拓扑发现算法链路层拓扑发现算法主要分成两步,首先是收集交换机AFT原始记录信息,然后在此基础上对AFT记录进行分析,得出交换机之间的连接关系。(1)链路层AFT信息收集①获取网络所有交换机列表,确定可以通过SNMP读取MIB库信息的交换机集合switchVector,并且确定其IP地址与MAC地址的对应关系,以及标志节点(运行算法的主机或目标子网中转发运行算法主机发出的数据报文的路由器)。②对集合switchVector中所有设备进行ping操作。③读取集合switchVector中所有设备和标志节点的MAC地址是否在其他所有交换机的端口上出现,得到三元组(switchA,switchB,switchportB),表示在switchB的端口switchportB上发现了switchA的MAC地址。将三元组存放在集合swConnTemp中。(2)链路层拓扑连接信息分析根据得到的三元组(switchA,switchB,switchportB)集合,推导出所有设备端口之间的连接关系,得到交换机端口连接四元组(switchA,switchportA,switchB,switchportB)。表示switchA的端口switchportA与switchB的端口switchportB直连,并存放在集合swConnVector中,这样就得到了子网内交换机的链接关系。具体的推导发现算法伪代码描述如下:根据主干拓扑发现的结果构造子网集合subnetVector;for(子网集合subnetVector中的每一个子网){初始化交换机集合switchVector;确定子网内可以通过SNMP读取的交换机集合到switchVector中;确定标志节点到rootDevice;Ping集合switchVector中的每个交换机for(switchVector中的每个交换机switchA){If(switchA的MAC出现在switchB的MAC表中){查找switchA对应的端口号switchportB;swConnTemp.add(switchA,switchB,switchportB);}}根据三元组集合发现交换机间的连接关系;输出发现结果四元组集合swConnVector;}5系统的测试与运行5.1运行环境系统在真实的高校校园网络
本文标题:基于SNMP的校园网拓扑发现系统的设计与实现
链接地址:https://www.777doc.com/doc-4795370 .html