版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录摘 要 .1前 言 .3第一章 概述 .41.1 开发背景 .41.2 关于国内外同类系统的分析 .41.3 TOPOLOGY 网管软件的任务与目标.61.5 本论文所作的工作 .7第二章 SNMP、MIB 与 TOPOLOGY 开发环境.82.1 SNMP .82.2 SNMP 操作和 SNMP 报文传输.92.3 SNMP V2 和 SNMP V SNMP V2 协议.112.3.2 SNMP V3 协议.122.4 管理信息库 MIB.122.5 TOPOLOGY 开发环境.142.5.1 Visual C+6.0 MFC 应用程序框架.142.5.2 WinSN
2、MP .15第三章 TOPOLOGY 系统总体设计.163.1 TOPOLOGY 系统总体结构.163.2 TOPOLOGY 系统各功能模块设计.163.3 模块之间的协调 .18第四章 TOPOLOGY 网络拓扑发现模块的设计与实现.204.1 基于 SNMP 的主干网拓扑发现 .204.1.1 传统的基于 SNMP 的网络主干拓扑发现方法 .204.1.2 改进的基于 SNMP 的网络主干拓扑发现方法 .254.1.3 模块运行结果 .294.2 子网内拓扑发现 .294.2.1 ARP 表(IpNetToMediaTable 表) .294.2.2 子网拓扑的中所要的数据结构 .304.
3、2.3 如何判断主机的状态 .304.2.5 模块运行结果 .31第五章TOPOLOGY 网络拓扑图生成/布局模块的设计与实现 .325.1 TOPOLOGY 网络拓扑图布局模块的设计.325.2 TOPOLOGY 网络拓扑图生成/布局模块的实现.345.2.1 数据结构 .345.2.2 TOPOLOGY 主干网拓扑图生成/布局模块的实现.35第六章 总结与展望 .376.1 课题总结 .376.2 进一步开发的展望 .38参考文献 .40致 谢 .41摘摘 要要随着网络的高速发展,网络管理变得越来越复杂,网络管理软件的研究与开发伴随网络的不断发展也越来越受到人们的重视。本文基于SNMP协议
4、、MIB库,详尽阐述了作者设计的TOPOLOGY网管软件的系统设计,以及它的四大模块网络拓扑发现、网络拓扑生成与布局、查询MIB、功能模块协调与切换的主要设计思想和实现方法,论文中着重研究和讨论了对网络拓扑的发现、生成、布局的设计实现算法。在传统主网拓扑发现算法的基础上,作者提出两种新的补充算法,使得拓扑更加完整,具有一定的创新性。论文所提出的拓扑布局算法采用环型算法与启发式算法相结合,使得布局更加合理,也是该网管软件的特色和创新做法。论文在最后还探讨了对系统进行进一步开发的展望。关键词:拓扑发现,布局,SNMP,MIB,WinSNMP 作 者:XXX 指导老师:XXX前前 言言课题概述,本研
5、究主题范围内国内外相关的研究发展趋势,本论文所要解决的问题,论文主要研究内容,研究或开发设计的方法,实用价值与意义等。全文共分为X章。第1章,第2章,第 3 章。(前言篇幅:1 页左右)第一章第一章 概概 述述1.1 开发背景开发背景随着网络的高速发展,网络管理变得越来越复杂,网络管理软件的研究与开发伴随网络的不断发展也越来越受到人们的重视。同时,随着计算机网络的使用越来越广泛,用户对网络的依赖也越来越大,网络的可靠性成为越来越重要的问题。网络管理是一个解决方案,它寻求最大限度地利用现有的网络资源,增加网络的可用时间,提高网络设备的网络性能、服务质量和安全性。因此,研究网络管理具有重要的意义。
6、目前国内的企业网、园区网系统所使用的网络管理软件大多都是从国外引进的;如IBM公司的Netview,HP公司的OpenView,Cisco公司的Ciscoworks,3Com公司的 Transen等。 这些网络平台一般价格昂贵,不具备良好的中文界面,信息资源方面的管理能力相对较弱,其中一些只能管理本公司的产品(如Cisco Works、Transen等) ,有些还需要第三方产品的辅助。虽然它们提供了丰富的API,但许多对于开发园区网络管理系统是不必要的,并且大多数网络管理员不具备二次开发的能力,这就造成资金和资源的浪费。所以根据我国互联网的实际应用,结合园区网的自身需求,自主设计与开发一个成本
7、低、效率高的通用型网络管理系统是十分必要的。1.2 关于国内外同类系统的分析关于国内外同类系统的分析针对网络管理的需求,许多厂商开发了自己的网络管理产品,其中一些形成了一定的规模,占有大部分的市场。主要有:(1) SunNetManagerSunNetManager是不依赖于协议的分布式管理体系结构网络管理系统。它是第一个重要的开发平台,如果SunNet Manager要被最终用户直接使用,需要第三方厂商开发出来的应用系统来实现,主要功能有:拓扑结构图、自动管理、链接管理、浏览工具和API。SunNetManager在拓扑管理方面,仅能发现IP网络设备,能判断SNMP(TCPSocket161
8、)是否处于 Active 状态以及网络设备是否有多个端口(router) ,不能发现非IP 设备 。(2) HP OpenView Network Node Manager(NNM)HP OpenView是第一个出现的网络管理系统,是一个广泛使用、获得大多数认可的网络管理系统。它主要给第三方网络管理应用程序开发人员提供开发平台,同时也可向用户提供最终的可安装产品,主要功能:自动发现网络拓扑结构、性能与吞吐量的分析、故障报警和历史数据分析。OpenView 的网络拓扑自动发现功能很好,启动后能立即自动发现本网段的结点,网段中的路由器(或网关) 、子网以图标的形式显示在图形上。为了进一步搜索子网,
9、只需点亮响应的子网图标,并置其为被管。不能在运行时手工加入与本网段非直连的管理对象 。(3) IBM Tivoli NetViewIBM Tivoli NetView检测TCP/IP 网络、显示网络拓扑结构、相关信息和管理事件以及SNMP 陷阱、监控网络运行状况并收集性能数据。Tivoli NetView 通过可扩展性和灵活性满足大型网络管理人员的使用需要,以管理关键任务。它还提供了强大的信息过滤能力,可通过设置阀值来减少部分冗余报警。IBM的网络拓扑功能在同类产品中并不突出。(4) Cisco Works:由Cisco公司开发。它使用Cisco的专门技术CDP(Cisco Discovery
10、 Protocol)对本公司的网络产品进行精确的搜索。但CDP只能搜索本公司的网络产品,对其它厂家的网络产品不具备兼容性, 主要功能: 自动安装管理器、与NetView的接口、通用命令管理器、设备监控、路径工具和实时图形。CDP支持对VLAN的拓扑发现,前提是网络设备必须是Cisco的产品。(5) 国外其它网管软件产品TRANSCEND由3Com公司开发。该产品的自动拓扑搜索功能简单,只能检测出当前局域网中的主机,不能确定各个主机的互连情况,不能确定主机的接口类型。TRANSCEND只能对本公司的网络硬件设备产品进行较为精确的搜索,显示出其网络设备各个端口的状态,但不能发现其它厂商的网络设备,
11、运行速度很慢,对机器的硬件配置及内存容量要求较高。 Net Walker由Fujitsu公司开发,是一种较好的网络管理产品。能较好的搜索到当前网络中运行的网络设备,较精确地确定网络互连情况和网络接口。能够实时地反映网络当前状态,对有故障的网络设备能较快的检测到并进行报警。但只能运行在UNIX环境中,不能在Windows环境中运行,运行速度较慢,对网络的搜索需要大量的时间。PloyCenter On NetView(PNV)由DEC公司开发。它是在HP OpenView和IBM Tivoli NetView的基础上开发而成的,具有一些前两者所没有的特点。PNV提供了一个通用的网络管理平台,它支持
12、多种网络管理协议,具有分布安全性,提供登录确认。它能动态发现设备,按其在协议栈中所处的位置进行摆放,建立连接关系。它还实现了收集并图形化显示当前数据和历史数据和支持关系数据库等功能。 (6) 国内网管软件 国内自主开发的网络管理软件较少。上海金桥网络工程中心开发了在Windows PC平台上使用的网络管理软件GoldView,该软件基于简单网络管理协议SNMP(Simple Network Management Protocol)实现了对TCP/IP网络的拓扑发现。然而,由于各种原因,该软件在国内未能推广使用。南京飞博的IP View是一款在Linux平台下使用Java自主开发的专业网管软件,
13、采用B/S结构。北京游龙科技的SiteView对服务器进行监测的功能十分强大。IP View和SiteView都具有较强的通用性,在国内市场上占有率较高。 网络管理也是国内高校网络研究的热点,目前取得了一些阶段性的成果。如清华大学的 CIMS 网络监控管理系统,北京航空航天大学开发的网络管理系统,东南大学的网络管理系统 Watcher,以及上海交通大学与日本合作开发的 Walker 中文版网络管理系统。1.3 TOPOLOGY 网管软件网管软件的任务与目标的任务与目标本课题基于SNMP网管协议与通用MIB库,致力于网络拓扑自动发现与生成、为TOPOLOGY通用管理平台开发出主要的网络管理功能模
14、块,并进行网络主机与设备的状态检测,实现网络管理系统。要求完成如下主要工作:(1) 网络拓扑发现模块的设计与实现,自动发现目标网络的拓扑结构与其包含的设备,为 TOPOLOGY 提供准确完整的网络拓扑信息。自动发现网络主干拓扑,确定路由器与路由器,路由器与子网的连接情况;自动发现子网拓扑,确定子网内网络设备的状态;确定子网内网络设备的类型;确定子网内网络设备的网络接口;确定子网络接口的状态。(2)网络拓扑图生成/布局模块的设计与实现,用于将网络拓扑信息布局到计算机屏幕上,形成网络拓扑图,将路由器与路由器,路由器与子网以及主机与主机的连接情况用图形的方式清晰地显示,要求美观、调整方便灵活。(3)
15、 MIB 信息查询模块的设计与实现,完成读取指定网络设备 MIB 库中信息,为TOPOLOGY 用户提供网络管理信息,实现网络主机与设备的状态检测。由于TOPOLOGY是一款投入实际使用的网管软件,所以本课题特别强调开发成果的通用性、鲁棒性和实时性。通用性:主要针对网络拓扑自动发现,具体表现为两方面的通用性:a、要求能够发现各种类型的设备(如:路由器、三层交换机、主机等) ;b、要求能够发现多个厂商制造的网络设备。鲁棒性:按照TOPOLOGY系统规划,本课题所承担的研究开发内容在投入使用后要求能够持续运行不中断,系统要求稳定、可靠性好。实时性:网络管理系统一般要求系统尽快反映网络的现时工作情况
16、,本课题也对实时性有相当要求。TOPOLOGY要求本课题所开发的模块在投入使用后,将拓扑结构及发现到的网络故障信息尽快如实反映在屏幕上。1.5 本论文所作的工作本论文所作的工作本文以笔者在研发TOPOLIGY网管软件中所做的工作为基础,围绕MFC框架结构、SNMP协议和MIB库,讨论TOPOLOGY网管软件的研究、设计与实现,详尽阐述了TOPOLOGY网管软件的系统设计,以及它的四大模块网络拓扑发现、网络拓扑生成与布局、查询MIB、功能模块协调与切换的主要设计思想和实现方法.TOPOLIGY网管软件由课题组黄逊、徐家燕和吴可旸三人共同完成。其中,笔者的主要工作为:1.系统分析、系统设计、界面设
17、计;2.对网管软件使用和涉及的重要相关MIB库中的项目进行分析、对网管软件与SNMP Agent交互的过程和进行网管软件开发的具体方法进行了详尽的分析;3.设计了主干网拓扑生成/布局、子网拓扑生成/布局的算法4.编写了主干网拓扑生成/布局模块、子网拓扑生成/布局模块协调模块、MIB查询、功能模块协调与切换、界面设计等方面的代码,进行了系统测试;网管软件TOPOLOGY遵循公用MIB规范,做到兼顾普遍性、通用性和实用性,对异构型的多个厂家生产的网络互联设备组成的网络做到了普遍适用。在传统主网拓扑发现算法的基础上,论文提出两种新的补充算法,使得拓扑更加完整,论文提出的算法具有一定的创新性。拓扑布局
18、算法采用环型算法与启发式算法相结合,使得布局更加合理,也是该网管软件的一大特色和创新做法。TOPOLOGY网管软件由项目组三人共同开发,本论文对笔者所作的工作进行了详细的阐述,同时对课题组共同开发的TOPOLOGY网管软件的相关的其它重要部分也进行了必要的讨论。第二章第二章 SNMP、MIB 与与 TOPOLOGY 开发环境开发环境TOPOLOGY网管系统基于SNMP、MIB,软件开发平台采用了MS Visual C+6.0,并使用了MFC程序开发框架,在本章中对这些技术背景先作简单介绍。2.1 SNMP1988年,Internet体系结构委员会(IAB)提出了简单网络管理协议SNMP的第一个
19、版本SNMP V18,后来又发表了SNMP V2、SNMP V3。SNMP是基于TCP/IP协议的各种互联网络的管理标准,由于它满足了人们对通用网络管理标准的需求,而且本身简单明了,实现起来比较容易,占用的系统资源少,所以已成为事实上的工业标准。OSI网络管理一般采用管理器(Manager)/代理(Agent)的管理模型。OSI的网络管理组织模型包括以下几个重要的组成部分: (1)被管对象MO(Managed Object):可以用一定的数据表示方法表示,通过网管协议进行管理的被管理对象。 (2)管理进程(Manager Process):通常位于控制台(Console)上,它和代理进程通信,
20、发出管理操作指令,接收来自代理的信息。 (3)代理进程 (Agent Process):通常位于网关、路由器等被管对象中,监视被管对象的状态,响应管理进程的管理请求、报告被管对象的属性、执行被管对象的操作等。(4)管理信息库MIB(Management Information Base):MIB一部分位于Manager上,一部分位于Agent中。MIB实际上是一个提供被管元素信息的数据库,它由一系列被管对象及其属性、操作、通知、行为等构成,是OSI标准所提出的被管对象的数据表达格式。在管理过程中,管理员通过控制台(Console)向Manager发出管理请求,通信模块将请求发送给指定的Agen
21、t;Agent对被管对象执行相应的管理命令,或获取被管对象的属性值,或操作被管对象;Agent也可以在被管对象出现异常时,主动产生事件报告,通过通信模块发送给Manager,Manager经过处理后在控制台显示。 SNMP 的组织模型和OSI 标准表述的组织模型基本一致,只是采用的术语有细微的差别。在组织模型中所涉及的管理构件基本相同,包括Manager、Agent 、管理信息库MIB和被管对象。每一个被管设备需要具备: 1. 管理信息库MIB2. 监视、操作MIB的SNMP Agent2.2 SNMP 操作和操作和 SNMP 报文传输报文传输SNMP协议是建立在 TCP/IP协议之上的应用层
22、协议,它基于管理器/代理模型,管理器与被管对象之间通过发送SNMP报文来彼此通信。SNMP的传输报文基于UDP,由三部分组成,如图2-1所示。图2-1 SNMP的传输报文在版本号部分,描述SNMP协议的版本(SNMP V1,SNMP V2还是SNMP V3);共同体名为Community信息,Community字段的作用类似于 SNMP Manager和Agent之间的口令 , 默认的读Community是“public”,默认的读写Community是“private”。从系统安全性角度,代理可以设置Community参数及相应的访问权限,只读或读写,并要求管理者在发送报文时填写Commun
23、ity。只有在Community相同且相应访问权限相符的情况下,代理才按报文所规定的操作回送相应的响应报文。SNMP Manager和SNMP Agent 之间通过协议数据单元PDU (Protocol Data Unit) 传输管理信息,Data Area部分就是由协议数据单元(PDU)组成 ,SNMP规定了五种网络管理操作, 这五种原语操作分别有对应的PDU,它们是:(1) GetRequest SNMP管理者从SNMP代理处获取变量值。 (2) GetNextRequest SNMP管理者从SNMP代理处获取下一个变量值。 (3) SetRequest SNMP管理者设置SNMP代理上的
24、某个变量值。 (4) GetResponse SNMP管理者接收来自SNMP代理的应答。(5) Trap Trap机制使SNMP Agent向SNMPManager报告某个已经设定好的事件的发生。这5种类型的PDU除Trap之外的4种PDU格式是相同的,共有5个字段,如图 2-2和图 2-3所示。图 2-2 GetRequest PDU, GetNextRequest PDU, SetRequest PDU图2-3 GetResponse PDUTrap PDU不同于其它4种PDU格式,它有7个字段,如图 2-4所示。图2-4 Trap PDUPDU建立于UDP,每个SNMP报文被封装成一个U
25、DP数据报,并通过IP层发送出去。管理器从UDP的第161号端口接收除“Trap”以外的所有报文,Trap报文从UDP的第162号端口接收;代理从UDP的第161号端口接收所有报文。 由于SNMP是利用UDP来完成低层数据传输的,所以SNMP不保证数据传输的可靠性。这种无连接的通信不需维护系统的状态,因而提供了某种程度的健壮性,无论是管理器还是代理的操作都不依赖于对方。当远程代理失败时,管理器依然能继续工作,当代理恢复后,它能发送一个Trap将状态的改变通知管理器。此外,SNMP 的原语操作具有原子(Atomic)特性,即执行多变量操作时, 要么全部执行,要么全不执行,对任何一个变量操作的失败
26、都会导致执行过程的恢复(或称回卷 Rollback) 。SNMP在TCP/IP体系中的结构如图 2-5所示。图2-5 SNMP在TCP/IP体系中的结构2.3 SNMP V2 和和 SNMP V3在TCP/IP协议中,网管协议是变化和发展得非常迅速的应用层协议。在DMI和WBEM 等新的网络管理协议、规范出现的同时,SNMP协议本身就经历了V1、V2 和V3这三个版本的发展过程。这一方面说明了网络管理在网络发展、应用过程中的重要性,另一方面说明了网管协议的发展还不够成熟。对网管协议的发展过程的深入研究有利于我们认识和解决网管协议中存在的某些问题。2.3.1 SNMP V2 协议协议简单性是SN
27、MP Vl标准取得成功的原因之一:但简单性也正是SNMP缺陷所在,因为这种简单性是有代价的,主要休现在以下几个方面:(1) 在Manager 和Agent 之间的通信应该有安全性保障,SNMP Vl在这方面是通过传输报文中的Community字段加以实现的。SNMP V1假定在Manager和Agent之间的网络传输是安全的,如果破坏者在Manager和Agent之间对数据包进行截获 (Intercept),SNMP V1报文的的一切内容都将是不安全的。(2) 目前的网络中,一般会集成不同厂商的网络产品,网络管理系统也各种各样,而SNMP协议是一种集中式管理模式,它并不支持多个管理程序之间的通
28、信,管理员一般将网络分成几部分,每一个部分使用专用管理站和管理平台。SNMP Vl的这种集中式管理模式不能很好地适应网络的现状。(3) 没有提供成批存取机制,对大块数掘进行存取效率很低。在SNMP V2被推出之前,在1991年推出了RMON MIB(Remote Network Monitoring MIB),RMON MIB的一个比较明显的优点是它提供了收集、统计网络流量的管理功能,使得 SNMP不仅可以管理网络设备,也可以管理网络本身。针对SNMP Vl的不足之处,IAB (Internet Action Board)于1993年初,推出了SNMP V2(RFC1441RFC1452)。S
29、NMP V2除了保持V1原有的简单易于扩展等优点之外,主要在安全机制、完善功能方面进行了改进:完善了安全机制;提供了验证机制(Authentication)、加密机制(Privacy)、时间同步机制(Synchronized Time Stamp)等,以确保通信的安全。继承原有的集中式管理,同时支持分布式管理策略(Distributed Management Strategy)。网络中存在着一个主管理者,网络可以被逻辑上分割成几部分,每个部分由一个管理者管理,各部分的管理者可以直接处理管理代理的网络事件,也可以向主管理者报告。提供了一次获取成组数据的能力,效率大大提高:这是通过提供一条操作原语
30、GetBulkRequest 实现的,GetBulkRequest实际上类似于GetNextRequest,只不过它获取的是“下面多个”变量的值。另外在前面提到的MIBII也较MIBI增加了两个组,对象数量也从114个增加到185个,使MIBII对被管对象的表示能力大大增加。2.3.2 SNMP V3 协议协议导致产生SNMP V2的一个主要原因是对安全性的要求,但是SNMP V2并没能很好地完成安全性方面的工作。在SNMP V2 原形系统的实现过程中发现它比人们原先预想的要复杂得多,失去了“简单性”的特点。当开发计划的结束时间到来时,IETF (Internet EnUnerring Tas
31、k Force) 只好把几乎所有与安全相关的内容从SNMP V2中去掉,从而形成现在看到的最终的SNMP V2草案标准,即RFC 19XX 系列。SNMP V2 中最初没有报文的定义,后来又出现了SNMP V2C(Community-based SNMP V2)作为SNMP V2 的补充,它增加了V2的报文定义,但与 V1 的报文非常类似。SNMP V2的开发最终还是失败了,IETF解散SNMP V2工作组,决定把工作留给SNMP NG (Next Generation)即现在的 SNMP V3去做。SNMP V3在1993年成为提案标准 (Proposed Standard,RFC14XX
32、系列)。由于以上的原因,SNMPV3相对于V2主要增加了安全特性。在SNMP V3中,通常实在以下两个过程中实现安全处理的:(1) 传送/接收报文的过程(2) 处理报文内容的过程这两个阶段分别对应于报文处理和PDU处理模块,因此在SNMP V3中的安全是指在报文级别实现的安全,而访问控制则对应于在协议操作级别实现的安全。由两者共同实现安全的管理框架。2.4 管理信息库管理信息库 MIB管理信息库 MIB 是实现 SNMP 网络管理的关键因素。MIB的结构被称为管理信息结构 SMI(Structure of Management Information),RFC 1155中定义了SMI 。MIB
33、 库中每个被管对象类型都有名字(Name)、语法(Syntax) 和编码(Encoding) 三方面的定义。名字由一个Object Identifier唯一表示;语法表示、对象的抽象数据结构(如integer、Octet、ipAddress等)是指被管对象的抽象文法结构及其数据表达方法;编码表示对应抽象数据结构的ASN.1编码,SNMP采用ASN.1定义的BER编码规则。ASN.1 (Abstract Syntax Notation One)是一种用于描述结构化客体内容和结构的语言,MIB库中每个变量都符合ASN.1语法规则。MIB 库中使用了ASN.1中的Integer、 Octet Str
34、ing、Null等作为基本类型,同时定义了IpAddress、Counter、Gauge、TimeTicks、Opaque 等类型。IpAddress 表示32位的 Internet 地址 ,由 4 个Octet String 表示。Counter 表示一非负整数,只能递增;Gauge 表示一非负整数,可以递增或递减。基本编码规则(BER,Basic Encoding Rules) 是ASN.l 标准定义的一种传送文法。ASN.1 提供的是抽象文法结构和内容的表示方法,而BER 描述的是在传送过程中内容是如何表示的。每一个BER编码有三个字段:标签(Tag)字段是关于标签和编码格式的信息;长度
35、 (Length)字段定义数值的长度;内容(Value)字段表示实际的数值。因此,一个编码值又称TLV(Tag,Length,Value)三元组。编码可以是基本型或结构型,如果它表示一个简单类型的、完整的显式值,那么编码就是基本型 (primitive);如果它表示的值具有嵌套结构,那么编码就是结构型 (constructed)。SNMP V1使用MIB-管理信息库,它把规定的114个对象分为8个组;而在MIB-中新增了两个组Transmission和SMNP 组,对象数量增加到185个,参见表 2-1。表 2-1 MIB-的对象组对象在MIB中的存放形式被称作管理信息结构(SMI Struc
36、ture of Management Information) 。它详细定义了MIB 库的组成结构,规定了描述和标识MIB变量的一组规则。目前的两个标准数据模型是Internet SMI 和OSI SMI。Object Identifier是一个全局树的整数序列表达,即命名树(如图 2-6所示)。命名树的每个节点分别由一个整型数和一个类型说明加以表示,对象标识符的命名由专门的机构负责,各对象标识符之间共同构成一个属性分层结构。一个对象标识符是由从根出发到对象所在节点的途中所经过的数字标号序列所形成的;例如,所有的MIB变量都在mib节点之下,而这个mib节点则表示成:.dod.I
37、nternet.mgmt.mib相应的数字表示为 : .2.l图 2-6 oid命名树2.5 TOPOLOGY 开发环境开发环境 TOPOLOGY系统在Windows 2000操作系统环境下进行开发,软件开发平台采用MS Visual C+6.0,使用 WinSNMP API 进行SNMP会话,软件适用于Windows 2000/XP/NT操作系统使用。2.5.1 Visual C+6.0 MFC 应用程序框架应用程序框架早期,开发Windows应用程序必须使用微软的SDK(Software Development Kit) ,直接调用Windows API函数,向Windows
38、操作系统提出各种请求,例如配置内存、开启窗口、输出图形等等。数以千计的Windows APIs好像比重相若,各API之间的关系更是错综复杂,使开发者在使用时难于把握和查找。MFC利用面向对象的原理,把这些APIs逻辑地组织起来,使它们具备抽象化、封装化、继承性、多态性、模块化的性质。MFC应用程序框架的基本类有以下几种:(1) CWinApp应用程序的“应用程序类” ,负责初始化和运行应用程序。应用程序类对象是程序开始运行后创建的第一个对象,并且是在结束前最后一个执行的对象。应用程序类对象创建后,应用程序类负责创建程序的其他对象,包括视图兑现个、文档对象和主窗口类对象。(2) CFrameWn
39、d应用程序的“框架窗口类” ,负责显示和搜寻用户命令。对于单文档界面程序(SDI) ,由于同时只能有一个文档是活动的,所以SDI应用程序的框架窗口类为CFrameWnd;对于多文档界面程序(MDI) ,由于同时有多个文档是活动的,程序的框架除了一个主框架窗口外,对于每一个文档和视图,都需要一个子框架窗口。(3) CDocument应用程序的“文档类” ,负责装载和维护文档,文档包括应用程序的工作成果或者环境设置数据等,或者是程序需要保存的任何内容。(4) CView应用程序的“视图类” ,负责为文档提供一个或者几个视图。视图的作用是为修改、查询文档等任务提供人机交互的界面。2.5.2 WinS
40、NMPWinSNMP9是微软公司为在Windows下开发基于SNMP网管应用程序而提供的技术文档,这份文档的详细内容可以查看MSDN(当然,也可以通过http:/直接查阅)或到网站/pub/micro/pc-stuff/ms-windows/ winsnmp/ 下载。更进一步, WinSNMP是为SNMP网管开发者提供了必须遵循的开放式单一接口规范,它定义了过程调用、数据类型、数据结构和相关的语法。其参考图如图 2-7 所示。 图中给出了一种可能的从管理者实体(图中最左边) 到代理实体(图中最右边)间的端到端的SNMP联结, 它嵌入到当前的WinSNM
41、P版本中。图2-7 WINSNMP参考图第三章第三章 TOPOLOGY 系统总体设计系统总体设计3.1 TOPOLOGY 系统总体结构系统总体结构 从总体功能上看,TOPOLOGY网管系统主要由网络拓扑、拓扑图生成/布局、MIB查询和功能模块协调与切换四部分组成。 其中,网络拓扑又可分为主干网拓扑和子网拓扑;拓扑图生成/布局又可分为主干网拓扑图生成/布局和子网拓扑图生成/布局;MIB查询又可分为系统信息查询和一般信息查询与状态检测;功能模块协调与切换又可分为功能模块协调和页面切换,如图3-1所示。TOPOLOGY网管系统主干网拓扑子网拓扑主干网拓扑图生成/布局子网拓扑图生成/布局网络拓扑拓扑图
42、生成/布局 系统信息查询一般信息查询与状态检测MIB查询功能模块协调和切换功能模块协调页面切换图3-1 系统总体结构3.2 TOPOLOGY 系统各系统各功能模块设计功能模块设计1.主干网拓扑发现获取主干网中路由器、子网等之间的连接信息,将所有的路由器地址放入路由队列,将子网地址放入子网队列,将连接信息放入连接队列。设计的思路:从网络管理工作站的默认网关开始,通过读取路由设备的路由表下一跳信息,由内向外发现网络中的所有具有路由功能的网络节点及其连接关系。而从ipRouteType的值我们就可以知道该网关连接哪些子网。同时通过路由表的ipRouteIfIndex就可以发现端口,通过由接口表得到端
43、口的类型就可以了解子网类型。由上所述就可以得到网络的主干拓扑关系。2.子网拓扑发现获取所有的子网内的所有主机地址、掩码和子网地址。设计的思路:ARP表记录了当前活动机器IP与MAC的映射。通过检查设备的ipNetToMediaTable表,可以发现与该路由设备相连接的其他设备和相连子网内机器的IP地址、MAC地址以及IP与MAC间的映射方式。将通过ipNetToMediaNetAddress得到的IP地址与已发现的子网地址进行模式匹配,如果匹配成功,则该IP地址对应的主机是该子网相应的成员。同时ipNetToMediaPhysAddress(MAC地址)的获得还可以用于监视MAC-IP捆绑的情
44、况。3.主干网拓扑图生成与布局在主干网拓扑并获得了已装有了所有路由器地址的路由队列、装有所有子网地址的子网队列和装有连接信息的连接队列后,将信息进一步进行处理,使这些网络设备及其连接关系以图象的形式展示在屏幕上。设计的思路:将所有同层的同类型设备(如第一层的所有路由器)放在一个大的圆环上。对于与这些设备直接相连接的设备或子网,可以把它们放在以之为圆心的外围圆环上,如果外围圆环上的设备还有次级设备,则放置到更外围的圆环上,依此类推。4.子网拓扑图生成与布局在主干网和子网拓扑完成后,获得了已装有了所有路由器地址的路由队列、装有所有子网地址的子网队列、装有连接信息的连接队列和装有所有主机地址的主机队
45、列后,将信息进一步进行处理,将指定子网内的主机其连接关系以图象的形式展示在屏幕上。设计的思路:通过遍历资望队列,若有节点所属的子网的地址为指定子网地址,将该节点在屏幕上以挂在网线上的形式画出。若该节点为活动状态,则显示绿色图标;若该节点为非活动状态,则显示红色图标。在屏幕上,一行最多显示5台主机,整个网线以“弓”字型排布。5.信息查询与状态检测只要网络上的某台设备支持并打开SNMP代理功能,通过读取MIB库,将该设备的系统信息显示在屏幕上,及进行状态检测。设计的思路:通过SNMP发送消息和SNMP接收消息来完成SNMP会话,获取网络互联设备或主机信息,从而了解设备所处的状态。6.功能模块协调与
46、切换由于在完成主干网和子网拓扑后,已经将主干网拓扑图画在屏幕上,可以通过双击任意一个子网图标来进入该子网拓扑图页面,也可以通过使用弹出式菜单来进入任意一个子网的拓扑图页面,在子网内查询主机与相关设备的信息,进行状态检测。设计的思路:通过使用自动机原理,设计出状态图,完成协调各个模块正常运行的工作。同时,通过访问记录了设备在屏幕上位置的相关数据来完成页面间切换。3.3 模块之间的协调模块之间的协调由于TOPOLOGY系统是单文档下开发的,并且两个拓扑图生成/布局模块都是在OnDraw()函数下实现的。特别是要使用双击坐标左键、使用弹出式菜单来进行生成主干网拓扑图和子网拓扑图。并且由于MFC使用的
47、是消息机制,哪些模块先执行,哪些模块后执行,处理起来要十分小心。如主干网拓扑必须在完成获得默认网关后进行,子网拓扑必须在完成主干网拓扑后。因此有必要将系统的运行过程分成若干个状态,以此来控制哪些模块先执行,哪些模块后执行,什么时候哪些消息是有效的,哪些时候哪些消息是无效的。在TOPOLOGY系统中,凡是与显示相关的事件都可作为状态间转换的条件。选择状态和条件的方法比较灵活,可以根据所需的具体要求进行分析,这可以按照自动机原理设计状态图。在TOPOLOGY系统中,笔者使用一个了一个int类型的公共变量key来标明状态。其中,key=0状态,表示系统刚启动的状态;key=1状态,表示完成了获得默认
48、网关;key=2状态,表示完成了获得默认网关和主干网拓扑并显示;key=3状态,表示获得默认网关、主干网拓扑并显示和子网拓扑;key=4状态,表示进入了子网显示页面。其中,状态间转换的条件按如下说明:a-选择主干网拓扑操作b-选择子网拓扑操作c-双击鼠标左键d-获得输入IP地址的默认网关e-从key=4状态返回到key=3状态f-按下鼠标右键具体如图3-2 所示。Key=0Key=1Key=3Key=2Key=4a、b、c、fdb、c、d、fada、c、fbab、fdcdebaf图3-2 用于协调TOPOLOGY系统的状态图第四章第四章 TOPOLOGY 网络拓扑发现模块的设计与实现网络拓扑发
49、现模块的设计与实现4.1 基于基于 SNMP 的主干网拓扑发现的主干网拓扑发现4.1.1 传统传统的基于的基于 SNMP 的网络主干拓扑发现方法的网络主干拓扑发现方法SNMP已经成为网络管理的标准,为网络拓扑自动发现带来了巨大的方便,同时也大大提高了网络拓扑发现的速度。以太网以太网以太网以太网以太网以太网路由器子网图4-1 网络拓扑结构模型网络主干拓扑发现算法的任务就是发现被管网络中的子网、路由器以及它们之间的连接关系。图4-1是网络拓扑结构的一个模型。其中,各子网通过各自的路由器与其他子网通信,它们都连接到路由器的一个端口上。路由器的一个端口可以连接一个子网,也可以同其他路由器相连。当子网内
50、的某一机器向别的子网发送数据时,数据包首先到达本子网的默认路由器,默认路由器检测数据包中的目的地址,根据其路由表确定该目的地址是否在与自己相连的子网中。如果是,则把数据包直接发往目的地,否则转发给路由表中规定的下一个路由器,下一个路由器再进行类似处理,依次类推,数据包将最终到达目的地。可见,通过分析路由器上的路由表,就可以知道网络层的拓扑结构。 网络主干拓扑发现用到的网络主干拓扑发现用到的 MIB 组组MIB-II(RFC-1213)是标准的SNMP MIB,所有的路由器都必须实现它。拓扑发现程序为了具有通用性的特点,必然选择MIB-II作为拓扑发现工具。MIB-II由很多不同的
51、部分组成,本节的主干拓扑发现算法用到的组包括:system,interfaces,和ip。下面详细介绍这三个组中包含的对象。1) System组该组包含七个对象,分别为:sysDescr、sysObjectID、sysUpTime、sysContact、sysName、sysLocation和sysServices。其中sysDescr描述了设备的相关信息,一般包括厂商,型号等。SysObjectID唯一标识特定厂商的特定类型设备,比如sysObjectID为.5,则可以判断该设备为思科公司生产的型号为cisco6506的交换机。SysUptime表示设备从最近一次
52、启动开始正常运行的时间。SysContact由网络管理员设定,一般设为网络管理员的联系方式。SysName为设备的名字,算法中会用这个对象来判断不同的IP地址是否属于同一个设备。SysLocation由网络管理员设定,一般设为设备所在地点。SysServices表示了该设备所能提供的服务。2) Interfaces组该组包含两个对象ifNumber和ifTable。其中,ifNumber对象表示该设备所具有的接口数量。该组的另一个元素ifTable是一张表,表内的每一个字段都是某一个接口的一个属性,包括接口索引(ifindex),接口类型(ifType),接口速度(ifSpeed)和接口物理地
53、址(ifPhysAddress)等。3) IP组该组的元素较多,其中有三个表对拓扑发现来说比较重要,分别是ipAddrTable,ipRouteTable和ipNetToMediaTable。通过表ipAddrTable,可以找到被管设备所有的 IP 地址,同时结合interfaces组的ifTable表,可以把接口和其IP地址一一对应起来。网络主干拓扑发现算法主要就是利用表ipRouteTable来判断网络层的拓扑结构的。子网与路由器以及路由器和路由器的关系都能从路由表中得出来。该表中对应拓扑发现的对象列举如下:IpRouteDest:路由的目的地址。如为,说明该路由为缺省路由
54、。通往同一个目的地的路由可能有多个,路由的选择依赖于所使用的路由协议。IpRouteNextHop:路由的下一跳路由器地址。ipRouteMask:路由目的地的子网掩码。提取IP数据包中的目的地地址,与ipRouteMask进行按位“与”运算,得到的结果与ipRouteDest比较,如相同则应选择该路由。如果ipRouteDest为,则规定ipRouteMask也为。ipRouteType:路由的类型,为整型类型。其意义如表4-1所示。表4-1 ipRouteType值及其意义ipRouteType值意 义Other(1)其他Invalid(2)非法Direct(3
55、)该路由目的地址为路由器直接连接的子网Indirect(4)远程路由,目的地址为远程的主机、网络或子网 基于基于 SNMP 的网络主干拓扑对象发现的网络主干拓扑对象发现在详细讨论拓扑发现算法之前,首先对算法中涉及到的一些问题进行说明。1) 默认网关的发现首先,访问拓扑发现程序所在计算机的SNMP MIBII中的ipRouteTable,如果发现有ipRouteDest值为的记录,则说明程序所在的计算机设置了默认网关,该记录的ipRouteNextHop值即为默认网关的地址。检查默认网关的ipForwarding值。如果为1,则表明该默认网关确实是路由设备,否则不是。
56、2) 子网的发现遍历路由器MIBII的IP管理组中管理对象ipRouteDest下的所有对象,以每个路由目的网络号为索引,查询ipRouteType字段的值。若该值为3(direct) ,则表明这条路由为直接路由,若该值为4(indirect) ,则为间接路由。间接路由表明在通往目的网络或目的主机的路径上还要经过其它路由器,而直接路由表明目的网络或目的主机与该路由设备直接相连,这样就得到了与路由器直接相连的网络号。再以这组网络号中的每个为索引,查询其路由掩码(ipRouteMask) 。根据路由掩码,就可以确定这组网络中每一个的IP地址范围。例如,已知路由器的IP地址为,
57、且路由器支持SNMP协议。利用SNMP协议可以得到以下与路由器直接相连的子网,如图4-2所示。网络号 网络掩码 地址范围 28 92 29 192 255 55 255 255 图4-2 与网关直
58、连的子网3) 其他路由设备的发现对于除了默认网关之外的路由设备,查询默认网关MIBII的IP管理组路由表中类型为间接路由的路由表项,得到路由的下一跳地址(ipRouteNextHop) 。下一跳地址给出了与该网关相连的路由设备,仍可以利用上面的方法搜索这个设备的路由表。这样,该方法可以搜索出多个路由设备,并要求将它们所存储的路由表信息进行整合,得到更大的网络拓扑。4) 网络主干拓扑的连接对象网络主干拓扑主要反映子网和路由器之间的连接关系。子网和路由器的连接关系可以在发现与路由器直接相连的子网时得到,路由器和路由器的连接关系可以通过路由表中的ipRouteNextHop得到。 数据
59、结构与实现步骤数据结构与实现步骤主干网络拓扑的遍历查询,遵循上述的原则:(1)如果路由的类型是不直接相连的(ipRouteType=4),则被查询路由表的网关与路由表中的ipRouteNextHop相邻。(2)如果路由的类型是直接相连的(ipRouteType=3), 则ipRouteDest所表示的子网与查询的网关相邻。(3)多地址路由器取其中一个IP做为路由的标识。由上分析得到算法(1)如下:数据结构1、CString CurrentRouter;/当前路由:与当前网关相对应的路由设备的唯一标识,即当前网关地址表中最大的ipAdEntAddr值。2、CString CurrentGatew
60、ayInterface;/当前网关接口:当前正在访问的路由设备的路由端口3、structRouter/路由队列的节点:存放发现到的所有路由设备的唯一标识CString ip;/路由地址CPoint pointxy; /当前路由节点在窗口位置struct Router * p;/与它相连的父路由节点 ;4、CListRouterList; /路由队列 5、CListUnVisitedGatewayInterfaceList; /待访问网关地址队列6、CListVisitedGatewayInterfaceList; /已访问网关地址队列7、struct SubnetListNode /子网队列中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT 34141-2017 高速列车网络控制系统》专题研究报告
- 2025年大学二年级太空育种专业《太空育种技术》期末考试测验卷及答案
- 工程热处理工安全意识强化模拟考核试卷含答案
- 履带运输车司机创新实践考核试卷含答案
- 《GBT 20570-2015 玉米储存品质判定规则》专题研究报告
- 矿压观测工岗前诚信道德考核试卷含答案
- 硝酸生产工安全意识水平考核试卷含答案
- 加气混凝土大板拼装工复试测试考核试卷含答案
- 对二乙基苯装置操作工岗位设备安全技术规程
- 《GBT 3780.22-2016 炭黑 第 22 部分:用工艺控制数据计算过程能力指数》专题研究报告
- 事业单位员工在职证明模板(9篇)
- DL∕T 5161.5-2018 电气装置安装工程质量检验及评定规程 第5部分:电缆线路施工质量检验
- DL∕T 5106-2017 跨越电力线路架线施工规程
- 床-轮椅转移操作质量及评分标准
- 高标准农田信息化建设方案
- 销售项目演练方案
- MOOC 器械体操-国防科技大学 中国大学慕课答案
- 路灯安装检验批质量验收记录表-
- MOOC 健美操-华中农业大学 中国大学慕课答案
- 大班科学《各种各样的飞机》教案
- 药店执业培训与职业道德
评论
0/150
提交评论