衡水学院毕业论文设计.docx

上传人:李司机 文档编号:6260536 上传时间:2023-10-11 格式:DOCX 页数:25 大小:167.13KB
返回 下载 相关 举报
衡水学院毕业论文设计.docx_第1页
第1页 / 共25页
衡水学院毕业论文设计.docx_第2页
第2页 / 共25页
衡水学院毕业论文设计.docx_第3页
第3页 / 共25页
衡水学院毕业论文设计.docx_第4页
第4页 / 共25页
衡水学院毕业论文设计.docx_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《衡水学院毕业论文设计.docx》由会员分享,可在线阅读,更多相关《衡水学院毕业论文设计.docx(25页珍藏版)》请在三一办公上搜索。

1、衡水学院毕业论文(设计)基于Python的网络拓扑发现工具的设计与实现姓名:包学号:院系:数学与计算机科学系专业:网络工程指导教师:杨金山二O二二年四月二十日学位论文原创性声明本人所提交的学位论文基于python的网络拓扑发现工具的设计与实现,是在导师的指导下,独立进行研究工作所取得的原创性成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中标明。本声明的法律后果由本人承担。论文作者(签名):指导教师确认(签名):年月日年月日学位论文使用授权书本学位论文作者完全了解衡水学院有权保留并向国家有关部门或机构送交

2、学位论文的复印件和磁盘,允许论文被查阅和借阅。本人授权衡水学院可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其它复制手段保存、汇编学位论文。论文作者(签名):指导教师(签名):目前计算机网络结构不断多样化,从手动维护逐渐演变到智能化自动运维,网络拓扑自动发现在网络管理中拥有着至关重要的地位。网络拓扑自动发现能够准确反映网络设备之间的连接关系,以便管理员能够全面管理网络,并快速诊断和定位网络上发现的异常流量、网络攻击和报警设备,以减少网络异常造成的损失。因此,实现高效、准确的网络拓扑自动发现对网络管理系统具有重要意义。网络拓扑的自动发现是通过多种协议(例如:ARP协议

3、、SNMP协议、ICMP协议等)获取拓扑发现程序所在网络中的网络设备信息、网络设备的类型和拓扑相关信息,根据基于SNMP的拓扑发现算法,利用网络协议所采集的网络设备信息和发现所要管理的网络中的所有节点(包括路由设备、子网和主机等),计算出它们之间的连接关系,从而构造出整个网络的拓扑结构,实现网络层拓扑自动发现。本文主要是基于SNMP协议,采用python编程调用SNMP协议的相关工具去获取网络设备信息值,提取出设备类型、端口连接状态、下一跳地址等数据进行算法分析,进而得到完整的局域网拓扑图。关键字:SNMP协议;网络层拓扑;pythonABSTRACTAtpresent,thestructur

4、eofcomputernetworkisconstantlydiversified,frommanualmaintenancetointelligentautomaticoperationandmaintenance.Automaticnetworktopologydiscoveryplaysavitalroleinnetworkmanagement.Automaticnetworktopologydiscoverycanaccuratelyreflecttheconnectionrelationshipbetweennetworkdevices,sothatadministratorscan

5、comprehensivelymanagethenetwork,andquicklydiagnoseandlocateabnormaltraffic,networkattacksandalarmdevicesfoundonthenetwork,soastoreducethelosscausedbynetworkabnormalities.Therefore,therealizationofefficientandaccurateautomaticnetworktopologydiscoveryisofgreatsignificancetothenetworkmanagementsystem.I

6、nfact,theautomaticdiscoveryofnetworktopologyistoobtainthenetworkequipmentinformation,networkequipmenttypeandtopologyrelatedinformationinthenetworkwherethetopologydiscoveryprogramislocatedthroughavarietyofprotocols(suchasARPprotocol,SNMPprotocol,ICMPProtocol,etc.),andusethenetworkequipmentinformation

7、collectedbythenetworkprotocolanddiscoverallnodesinthenetworktobemanaged(includingroutingequipment,subnetandhost,etc.)accordingtoacertaintopologydiscoveryalgorithm,Theconnectionrelationshipbetweenthemiscalculated,andthetopologyofthewholenetworkisconstructed.ThispaperismainlybasedonSNMPprotocol,usingp

8、ythonprogrammingtocalltherelevanttoolsofSNMPprotocoltoobtaintheinformationvalueofnetworkequipment,extractthedatasuchasequipmenttype,portconnectionstatusandnexthopaddressforalgorithmanalysis,andthengetacompleteLANtopology.Keywords:SNMPprotocol;networktopology;python第1章绪论11.1 研究背景、目的及意义11.2 国内外研究现状11.

9、3 研究的主要内容1第2章网络拓扑发现的理论基础及相关技术32.1 网络层拓扑发现的基本原理32.2 链路层拓扑发现的基本原理4第3章需求分析与总体设计53.1 系统的功能需求分析53.1.1 功能需求分析53.1.2 系统设计需求53.2 系统的总体设计思路53. 2.1数据采集的设计思路54. 2.2数据分析的设计思路75. 2.3拓扑显示的设计思路83.3 系统实现的逻辑原理结构83.4 基于SNMP的算法设计9第4章基于Python的网络拓扑发现工具的实现114.1 主程序设计114.2 数据采集模块的设计124.3 数据分析模块的设计134.4 拓扑显示模块的设计13第五章系统测试1

10、51 .1测试环境155 .2测试结果及分析15总结18参考文献19致谢20第1章绪论1.1 研究背景、目的及意义计算机网络普及的当下,以网络为基础的设施应用于社会的各个领域,网络结构也日益复杂,从人员手动管理网络设备逐渐演变成通过网络管理系统来维护网络。相较以往传统手绘网络结构拓扑图已经难以满足当代社会网络发展的需求,实现网络拓扑自动绘制也是自动化网络管理的基础。因此,网络拓扑自动发现尤为重要。网络拓扑自动发现的主要目的是发现并显示目标网络的网络拓扑关系。通过众多网络协议来获取网络拓扑相关信息,通过这些信息来计算出网络设备之间的连接关系,根据获得到的连接关系进而绘画出整个网络拓扑图。网络拓扑

11、自动发现可以实时的展现出当前网络的拓扑结构,有利于对网络设备的故障查巡和管理,方便管理员远程配置和排查错误,提高网络管理效率。网络拓扑展现的完整程度对整个网络的性能和维护有重大影响。在当前,准确有效地实现网络拓扑自动生成具有非常广阔的应用前景。无论是企业小型局域网还是大型的网络结构,网络拓扑自动发现必不可少。1.2 国内外研究现状国外发达国家的网络拓扑发现技术的研究要早与我国。目前已经研发出了众多网络管理系统,其中就包括了网络拓扑的自动发现功能,大多数经典的网络管理系统产品是基于SNMP网络管理协议开发的。其中有:NetManager网络管理工具,该工具具有自动监测网络设备变更和设备运行状态等

12、功能,该工具还具备报警功能,当网络中出现异常现象时它会即时发出警报告知管理员,并且会将此异常记录保存。OPenVieW网络管理工具,它是一个企业级别的网络管理系统,具有很强的综合性和实用性,能够完整的监视和管理本企业网络。国内在网络拓扑自动发现技术上也有很多显著成绩。国内知名网络管理软件有:北京智和信通技术有限公司的SUgarNMS。SUgarNMS是国内第一款“积木式”监控运维平台,成熟功能、开发组件均可模块化使用,随意搭建全新平台。它可以让客户通过此系统来自定义自身的网络管理模块,拥有网控、安管等多种管理功能。深圳华为公司的RadiumNMS数据通信综合网络管理系统。能够根据实际的网络结构

13、构建出一个虚拟的网络结构图,管理员可以手动更改网络结构图来管理实际的网络,拓扑视图动态刷新实现实时监控。1.3 研究的主要内容深入学习SNMP(简单的网络管理协议)协议在网络管理中的作用,结合拓扑发现的基本原理和网络拓扑自动发现的相关知识,学习了PythOn编程中的netsnnp获取网络设备信息的方法,在基于SNMP协议的网络拓扑发现算法的基础上,实现具有网络拓扑自动发现功能的设计。具体的研究内容包括:学习研究SNMP协议的工作模型、学习网络层和链路层网络拓扑发现原理,掌握SNMP协议的工作原理,学习Snmpwalk工具的使用,学习字典、字符串和队列中数据信息的处理。学习了java的awt绘图

14、工具的调用。本文重点研究了网络层的拓扑自动发现。通过SNMP协议访问网络设备的信息库来获取路由表和其他网络拓扑相关信息,其中路由表中的信息尤为重要,它包含目的地址、下一跳地址和路由器类型等信息,通过这些数据来判断路由器和子网的连接关系,进而得到网络拓扑图。第2章网络拓扑发现的理论基础及相关技术拓扑结构的发现是根据一定的算法,通过实现多种网络协议来自动发现所在网络中的节点(路由器、交换机、PC等网络设备),根据获取到的网络设备信息来推算出他们的连接关系,从而构建出完整的网络拓扑图。本章主要研究了不同层级的网络拓扑发现原理。1.1 网络层拓扑发现的基本原理网络层拓扑发现的主要任务就是发现网路拓扑框

15、架,该框架中主要包含了路由器、三层交换机和子网,每个路由器和三层交换机(“三层交换机”以下文章一同称为路由器)中维护着路由表和地址表等信息,这些信息包含着大量有关网络连接的信息,如:路由目的地址IPROUteDest、下一跳地址IPROUteNeXtHop、对应的接口ipRputelflndex和路由器类型IpRouteType等。网络层拓扑发现其原理是通过网络协议来获取路由器的路由表和地址表,路由表和地址表中记载着数据包在网络中的传输路径,因此通过分析这些信息可以计算出设备之间的连接信息构建拓扑图,地址表中记载着每个路由器接口所连的子网情况。大多数经典网络管理系统中的网络拓扑发现功能主要是通

16、过SNMP协议来实现的。每个路由器都有自身维护的路由表ipRouteTable,其中包含的信息有:IPRoUteDest:路由的目的ip地址,如果地址为0.0.0.0则该路由为默认路由。ipRputelflndex:用来标识本地路由器接口,该接口连接着下一站路由器。IPRoUteNeXtHoP:路由条目中的目的地址对用的下一跳目的地址。IPRoUteType:路由类型,如果路由类型为3表示直接路由,路由类型为4表示间接路由。IPRoUteMaSk:目的子网掩码。网络层拓扑发现的实现主要是基于路由器转发数据的原理,路由器转发数据是基于自身记录的路由表来实现的,路由器收到用户传来的数据,首先会对数

17、据进行拆解操作,根据ip报文的分布结构来获取ip报文头中记载的目的地址,当路由器拿到目的地址后会与自身的路由表中记载的可达目的地ipRouteDest进行比对,如果目的地址在该路由表中,则按照该路由条目对用的ipRputelflndex接口发送报文,如果该目的ip不在路由表中,则路由器将该报文发往默认路由去寻找目的地址,进而实现在不同网络之间的数据传输。除此之外,路由表中记载的路由条目的类型是不一致的,路由有两种类型,分别是直达和不直达,当路由类型IPROUteType=indirect(4)时,表明该路由对应的目的地址ipRouteDest是不直达的,中间还存活着另一个路由器对数据进行了转输

18、,那么另一个路由器ip就是该路由条目中目的地址ipRouteDest对应的下一跳地址IPROUteNeXtHOP。当路由类型IPRoUteType=indirect(3)时,则表明该路由对应的目的地址ipRouteDest是直达的,即该目的地址ipRouteDest对应的子网与路由器直连。根据以上论述的路由器转发ip报文的原理,基于SNMP协议采集路由器MIB库中的路由表信息,分析网络设备连接关系实现网络层拓扑发现。2. 2链路层拓扑发现的基本原理链路层拓扑发现的主要任务是发现子网中的设备连接关系,其中主要包括:交换机与交换机之间的连接关系、网络设备与交换机之间的连接关系。链路层拓扑发现方法不

19、同于网络层,网络层是通过设备的ip网络地址来发现的,而链路层拓扑发现原理是根据链路层设备的物理地址,判断出各交换机和子网中各设备的连接关系。数据链路层中最主要的网络设备就是交换机,交换机的主要任务就是对数据帧的转发和传输,跟路由器一样,其内部也维护着地址转发库FDB和MAe地址表等信息,交换机从接到数据帧后,从中提起出源MAC地址,将此MAC地址与自身维护的信息相对比,如果在转发库FDB中,交换机就会将此数据帧转发到对用的端口并发送出去,如果不在则将此数据帧的MAC地址和其端口号保存下来,并更新自身的转发库。链路层的拓扑发现相较于网络层不同,应为链路层中的网络设备,如交换机、网桥,在网络中相当

20、于是透明设备,通过ip地址是无法准确发现的,而且交换机在工作中很少与相邻设备交换信息。根据地址转发表来发现拓扑关系,通过SNMP协议收集交换机端口的地址转发表信息,通过判断地址表中记录的地址是否相同来发现拓扑结构,如果两个端口地址转发表中的信息一致,那么这两个端口是直连关系。基于交换机端口流量的相同与否来判断端口是否直连。两个直接相连的端口,他们传输的数据是一致的,通过他们的流量也应是一致的,考虑到端口存在不稳定性和突发情况,可以通过多此对比,且允许存在一定的范围误差,来判断交换机互相之间的连接关系。第3章需求分析与总体设计3.1系统的功能需求分析3.1.1 功能需求分析(1)快速、有效的发现

21、网络层拓扑结构。(2)利用SNMP协议的管理特性,挖掘采集网络设备信息。(3)利用SNMP拓扑发现算法,正确的分析出网络拓扑。(4)利用java画图技术,较为形象的展现出网络拓扑结构。3.1.2 系统设计需求想要完成网络拓扑自动发现功能需要满足以下需求。采集设备信息需求该需求主要是获取网络设备类型信息和路由器中的路由表信息。通过实现SNMP协议对设备信息库MIB的访问来获取网络设备信息。通过Python调用SNMP的相关工具,如snmpwalkpysnmpnetsnmp0分析连接关系需求该需求最为关键,首先需要对采集过来的数据进行删选,将路由表中的本地环回地址、下一跳为本机地址等信息删除,将有

22、效信息按照路由器转发ip报文的工作原理计算出路由器与路由器之间、路由器与子网之间的连接关系。将连接关系传给拓扑显示模块中。显示拓扑结构需求该需求主要负责将分析计算出来的网络设备连接关系形象的显示出来,便于管理员观察和排查网络。3. 2系统的总体设计思路网络拓扑自动发现设计的主要功能是能够快速、有效的发现网络层拓扑结构,主要采用了基于SNMP的发现方法来设计的,系统的设计思路主要分为三大部分:网络设备信息的采集、网络连接关系的分析和拓扑结构的显示。其中数据采集和数据分析是相互结合完成拓扑关系的发现。而显示拓扑设计相对独立,主要是读取拓扑关系以图像形式展现。3. 2.1数据采集的设计思路采集设备信

23、息是通过SNMP管理模型的运行原理来实现的,其中SNMP的管理模型中包括以下四个关键部分,它们之间的关联如图3-2-1-1所示。SNMP存理协议 即:SNMP报文实现管理GetreSPOnSeSeCreqUeSt(GetneXtreqUeStGeCreqUeSCSNMP管理站网络接口TraP(1) SNMP管理站(NMS,Network-managementsystems)SNMP管理站是运行在网络设备上的负责监听和控制的工作的管理应用进程,它主要是通过与SNMP代理之间的通讯来完成去设备信息的监测和管理。(2) SNMP代理(agent)SNMP代理是运行在被管理设备上的应用进程,它负责接听

24、和回应来自管理站的请求,其中如果请求为get类型则SNMP代理需要根据请求中指定的OID(MIB中设备信息对应的唯一标识)去MIB中采集对应的设备信息并返回给管理站。如果是Set请求则代理会对网络设备配置进行修改。此外,SNMP还具有设备运行状况的检查功能,如果某设备有突发情况,SNMP代理会打包记录此异常数据并通知管理站。(3)管理信息库(MIB)管理信息库MlB是存放被管理设备信息的树状型数据库,如图32-l-2所示。其中每一个节点都是可以被查询的资源,而且每个节点都有一个唯一标识ID,即OIDo例如下图中IPROUteIabIe数据信息所对应的0ID:.1.361.2.1.4.21。管理

25、站向代理发送口令中就需要指定CHD,来监控对应的信息资源。Ccitt(O)Lso(I)joint-iso-ccitt(2)IOrg(3)IDod(6)Internet(1)Mgmt(2)Experiment(3)图3-2MIB树状结构图(4)SNMP管理协议SNMP管理协议被用于管理站和SNMP代理之间的通讯中,SNMP管理协议中有五种常用的报文形式。Get-request:SNMP管理站发送此请求,获取一个指定C)ID对应的数据信息。Get-nextRequest:获取指定OlD对应的表单数据中的下一个数据信息。Get-response:SNMP代理返回,其中包含的数据对应于SNMP管理站发

26、送Get-request请求所以读取的数据信息。Set-request:由SNMP管理站发出,去修改指定OID对应的信息值。Tnip:由代理主动向管理站发送,告知管理站此设备出现异常。通关开启SNMP服务来调用管理站向SNMP代理发送get获取信息命令,SNMP管理站就会发送SNMP管理协议来与SNMP代理进行通讯,SNMP代理会根据SNMP管理协议中指定的OID去查询MIB库中的数据,并将此数据返回给SNMP管理站,最后得到指定的设备信息。3.2.2数据分析的设计思路分析连接关系的设计思路主要是根据路由器转发IP报文的原理来实现的。其中ip报文的转发是根据路由器中记载的路由表进行的,因此在采

27、集设备信息时主要采集的是路由表信息。从收集的信息中分别提取路由表中的ipRouteDest、ipRouteNextHop、ipRouteType等信息,以IpRouteDest为索引去查找ipRouteType的值,如果ipRouteType=3,表明此IpRouteDest对应的子网与该路由器直连,如果ipRouleType=4,表明到达此ipRouteDest之间还存在另一个路由器,然后以此路由条目中的目的地址为索引去ipRouteNextHop中查找对用的下一跳地址,该地址为下一个直连的路由器ip并将此地址加入到待发现队列中。将发现的连接关系以一定的格式输出,例如:路由器与某子网直连路由

28、器:路由器ip,子网:子网网段,路由器与某路由器直连路由器:路由器ip,路由器:路由器ip。将输出格式固定后,方便拓扑显示模块读取和分析。3.2.3拓扑显示的设计思路拓扑显示的设计主要任务是将获取到的文字性拓扑关系转换成图像性拓扑关系。连接关系的输出格式为路由器:路由器ip,某子网:某子网网段,连接关系中每一行代表着一条直连关系。拓扑显示模块需要将连接关系一行一行的读取,当下一行数据为空时停止读取。将每条连接关系进行数据拆解,通过循环判断将路由器和路由器所连接的子网和路由器的连接关系存储到HashMap集合中,利用java的awt绘图技术根据集合中的连接关系绘画拓扑图。3.3系统实现的逻辑原理

29、结构网络拓扑发现系统实现的逻辑原理结构如图3-3-1所示。原理结构最底层是在网络中运行的网络设备,网络设备中记载着有关网络结构的信息。往上一层是数据采集模块,数据采集模块主要任务是收集网络设备信息,通过调用SNMP对MIB数据的读取功能来完成的,然后将网络设备信息提供给数据分析模块使用。数据分析模块主要任务是判断出的网络拓扑连接关系,然后将连接关系保存供拓扑显示模块调用。C调用拓扑显示模k连接关系数据分析模块数据采集模块-返回请求网络设备图3-3拓扑发现原理结构3. 4基于SNMP的算法设计在网络层拓扑发现中,路由表信息尤其重要,路由信息中包含了整个网络框架。SNMP协议在网络层应用广泛,而且

30、简单,可以通过调用SNMP去读取路由器MlB库中的设备信息。其中主要获取的路由表内容如表3-1所示:NAMESYNTAXipRouteDestIpAddress目的地址ipRouteNextHoppAddress下一跳地址ipRouteMaskIpAddress目的地址子网掩码ipRouteTypeInteger路由的类型3-1路由表主要表项算法描述:创建一个队列IempRouteQueue为待发现路由队列,定义变量R-Iink-P用于存储子网与路由器的直连关系,定义变量R-Iink-R用于存储路由器与路由器的连接关系。获取网络拓扑自动发现程序所在本机的默认路由,默认路由地址可以通过管理员给予

31、或者访问本机SNMP-MIB1I,读取ipRouteDest,如果有ipRouteDest值为0.0.0.0的记录,说明本机设置了默认路由,该记录对应的ipRouteNextHop值即为默认路由ip。将管理员给予的种子ip或者是自动获取的默认路由ip力口入到队歹IJlemPRoUteQUeUe中待设备信息采集所用HL采集网络设备中记录的有关网络拓扑的数据信息。从带发现路由器队列中取出种子路由,即:当前处理的路由器Rx,通过调用SNMP相关工具获取MIB库中OID值为.1.3.6.1.2.1.4.21对应的信息ipRouteTable路由表,依次对路由表中的信息进行提取,从中可以得到iPRoUt

32、eType、ipDouteDest、ipRouteNextHop等信息。确定连接关系。通过判断ipRouteType值来确定连接关系。以ipRouteDest为索引查找对用的IPROUteType,如果IpRouteType为direct(3),那么这条路由中IpDouteDest对应的子网与Rx直连,将连接关系保存到R-Iink-P,如果IPROUteTyPe为indirect(4),那么表明到达该目的地址之间还存在另一个路由器,这条路由中ipRouteNextHop就是另一个路由器的ip地址,将此ipRouteNextHop存放到tempRouteQueue中,记录这两个路由器的连接关系保

33、存到R-Iink-Ro判断tempRouteQueue队列是否为空,非空,继续以上操作直到待发现路由队列为空。当算法运行结束后,队列R-Iink-R中记录了网络中所有的路由器之间的连接关系,队列R-Iink-P中记载了子网与路由器之间的连接关系。将这些连接关系队列保存,供拓扑显示调用从而画出网络拓扑关系。基于SNMP的算法流程图如图3-4所示。图3-4SNMP算法流程图第4章基于Python的网络拓扑发现工具的实现4.1主程序设计网络拓扑自动发现实现的主要功能是发现网络层拓扑结构,并将网络层拓扑关系展现出来供网络管理员观察,它需要网络管理员输入一些初步数据,网络拓扑自动发现程序的默认路由、支持

34、SNMP的网络设备的读写权限密码。网络拓扑自动发现的设计主要分为三大部分:设备数据采集模块、数据分析模块和拓扑显示模块。网络设备数据采集模块负责收集路由表、设备类型等相关信息。将这些信息交给数据分析模块。数据分析模块主要负责提炼有用信息,判断路由器与子网、路由器与路由器之间的连接关系,然后将连接关系输出保存供拓扑显示模块调用。拓扑显示模块主要负责以图形方式展现出网络拓扑结构。数据采集模块通过SNMP读取MlB中的网络设备信息,主要采集路由表中的目的地址、下一跳地址、路由器类型等,将信息交给数据分析模块去提炼拓扑关系。现在对默认路由进行数据采集测试,其中采集过来的设备信息如表4-1。路由目的地址

35、(IpRouteDest)路由的下一网关地址(ipRouteNextHop)路由的类型(ipRouteType)192.168.10.0192.168.10.254direct(3)172.168.10.010.11.1.2indirect(4)10.11.1.010.11.1.1direct(3)127.0.0.0127.0.0.1direct(3)表4-1采集默认路由的路由表信息数据分析模块得到采集模块提供的数据,如表4-1所示,判断路由表类型的值,如果ipRouteType值为3,则该目的地址与路由器直连,如果ipRouteType值为4,则到达此目的地址之间还存在一个路由器,路由器地址

36、是该目的地址对应的下一跳地址。将路由表中的环回地址去掉,根据以上判断方法得出:192.168.10.1 子网与默认路由器192.168.10.254直连。192.168.10.2 条路由器地址与默认路由器10.11.1.1直连。数据分析模块将发现的下一个路由器地址发送给采集模块,采集模块对此路由再进行如上操作,直到待发现路由为空。最后分析出来的连接关系以固定格式输出,供拓扑显示模块调用。拓扑显示模块将字节型数据转换成字符型来读取,对数据进行分割保存,因为固定了连接关系的格式,所以通过for循环和if判断,将路由器和子网信息分开处理,将它们之间的连接关系保存在哈希表中,然后利用java绘图工具A

37、WT绘制拓扑图。4. 2数据采集模块的设计数据采集模块的目的是收集发现拓扑结构所需要的相关信息,通过实现SNMP对MIB的读取特性来实现的,其中就是通过SNMP的Get_request请求来获取设备信息。数据采集模块使用的是基于SNMP协议的开发包pySNMP和Snmpwalk工具。主要采集设备类型、路由表信息。通过SNMP来获取指定设备信息:Data=Os.popen(snmpwalk-v2c-c”团体名默认路由+OID)Print(O)通过调用pysnmp模块来获取指定设备信息:fromimport*iterator=getCmd(SnmpEngine(),CommunityDataC团体

38、名),UdPTranSPortTarget(默认路由,161),ContextDataO,ObjeetTyPe(ObjeCtldentity(SNMPV2-MIB,0ID,0)errorindication,errorStatus,errorindex,VarBinds=next(iterator)iferrorindication:print(errorlndication)else:iferrorStatus:print(%sat%s,%(yPrint(),varBindsint(errorIndex)-1iferrorindexelse?)else:forvarBindinvarBind

39、s:print(=,.join(x.prettyPnt()fbrxinvarBind)通过SNMP协议采集设备信息时,无论通过什么工具都需要用户提供如下几个信息:团体名:网络设备开启SNMP协议时设置的读取权限密码。目标设备的ip和要获取信息对用的0ID。以上是单独获取设备信息的代码,只获取一次是不够的,所以需要在采集设备信息的同时还需要发现新的路由器设备,以便继续进行数据采集,直到没有发现新的路由器。数据采集模块设计描述如下:定义:IempRouteQueue#用于储存发现的新路由器ip初始化temRouteQueue为空将默认路由加入到tempRouteQueuetempRouteQueu

40、e取出路由器RxRxJpRouteTable=(JpRouteTable)采集的信息交给数据分析模块分析模块将一下待发现路由加入到tempRouteQueue当tempRouteQueue为空结束4. 3数据分析模块的设计数据分析模块主要目的是对采集过来的数据进行加工判断,提取出正确的信息进行设备手系的判断,最后将设备之间的连接关系保存,供拓扑显示模块调用。file=open(CUsersAdministratorDesktoplj.txtw)If(ipRouteType=3):R-Iink-P=(sysName+”:+ip+”,ZlWANG:+ipRouteDest+)(R-Iink-P)E

41、lse(ipRouteType=4)Iink-R=(SySName+:+ip+“,ZHWANG,+sysName1+IpRouteNextHop)(R-Iink-R)数据分析模块设计描述如下:定义:R-Iink-P#子网和路由器的连接关系队列;R-Iink-R#路由器之间的连接关系队列RxjpRouteTable#数据采集过来的设备信息提取出RxJpRouteTypeIfRx.ipRouteType=3#表示该目地地址对应的子网与路由器直连(RxIpRouteDestRx)力口入R-Iink-PIfRx.ipRouteType=4#表示到该目的地址之间还存在一个路由器(RxjpRouteNex

42、tHop,Rx)力口入R-Iink-RRxjpRouteNextHop力入tempRouteQueue#待发现路由器当tempRouteQueue为空Return(R-Iink-P和R-Iink-R)连接关系交给拓扑显示模块数据分析模块最终将发现的网络层拓扑的连接关系以特定格式输出,假设发现了路由器Rl与路由器R2直连,路由器Rl与子网X直连。则输出的连接关系为:R1:Rl的IP,R2K2的IPR1:Rl的IP,X:X的IP。这样固定格式输出拓扑连接关系,方便拓扑显示模块读取记录连接关系,并通过绘图技术显示。4.4拓扑显示模块的设计拓扑显示模块目的是将文字形拓扑结构转换成直观的图像,拓扑显示模

43、块是通过JAVA编程实现的,其中主要运用了JAVA的K)流相互转换、哈希表、线性表和JAVA的AWT绘图技术。首先开始While循环,当连接关系.txt中的信息不为空时,就继续读取文本信息。通过文件字节流读取连接关系,利用字节流转换流将字节流转换成字符流,利用字符流缓冲流逐行读取连接关系。通过.FileInputStream读取连接关系,通过.InputStreamReader将字节流连接关系转换成字符流,通过.FileInputStream读取字符型的连接关系。FileInputStreamin=newFilelnPUtStream(连接关系.txt);InputStreamReaderin

44、r=newInputStreamReader(in);BufferedReaderbr=newBufferedReader(inr);通过.split方法对字符串进行裁剪,将路由器和子网的连接信息裁剪。裁剪完的数据保存在数组中,创建jiandian和jiedianIP两个对象,jiandianIP用于储存所发现的路由器的名字和ip,jiedian中定义了路由器的特性和路由器所直连的子网。定义ArrayLiSt集合用于存储路由器与子网、路由器与路由器的连接信息,并将该集合赋给jiedian对象中。利用数据结构HashMap集合存储提炼出的拓扑结构关系。利用java的awt绘图技术,根据HashM

45、ap集合中存储的连接信息绘制拓扑结构图。第五章系统测试5.1测试环境本文的程序设计主要是实现网络层拓扑结构的发现,所以需要测试环境中有不同的子网和路由器设备,并且确保网络连通性,网络中不同子网能够互相通讯。考虑该程序可能会影响实际网络的传输速度和安全性,最终选择用华为公司的网络模拟器ENSP来完成测试。测试环境的搭建。需要路由器开启SNMP协议,配置静态路由,划分不同子网,在本机电脑上新建一个环回适配器,将此网络映射到ENMP的ClOUd设备中。最终的测试环境如图5-1所示:192 Lle 254 2410.11.1.2 24图5-1测试环境5. 2测试结果及分析在测试环境中,路由器采用的是S

46、NMPV2版本,由于SNMP协议中只有SNMPV3版本增加了安全性加密传输,所以我们可以通过抓捕的方式来检验网络拓扑发现程序采集网络设备信息的过程如图5-2。通过SNMP管理站发送Get-request查询请求,查询指定OlD对应的数据,图中的数据是设备的系统基本信息,SNMP代理发现Get-response返回查询结果。 艾 CQa一TieSourceDestinationProtocolLe14 25.406000HUaWeiTJee:71:1002:00:4c:4f:4f :50 ARP15 26.11000192.168.10.234192.168.10.254SNMP16 26.20

47、300192.168.10.2S4192.168.1.234SNMP17 26.250000192.168.10.234192.168.10.254SNMPng th Info60 192.168.10.25483 get-next-reque94 get-response 1.83 get-request 1.:is at 00:eO:fc:0e:7 t 1.3.6.1.2.1.1.1.e3.6.1.2.1.1.2. .6.1.2.1.1.1.018 26.297000192.168.1.254192.168.10.234SNMP255 get-response 1J.6.1.2.1.1.1.22 31.26600002:00:4c:4f:4f:50BroadcastARP八 21.7iHCMiIAWPiTo 0!71r1ft:: Af: SCARP42 Who has 192.168 AA 1Q7.1ftR.10.7Sd.10.254? Tell 192.1 is At CWpfr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号