如何快速的计算一个eigrp拓扑表的节点表和链路表

基于SNMP的网络拓扑发现系统的设计与实现_伤城文章网
基于SNMP的网络拓扑发现系统的设计与实现
中图分类号: UDC:TP319密 级: 本校编号:公开工 程 硕 士 学 位 论 文论文题目:基于SNMP的校园网拓扑发现系统的 设计与实现研究生姓名:刘家乐学号:G07084学校指导教师姓名: 企业指导教师姓名:吴辰文 陈贻品职称:教授职称: 副教授申请学位工程领域名称: 计算机技术论文提交日期: 论文答辩日期: 独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研 究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或 撰写过的研究成果,也不包含获得 兰州交通大学 或其他教育机构的学位或证书 而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作 了明确的说明并表示了谢意。学位论文作者签名:签字日期:年月日学位论文版权使用授权书本学位论文作者完全了解 兰州交通大学 有关保留、使用学位论文的规定。 特授权 兰州交通大学 可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 (保密的学位论文在解密后适用本授权说明)学位论文作者签名: 签字日期: 年 月 日导师签名: 签字日期: 年 月 日 工 程 硕 士 学 位 论 文基于 SNMP 的校园网拓扑发现系统的 设计与实现Design and Implementation of Campus Network Topology Discovery System Based on SNMP作 工 学 校 企 完者 姓 名: 程 领 域: 号 : 内 导 师: 业 导 师: 成 日 期:刘家乐 计算机技术 G07084 吴辰文 陈贻品 2010 年 10 月 10 日兰 州 交 通 大 学 Lanzhou Jiaotong University
兰州交通大学专业学位硕士学位论文摘要随着校园网络规模的不断扩大和网络技术的不断发展, 依靠传统的手工管理方式对 大型校园网进行管理几乎已经是一个不可能的任务。 迫切需要功能强大的网络管理软件 对校园网进行自动化管理。 而网络拓扑信息的自动发现正是网络管理软件中非常基础和 重要的功能。SNMP 协议是网络管理领域的业界标准,被各网络厂商广泛支持、应用。 本文正是在对校园网管理工作的实践, 和对网络拓扑发现技术的深入了解基础上设计与 实现了基于 SNMP 协议的校园网网络拓扑发现系统。 首先, 本文介绍了课题的背景及研究现状。 本课题来源于某高校校园网的管理需求。 大规模的校园网络需要高效的网络管理软件进行管理。从上世纪九十年代开始,陆续有 一些学者和专家对网络拓扑发现技术进行了研究,并提出了相应的技术和理论。与此同 时,许多厂家发布了一些商业软件产品,从不同程度上实现了拓扑发现功能。 然后,本文研究和分析了拓扑发现的基础理论及技术。这部分的相关技术主要包含 了网络层拓扑发现和链路层拓扑发现两个方面。 本系统根据校园网络的特点主要采用技 术成熟、实现较简单的基于 SNMP 协议的路由表网络拓扑发现技术实现网络层拓扑发 现;采用基于地址转发表的技术实现链路层拓扑发现。上述拓扑发现技术都是基于 SNMP 的,笔者在论文中对 SNMP 协议进行了全面的分析研究。 其次,研究和分析了常用的拓扑发现算法,对本系统中要应用的网络层拓扑发现算 法和链路层拓扑发现算法进行了详细研究。这是拓扑发现的核心技术,也是本系统开发 的难点。 再次, 本文应用 ObjectSNMP 和 AdventNet SNMP API 开发包在 Java 语言编程平台 和 MySQL 数据库平台上设计和实现了一个具有实用用价值的校园网拓扑发现系统。从 系统的体系结构、模块划分、数据库设计到开发环境、界面设计、数据存储、拓扑展现 等关键技术的应用等都进行了详细的阐述。 在得到网络拓扑结构信息后,拓扑图形的呈现是非常重要的功能。本文采用了基于 分层的拓扑图布局算法对拓扑图形进行布局呈现,将拓扑发现的结果清晰地展现出来。 最后,应用仿真软件对拓扑发现系统进行了测试,并在真实校园网环境中进行了试 运行。测试环境应用 GNS3 和 Dynamips 仿真软件进行搭建。测试和运行的结果表明, 本文设计的网络拓扑发现系统效率高、性能稳定,能较好地满足校园网络管理的需求, 达到了预定的设计目的。 关键字:网络拓扑发现; SNMP; 校园网; 网络管理; 拓扑图布局-I- 兰州交通大学专业学位硕士学位论文AbstractWith the constant expansion of the campus network and network technology continues to evolve and rely on traditional manual management on a large campus network management is almost an impossible task. Urgent need for a powerful network management software to automate the management of the campus network. The automatic discovery of network topology information is network management software is very basic and important function. SNMP network management protocol is the industry standard, widely supported by the network vendors, application. This article is in the work on the campus network management practices, and network topology discovery based on deep understanding of technology design and implementation of a campus network based on SNMP protocol network topology discovery system. First, the article describes the background and status of the subject. This topic comes from a college campus network management needs. Large-scale campus network requires an efficient network management software to manage. Starting from the nineties of last century, one after another, some scholars and experts on the network topology discovery techniques were studied, and the corresponding technologies and theories. At the same time, many manufacturers released a number of commercial software products, from different levels to achieve a topology discovery. Then, the paper studies and analyzes the basic theory of topology discovery and technology. This part of the related technology mainly includes the network layer topology discovery and link-layer topology discovery of two aspects. The system according to the characteristics of the campus network mainly uses mature technology to achieve a simpler routing table based on SNMP protocol network topology discovery network layer topology -based address forwarding link layer topology discovery technology. The topology discovery techniques are based on SNMP, the author of the SNMP protocol in the paper conducted a comprehensive analysis. Second, the research and analysis of the common topology discovery algorithm, the application of this system to the network layer and link layer topology discovery algorithm for topology discovery algorithm in detail. This is the core technology for topology discovery, but also the difficulty of the system development. Again, this paper ObjectSNMP and AdventNet SNMP API package in the Java programming language development platform and MySQL database platforms, design and implement a practical value of the campus network with a topology discovery system. From- II - 基于 SNMP 的校园网拓扑发现系统的设计与实现the system architecture, the module division, the database design to development environments, interface design, data storage, topology and other key technology to show and so were described in detail. Get the information in the network topology, the topology graph is a very important function of rendering. In this paper, topology-based hierarchical layout algorithm presents the layout of the topology graph, the topology discovery results clearly demonstrated. Finally, topology discovery system simulation software was tested, and in the real environment of the campus network was test run. Application GNS3 and Dynamips test environment simulation software to build. Testing and operation results show that the design of network topology discovery system, high efficiency, performance and stability, to better meet the needs of the campus network management, to achieve the intended design purpose. Keywords:Network Topology D SNMP; Campus N Network M Topology Layout- III - 兰州交通大学专业学位硕士学位论文目录摘 要........................................................................................................................... I Abstract ............................................................................................................................ II 1 绪论 ............................................................................................................................1 1.1 课题来源及背景 .............................................................................................1 1.2 课题研究现状 .................................................................................................2 1.2.1 理论研究现状...........................................................................................2 1.2.2 市场上流行的部分产品...........................................................................3 1.3 课题研究的目的和任务 .................................................................................4 2 拓扑发现相关技术 ....................................................................................................6 2.1 网络层拓扑发现技术 .....................................................................................6 2.1.1 基于ARP ...................................................................................................6 2.1.2 基于ICMP .................................................................................................6 2.1.3 基于OSPF路由协议 .................................................................................7 2.1.4 基于DNS...................................................................................................8 2.1.5 基于SNMP协议的网络拓扑发现技术 ....................................................9 2.1.6 网络层拓扑发现技术小结.......................................................................9 2.2 链路层拓扑发现技术 ...................................................................................10 2.2.1 基于地址转发表.....................................................................................10 2.2.2 基于生成树协议的方法.........................................................................10 2.2.3 基于LLDP...............................................................................................11 2.2.4 基于端口流量.........................................................................................12 2.2.5 链路层拓扑发现技术小结.....................................................................12 2.3 SNMP协议简介 ............................................................................................13 2.3.1 SNMP基本原理 .......................................................................................13 2.3.2 管理信息库MIB .....................................................................................14 2.3.3 SNMP的五种消息类型 ...........................................................................14 3 拓扑发现算法 ..........................................................................................................17 3.1 网络层拓扑发现算法 ...................................................................................17 3.1.1 算法的理论基础.....................................................................................19 3.1.2 算法的数据结构.....................................................................................21 3.1.3 算法流程图.............................................................................................22 3.1.4 算法的伪代码.........................................................................................22 3.2 链路层拓扑发现算法 ...................................................................................24 3.2.1 算法中涉及的MIB .................................................................................24 3.2.2 算法的理论基础.....................................................................................25 3.2.3 算法的数据结构.....................................................................................26 3.2.4 算法流程图.............................................................................................27 3.2.5 算法的伪代码.........................................................................................27 3.2.6 主机拓扑信息的发现.............................................................................29 4 拓扑发现系统的总体设计 ......................................................................................30 4.1 系统需求分析 ...............................................................................................30- IV - 基于 SNMP 的校园网拓扑发现系统的设计与实现4.2 校园网络基本结构和特点 ...........................................................................30 4.3 系统体系结构 ...............................................................................................31 4.4 功能模块 .......................................................................................................32 4.5 数据库设计 ...................................................................................................33 5 拓扑发现系统的详细设计与实现 ..........................................................................34 5.1 系统开发环境 ...............................................................................................34 5.1.1 Java简介...................................................................................................34 5.1.2 Eclipse简介 ..............................................................................................34 5.1.3 SNMP软件开发包简介 ...........................................................................35 5.1.4 MySQL数据库简介.................................................................................35 5.2 界面设计 .......................................................................................................36 5.2.1 主界面设计.............................................................................................36 5.2.2 右键菜单设计.........................................................................................37 5.3 网络拓扑发现 ...............................................................................................38 5.3.1 主干网拓扑发现.....................................................................................38 5.3.2 子网拓扑发现.........................................................................................39 5.3.3 拓扑信息的储存.....................................................................................41 5.4 网络拓扑结构的图形呈现 ...........................................................................43 5.4.1 拓扑图构造概述.....................................................................................43 5.4.2 基于分层的拓扑图布局算法.................................................................44 6 系统测试与运行 ......................................................................................................47 6.1 系统的测试 ...................................................................................................47 6.1.1 测试目标.................................................................................................47 6.1.2 测试环境.................................................................................................47 6.1.3 测试方案.................................................................................................47 6.1.4 设备的配置.............................................................................................48 6.1.5 测试结果.................................................................................................48 6.2 系统的运行效果 ...........................................................................................49 7 总结与展望 ..............................................................................................................50 7.1 总结 ...............................................................................................................50 7.2 展望 ...............................................................................................................51 致 谢.........................................................................................................................52 参 考 文 献...................................................................................................................53-V-
兰州交通大学专业学位硕士学位论文1 绪论随着计算机和网络通信技术的快速发展, 计算机网络在现代社会中扮演着越来越重 要的角色,其应用范围也越来越广,己经渗透到了社会生活的各个领域,对社会进步与 经济发展起着越来越重要的作用。高校校园网便是其中的一个典型应用领域,高校校园 网的建设和发展也是近十多年来计算机网络发展的一个方面,结构越来越复杂,校园网 络设备和用户数量不断增加,网络规模越来越大,行为也越来越丰富多样。为保障网络 正常、高效运行,迫切需要对校园网络进行实时监测和管理。校园网络管理问题日渐成 为高校日常管理的一个重大课题。 按照国际标准化组织 ISO 的定义,网络管理主要包括五个功能域:故障管理、配置 管理、性能管理、安全管理和计费管理。五大功能域之间既相对独立,又存在着联系。 在五大功能域中,配置管理是基础,它的主要功能包括发现网络的拓扑结构、监视和管 理网络设备的配置情况,而已知网络的拓扑结构是监视和管理网络设备的基础。因此校 园网络拓扑结构的获得对于整个校园网管理具有十分重要的作用, 它是对校园网络进行 高效管理的前提和基础。1.1 课题来源及背景本课题来源于作者的工作岗位,作者就职于湖南交通工程职业技术学院(简称交工 院)网络管理中心,负责整个学院校园网络的管理和维护工作。正是在网络管理工作的 实践中遇到了一些实际问题驱使使我去研究网络拓扑发现这一领域, 促进我们的网络管 理工作。 交工院校园网始建于 1998 年 6 月,建设初期校园网络规模较小,仅仅覆盖一个校 区内的几个楼栋、几十个信息节点。随着学院的发展,办学规模不断扩大,信息化程度 不断提高。 校园网经过多次扩充和改造, 已经建成跨越四个校区, 覆盖到二十多栋楼宇, 上千个信息节点的较大规模的计算机网络。尤其是我院 2009 年启动新校区建设以来, 新校园网将以新标准、新技术和更高的要求进行设计和建设,初步规划的信息点总数将 超过 5000 的校园园区网络。届时将进一步提高我院的信息化水平,为我院日常管理和 各项事业的发展提供一个更好的平台和支持环境。 对于小型的网络,网络管理员可以采用手工绘制的网络拓扑图,依靠过去的网络管 理经验,使用简单的 Ping、Tracert、Netstat 等命令判断链路的性能,找出网络中的问题 原因和故障点。 但是对于大规模的校园网来说, 网络中包含的网络设备及主机数目众多, 连接关系复杂, 尤其是近年来无线接入技术在校园网络中的大量应用使得网络变动性大 大增加:可能在短时间内就会有一定数目新主机和网络设备的接入,也有可能原有网络 设备会撤离。面对上百台设备,几千个用户,手工获取和管理网络拓扑非常繁琐,几乎-1- 兰州交通大学专业学位硕士学位论文变成了一件不可能的任务。 必然导致不能够及时发现故障点、 排除故障, 致使工作被动, 很难完成网络维护任务。目前网络病毒日益泛滥以及用户的各种非法操作,使得校园网 内几乎每天都有网络故障发生,从而要求网络管理人员必须及时地发现网络故障,因此 网络拓扑图的高效生产更显的尤为重要。 本课题所研制的网络拓扑自动发现系统便是自 动发现校园网的拓扑结构,为网络管理提供有效的技术支持和辅助手段。1.2 课题研究现状1.2.1 理论研究现状 对网络拓扑自动发现的研究始于上世纪九十年代。1990 年,J.D.Case 等人提交了 RFCll57,即名为“一种简单网络管理协议”的规范;一年后 M.Rose 和 K.Mecloghrie 在 RFC1213 中提出了因特网管理信息库 MIB-II,这是基于 TCP/IP 协议的规范。他们制 定这些文档时都特别考虑了网络管理中的拓扑发现需要,从这以后,SNMP 协议成为拓 扑发现的主要工具。基于 SNMP 的网络层拓扑发现算法最开始于 1996 年由 Glelm Mansfield 等人提出,之后网络拓扑发现算法有许多改进,一些相关的拓扑发现软件也 相继问世。比如 IBM 公司的 Tivoli、Cisco 公司的 Cisco works、HP 公司的 OpenView, 其拓扑发现的核心技术就是采用了基于 SNMP 协议的网络层拓扑发现算法。 此外,由 Bureh 和 Cheswich 提出了的基于 ICMP 的方法;Siamwalla 等人采用基于 ICMP 命令的方法,针对网络层拓扑发现提出了一种启发式方法,它利用的工具是如 traceroute 和 ping 这样的工作于 ICMP 协议的。 网络层拓扑信息仅仅是网络连接情况的一部分, 此外子网内的连接关系亦是网络管 理者所关心的。为了获取子网内网络设备的复杂连接关系,因此随后研究者们在链路层 拓扑发现方面也相继开展了一些卓有成效的研究工作并提出了一系列物理拓扑发现技 术。2000 年,IETF 推出了物理拓扑 SNMP MIB 信息管理库,但是对于如何获得物理拓 扑信息,IETF 并没有定义任何通用的算法和协议。 目前在物理拓扑发现方面,美国南加州大学信息科学学院 SCAN 研究组,康奈尔 大学网络研究组、加州伯克莱大学计算机系及卡朗讯贝尔实验室等研究机构走在前列。 Myung-Heeson 等提出了一种基于生成树协议 STP 的物理拓扑发现算法;Yuri Breithart 等提出了基于地址转发表 AFT 的物理网络拓扑发现算法;Richard Black 等提出一种基 于探测包的技术;Lowekamp 等人提出了一种基于非完整地址转发表的拓扑发现算法。 国内在网络拓扑发现方法方面也有所研究。郑海、张国清等人提出了一种算法,只 要下行端口的地址转发表是完整的就可以构造出交换机之间的连接关系;陈松、王珊等 提出了一种新的物理网络拓扑发现算法, 其基本思想是采用树的形式表示交换机拓扑连 接关系,再利用生成树集合演绎树的变化过程来完成拓扑发现。-2- 兰州交通大学专业学位硕士学位论文很多网络厂商也纷纷意识到了拓扑管理技术的重要性, 相继开发了相应的协议和工 具。 如北电网络公司 Nortel 开发的 Optivity Enterprise 和思科网络公司 Cisco 开发的拓扑 发现协议(Cisco Discovery Protocol, CDP)。 国内这方面的研究起步较晚,主要是一些重大的国家重点基金项目,在网络管理、 网络拓扑发现方面作了系统性、深刻的研究工作。比如国家重点基金项目“基于网络探 测的 IP 网络拓扑发现和性能分析”等。国内许多高校也有一些科研项目,开展了网络 拓扑发现方面的研究。国内的一些厂商也纷纷推出了相关的产品。比如锐捷公司的 StarView 网络管理软件,游龙公司的 SiteView 网络管理软件,联宇科技有限公司的 EasyMan 软件等。 随着 IPv6 技术的发展和逐渐地广泛应用,对 IPv6 网络的研究也逐渐深入,人们开 始关注 IPv6 网络的拓扑自动发现。由于 IPv6 网络地址数量巨大以及 IPv6 协议地址结 构等方面发生了变化,适用于 IPv4 网络的拓扑发现方法和技术不一定能直接用于 IPv6 网络环境中,必须做出相应的调整、改进才能适用用于 IPv6 网络环境中。 综上所述,对于拓扑发现技术,基于 SNMP 协议的网络层的拓扑发现研究较早, 发现机制和算法相对成熟;而对于子网内的链路层拓扑的发现,发现机制不同于网络层 拓扑,研究较晚,到目前还没有成熟的方法和技术,因此它是目前网络拓扑发现领域内 一个新的研究方向,发现难度比较大,需要做的研究工作还很多。 1.2.2 市场上流行的部分产品 伴随着计算机网络的发展,对网络管理软件的需求也越来越强,许多厂商开发了自 己的网络管理产品。目前业界应用较为广泛的产品主要有: (1)HP 公司的 OpenView Network Node Manager 软件 HP OpenView 是第一个出现的网络管理系统,是一个非常经典的网络管理软件,是 一个广泛使用、 获得大多数用户认可的网络管理系统, 多次被评为最优秀网络管理软件。 它的主要特 点是给第三方网络管理应用程序开发人员提供了二次开发平台,同时也可 向用户提供最终的可安装产品。 HP OpenView 为 UNIX 和 Windows 环境提供了统一的系统管理,为运行在不同的 平台上的软件版本提供了统一、直观的界面,所以 IT 部门能够很容易地控制并配置大 量的多机种系统。 HP OpenView 的主要功能:网络性能与吞吐量的分析;自动发现网络拓扑结构;历 史数据分析;故障报警机制。 OpenView 的网络拓扑自动发现功能相当不错,启动后能立即自动发现本网段的结 点,并将网段中的路由器或网关、子网以图标的形式显示在拓扑图形上。 (2)思科公司的 Cisco Works 软件-3- 兰州交通大学专业学位硕士学位论文由 Cisco 公司开发,是一个基于 SNMP 的网络管理软件,并且使用了 Cisco 的专门 技术 CDP 对思科公司的网络产品进行精确的搜索, 所以 CDP 只能搜索本公司的网络产 品,对其它厂家的网络产品不具备兼容性。 Cisco Works 主要功能:自动安装管理器;通用命令管理器;网络设备的监控;网 络设备的设置;路径工具;故障预警;实时图形。 CDP 支持对 VLAN 的拓扑发现,前提是网络设备必须是 Cisco 的产品。 (3)IBM 公司的 Tivoli NetView 及 Switch Anlyzer IBM Tivoli NetView 检测 TCP/IP 网络、 显示网络拓扑结构、 相关信息和管理事件以 及 SNMP 陷阱、监控网络运行状况并收集性能数据,配合 Tivoli Switch Analyzer 可以对 网络实施第二层监控。Tivoli NetView 提供了强大的信息过滤能力,可通过设置阀值来 减少部分冗余报警;通过可扩展性和灵活性满足大型网络管理人员的使用需要,以管理 关键任务。 (4)锐捷网络公司的 StarView 星网锐捷网络公司是国内一家较早从事网络设备解决方案的网络厂商, 公司推出的 网管软件 StarView 是国内教育行业应用较广泛的网络管理产品,具有灵活的操作性能, 并且实现模块化, 有利于用户定制。 其中的功能如设备管理、 网络拓扑管理、 性能监测、 事件管理与预警管理等网管智能性较高。 网管的定量化分析是通过强大的后台数据库支 持,结合报表统计等功能实现的。StarView 可以自动检测与描绘网络拓扑结构,集成了 目前最先进的二层拓扑发现算法,有效实现了拓扑视图和集中式管理。 在网络拓扑管理方面,StarView 可以按照网络管理员的需求自行组建物理视图,软 件提供了各种各样的的功能视图和管理窗口, 不但将网络设备拓扑图一目了然的展现在 用户面前,而且能直接进行各种操作,完成设备的配置、控制与监视,功能非常强大。1.3 课题研究的目的和任务目前市场上流行的网络管理软件都相当昂贵,并且很多客户反映,花大量资金购买 的网管软件也不一定能达到预想的效果;另一方面,这些软件大多数不利于二次开发。 因此,结合校园网的自身需求,量身定制一个低成本、易用、可靠、有效的网络管理系 统十分必要,一方面可节省大量经费,另一方面可以提高网络管理人员的技术水平和科 研水平,随着日后网络的变化还可以进行进一步开发。 网络拓扑的发现和管理是网络管理系统的重要基础功能, 本文所阐述的校园网拓扑 自动发现系统就是为了解决校园网络中的拓扑发现和管理问题而提出的。 系统的一般原 理是:通过拓扑算法,利用网络协议或网络工具,自动探测、扫描整个网络,以获取网 络设备及主机的活动信息和它们之间的连接关系,并以图形化的方式显示给网络管理 者。-4- 兰州交通大学专业学位硕士学位论文本系统紧密围绕我院校园网特点进行设计。交工院校园网主要有三个特点:一是地 理跨度大;二是网络主干设备是三层交换机;三是主干网络设备支持 SNMP 协议;四 是还存在大量旧的网络设备。因此,本文的拓扑发现以三层交换机为网络核心,研究重 点是主干拓扑发现和链路层拓扑发现,并在此基础上发现哑设备。 本文将对现有的拓扑发现方法及 SNMP 协议进行深入分析和研究,在此基础对校 园网络拓扑发现系统进行设计,并最终实现预定功能。 具体来讲,本课题的主要任务包括: (1) 分析了当前网络拓扑发现的主要技术,及解决这一问题的主要方法。 (2) 应用一种网络层发现算法,对主干网络设备进行拓扑发现。 (3) 应用一种物理层发现算法,对交换机的链接关系进行拓扑发现。 (4) 对发现后的网络拓扑结构进行布局,并以图形化的方式显示出来。 (5) 对校园网络拓扑发现系统的系统结构和功能模块进行设计,并利用 Eclipse + ObjectSNMP 开发环境实现该系统。 (6) 利用 Dynamips 实验环境对拓扑发现系统的模块功能进行测试,验证拓扑发现 算法的正确性、有效性。 (7) 通过在正式校园网环境中的使用,验证该系统能适用于现行的校园网络环境 中。-5- 兰州交通大学专业学位硕士学位论文2 拓扑发现的相关技术拓扑自动发现是利用网络协议或网络提供的可用工具,通过拓扑算法,自动探测整 个网络,以获取网络设备的存活信息和它们之间的连接关系。本章将分析拓扑发现的各 种方法,并对它们进行相应的比较。一般情况下,拓扑发现按照所在的层次不同可以分 为网络层拓扑发现和数据链路层拓扑发现, 按照表现形式的不同可以分为逻辑拓扑发现 和物理拓扑发现。因为网络层拓扑发现主要是发现路由器、三层交换机和子网的连接关 系,子网间设备的表现形式主要是逻辑表现方式,因此习惯上网络层拓扑发现和逻辑拓 扑发现经常混合使用。数据链路层拓扑发现主要是发现链路层的设备,发现的目标主要 是连接关系较难确定的交换机及主机等,而表现形式更偏重于它们之间的真实连接关 系, 即物理表现方式, 因此习惯上数据链路层拓扑发现和物理拓扑发现也经常混合使用。 本章将使用逻辑拓扑发现和物理拓扑发现的表述方法,对拓扑发现的各种方法进行介 绍,并做相应的对比。2.1 网络层拓扑发现技术2.1.1 基于ARP ARP 协议的广泛应用是因为以太网技术是目前应用最普遍的网络技术。任何有以 太网接口的网络层设备如果要通过网络层协议,如 IP 协议与其他设备通信,就必须支 持 ARP 地址解析协议。该协议在本地维护着一张 ARP 表,该表中记录了通过该设备连 接的以太网中其它网络设备的 IP 地址和 MAC 地址的对应关系。 根据网络中间一台路由器或者交换机的 ARP 表,可以发现与其各个以太网端相连 的以太局域网中的所有其它网络设备,再判定连接的设备类型是路由器或者交换机,并 根据 ARP 表继续进行发现,从而得到整个以太网络的拓扑结构关系。 这种方式要求连接设备间必须要有通信流量后才能发现。 这种方法适合于局域网发 现,发现速度快、发现效率高,但 ARP 表一般为动态生成,所以一般情况下这种方式 不适合在大规模网络环境中应用, 且不能对那些不支持 ARP 协议的网络设备进行发现。 2.1.2 基于ICMP 因特网消息控制协议 ICMP 是一个网络层的协议,和 IP 协议密切相关。基本上支 持 IP 协议的设备几乎都支持 ICMP 协议, ICMP 是一种用于主机和网关传送控制信息或 差错信息的协议。主机使用这种机制测试目的主机的是否可达,网关使用这一机制报告 递交信息传递过程中的状态。 我们熟知的 Ping 和 Traceroute 是两种基于 ICMP 协议的路 由信息探测工具。Ping 利用 ICMP 协议的 ECHO REPLY 消息来检测主机是否可达,从 而判断目标主机的连通性;Traceroute 则是利用 IP 协议中的 TTL 字段以及 ICMP TIME-6- 兰州交通大学专业学位硕士学位论文OUT 和 PORT UNREACHABLE 消息来发现到目的主机的路由信息, 确定数据包传递的 路径。在基于 ICMP 拓扑发现的具体实现一般是这样的:首先利用 Traceroute 操作得到 目的 IP 的路径,把此路径经过的设备信息、IP 地址、网段信息记录下来,形成详细的 网络路径表;然后利用 Ping 命令依次检测每一个网段地址区间中的每一个 IP 地址,以 便确定每一个区间的所有活动主机,并把得到的结果记录下来展现在拓扑结构上。再结 合路径表便得到了包含路径信息及各子网活动主机信息的网络拓扑图。 使用 ICMP 协议的拓扑发现可以检测到网络设备的活动情况,且实现较为简单。但 由于它在子网的发现过程中要对整个子网范围的 IP 逐一进行 Ping 测试,费时较长并且 增加了网络的负担,同时无法得到有关网络接口的详细信息。另外一方面,防火墙技术 的广泛应用使得很多情况下 ICMP 信息无法顺利通过网络设备到达主机。 所以这种方法 仅仅适合于小范围,如子网内且防火墙关闭对 ICMP 限制的拓扑发现,不适合大范围的 局域网络拓扑发现。 2.1.3 基于OSPF路由协议 OSPF 开放最短路径优先是一个基于链路状态的协议。采用 OSPF 的路由器彼此交 换并保存整个网络的链路信息,从而掌握全网的拓扑结构,独立计算路由。它们采用的 策略是每个路由器主动地测试与其相邻站路由器相连链路的状态, 并将这些信息发送给 它的其他邻站,而邻站将这些信息在系统中传播出去。每个路由器接收这些链路状态信 息,并建立起完整的路由表。 大型网络大都可以划分为三层,最上层是骨干网络,中间层是自治系统,第三层便 是从各个自治系统划分的很多不同的区域。在自治系统中使用的协议主要是 OSPF 协 议。 大型网络的骨干网络会被分解成为多个自治系统。自治系统是按照网络管理、地理 区域或者是行政上的不同被划分成不同的组的路由器的集合。一个自治系统,必须由一 个管理机构来统一分配编号,进行统一地登记。通常地,一个自治系统拥有相同的路由 选择策略,因为它们是在相同的技术主管部门下运行的一组路由器构成的。 在基于 OSPF 协议的拓扑发现算法中,可以通过间隔一定时间导出路由器配置文 件,也可以定期导出 OSPF 的链路状态数据库来实现网络拓扑结构的发现,还可以使用 协议抓包器,比如 Sniffer 抓取所有 IP 数据包,从中分析出拓扑结构的改变和变化。直 接获得 OSPF 的数据库是更加快捷的方法,因为 OSPF 为每个路由器都保存了一份网络 链路状态数据库。首先在此数据库的基础上提取原始网络拓扑信息,再通过实时获得更 新的链接状态公告 LSA 来进一步同步改变了的网络拓扑信息。 这类算法具有快速、高效和准确的特点。但该算法正常运行的前提是目的网络内的 路由器都必须支持 OSPF 协议;另一方面,基于 OSPF 的算法实现难度较大。因为算法-7- 兰州交通大学专业学位硕士学位论文必须对 OSPF 协议进行编程实现,包括实现协议的各种命令原语,构造组装和解析协议 数据单元。 2.1.4 基于DNS Internet 上连接到一个 IP 网络的所有计算机都至少有一个唯一的 IP 地址。因为记 住所有使用机器的 IP 地址是很困难的,域名系统 (Domain Name System, DNS)应运 而生。DNS 主要用于建立域名和 IP 地址的对应关系,此外它也能保留有关计算机的一 些其他信息,如使用的硬件和操作系统、邮件交换器及其他一些信息。因此 DNS 是一 个规模非常大的分布式数据库,在这个数据库中保存有服务器、网络设备、用户计算机 等信息。所有的因特网系统和服务器主机都在这个数据库中注册了一个 DNS 域名,利 用这些域名可以很便利的访问主机地址和邮件系统。DNS 还有一项反向查找功能,可 以从 IP 地址查找到所对应的域名。 域名服务器最重要的功能是所谓的“正向查找”功能,它能提供“名字到地址”的 转换。由于直接使用出主机的 IP 地址是很不方便的,因此采用字符文本形式的名字比 数字方式表示的 IP 地址更容易记忆。通常域名系统都设计了“最优域名”功能,即让 域名服务器选择“最佳地址”返回到客户端。如果目标主机在不同的线路上,例如电信 和网通有好几个接口, 那么相应地它就有好几个地址。 如果客户端请求访问这样的主机, 域名服务器就会从该主机的所有地址中寻找一个最优地址,一般是传输性能最佳、速度 最快的一个地址。 DNS 域名系统采用了一种层次结构,相同后缀的主机或网络区域往往意味着他们 在逻辑上处于同一层次。借助于 DNS 协议的区域传送能力,我们能将具有相同域后缀 的主机划分到同一区域, 但是并不意味着这里的每台计算机在物理上都处于同一个网络 区域。另外我们还可以使用反向查找技术获取主机的域名信息,从而确定主机和网络的 层次结构。 利用 DNS 技术发现的优点是可以快速便捷地发现许多主机和设备,我们可以用这 些节点作为其他算法的起点。当然,这种方法也存在许多缺陷:由于网络中设备的更换 等原因,导致存在于数据库中的设备可能不再有效;有些新加入的设备虽然有效,但是 却没有分配 DNS 域名,在数据库中没有登记。这些原因使得存储于 DNS 数据库中的信 息可能并不一致。 另外一个缺陷是我们不能完全依赖存储在数据库中的域名节点其他信 息,因为这些信息并没有一个统一的、可以广泛接受的标准格式来进行规范,所以不能 提取出网络中有关设备和子网的角色信息。 当然我们也无法取出有关提供给用户的服务 质量或网络性能的其他信息。 尽管缺陷很多,但是基于 DNS 的拓扑仍然是一项非常重要的技术。我们可以用它 查到一个网络中的设备名,可以检查哪些设备是可用的,并结合其他的技术方式来发现-8- 兰州交通大学专业学位硕士学位论文有关网络结构的信息。 2.1.5 基于SNMP协议的网络拓扑发现技术 简单网络管理协议(Simple Network Management Protocol,SNMP)是目前计算机 网络中应用最为普遍的网络管理协议。 SNMP 的一个最突出的指导思想就是要求尽可能 实现简单。SNMP 的基本功能包括三个方面:配置网络设备、监视网络性能、检测分析 网络差错。在网络正常运行时,SNMP 可以对网络的运行数据进行统计,对参数进行配 置,对性能进行测试。而一旦网络出现故障,可对网络进行差错检测,找出故障原因恢 复正常功能。 基于 SNMP 协议的网络拓扑发现的主要技术是:利用 SNMP 可以从网络设备中提 取出相应设备的 MIB 信息,比如路由表、地址转发表信息等。通过对 MIB 中的设备网 络状况信息进行分析,就可以得到网络的拓扑连接状况。 基 于 SNMP 的 网 络 层 拓 扑 发 现 的 关 键 技 术 是 对 MIB 中 定 义 的 路 由 信 息 表 ipRoutetable 进行分析。路由信息表是在路由器等主要网络设备中,保存的用于路由选 择功能的所必须使用的表。 路由表的基本结构中的基本表项目包括:目的网络地址 ipRouteDest,它表示当前 当前路由器能转发到的数据包的目标地址或地址范围;ipRouteIfIndex 指示了与目的网 络地址对应的端口索引号; 目标网络的子网掩码 ipRouteMask;该路由项的下一跳 IP 地 址 ipRouteNextHop , 表 示 目 的 网 段 将 向 哪 个 地 址 转 发 。 路 由 表 中 的 下 一 跳 地 址 ipRouteNextHop 指示的一般是具有路由功能的网络设备, 所以从网络管理工作站的默认 网关,一般也是路由器开始,不断读取路由设备的路由表中的下一跳信息,由近向远发 现网络中的所有路由器或其它具有路由功能的设备的连接关系。从 ipRouteType 的值就 可以判断该路由设备得那些接口连接了哪些子网。同时通过路由表的 ipRouteIfIndex 项 目就可以发现路由端口,从而确定路由端口和子网的连接关系。 综上所述就可以得到网络中所有子网和路由器的集合,获得网络层的拓扑关系。 这种方法的优点是发现速度快,过程和算法简单并且在大多数网络环境里能够通 用。但缺点是:一个路由器往往有多个接口,每个接口有不同的 IP 地址。这种情况导 致路由器和 IP 地址不是一一对应的关系,所以给出的拓扑结构是一种逻辑上的连接关 系,不能直观反映网络拓扑的物理连接情况。所以这个方法法只适合于主干网络拓扑的 发现,反映主干网络的情况,如果要发现子网内的结构还需我们后面将要介绍的链路层 拓扑发现方法。 2.1.6 网络层拓扑发现技术小结 通过对上述常用网络层拓扑发现技术的分析和研究, 不难看出每种技术都有它的优 点和不足。由于网络的连接状况在不同的情形下有很大的差异,所以目前业界并未形成-9- 兰州交通大学专业学位硕士学位论文统一的方法,每种技术有其适用范围。要想有效地发现网络中的各种网络设备,必须结 合实际情况选择合适的技术,运用多种技术相结合的办法共同实现我们的目标。 鉴于本系统主要针对校园网网络管理的实现,网络结构的复杂性不是特别高。通过 对各种方法的分析对比,本系统将主要采用成熟、实现较简单的基于 SNMP 协议的技 术实现网络层拓扑发现。2.2 链路层拓扑发现技术2.2.1 基于地址转发表 基于地址转发表的链路层网络拓扑发现方法, 通过获得交换机的地址转发表来推算 交换机及其与主机、路由器之间的连接关系。 有三种主要算法用于基于地址转发表的发现技术: Yuri 算法通过查询网络节点设备 的管理信息库,在一定范围内解决了 VLAN 内子网的物理拓扑连接的问题;Bruce 算法 主要解决出现哑设备, HUB 或其它不支持 SNMP 的二层设备的情况信息如何判定的 如 特殊拓扑发现问题;郑海、张国清等提出了一种方法,在交换机端口地址转换表中设置 一个特殊标志来区分交换机的上行端口和下行端口。并且给出了一组判定定理,用来判 定上行端口和下行端口是否直连, 解决了交换机地址转发表记录不完整时如何确定拓扑 关系的问题。 交换机的地址转发表具有不完整性和动态性, 因为交换机的地址转发表是在网络运 行过程中通过自动学习方式动态获取的,且地址转发表中的每条记录若超过一定时间, 交换机会自动将其丢弃。为了保证每个交换机的地址转发表的完整性和准确性,以便推 导出正确的连接关系的,拓扑发现算法需要对目标网络注入附加流量。比如对每个交换 机作一次 Ping 操作,使得地址转发表中的记录完整、有效。这种方式会在一定程度上 增加网络的负荷,但一般情况下影响不大。 此方法实现原理简单,适用范围较广,且有较成熟的应用,缺点是在逻辑判断上运 算量较大,并且且要求交换机支持 SNMP。本系统将主要采用这种方法实现链路层拓扑 发现。 2.2.2 基于生成树协议的方法 生成树协议(Spanning Tree Protocol,STP)是一个二层的链路管理协议,它的实现是 基于工 EEE802.ld 的一种工业标准算法,能在提供链路冗余的同时防止网络产生环路, 因为环路将使网络产生广播风暴,从而产生故障。生成树算法的主要思想是交换机网络 运行时自动构成生成树,当产生生成树的时候,首先选择根交换机,所谓的根交换机就 是数据传输开销最小,带有最小标志的交换机。在子网内的各台交换机上配置了 STP 生成树协议之后,交换机之间通过交换网桥协议数据单元 BPDU 进行协商,这些数据- 10 - 兰州交通大学专业学位硕士学位论文单元包含了交换机的配置信息。 协商的结果是为网络中数据帧的传递确定了最优的唯一 的一条通道,并且自动阻塞了冗余连接链路端口。这样就形成了唯一一的一棵生成树, 同时也唯一确定该网络交换机之间的连接关系。 该算法的缺点是很多设备对 STP 的支持不统一,因而对于采用不同厂商的网络设 备组建的异构网络来说实现拓扑发现具有很大的困难。 2.2.3 基于LLDP 链路层发现协议(Link Layer Discovery Protocol,LLDP)是一个厂商无关的二层协 议,允许网络设备在本地子网中发送公告,通告自己的设备标识和性能。2005 年 5 月, 此协议已经被认可为 IEEE802.1AB 标准。在此之前一些供应商私有的协议,如 Cisco 公司的思科发现协议 CDP 起到类似的作用。LLDP 被 IEEE 认可之后,它统一和替代了 这些协议的功能。LLDP 是专们为发现邻近网络设备而设计的,一方面它为以太网设备 如网桥、交换机等提供了一种有效的方法,使它们可以向邻近的网络节点公告它自身的 存在;另一方面对各个邻近设备的公告信息,设备本身会自动进行收集。这些信息被存 储在 SNMP MIB 管理信息库中,网络管理系统利用 SNMP 协议接口能方便地获取这些 信息,对这些信息进行分析后能够准确地发现物理网络的拓扑结构。 LLDP 的基本工作原理如图 2.1 所示:图 2.1 LLDP 工作原理LLDP 定义了一个传输公告的协议、一个通用公告信息集合和一种用来存储及处理 所收到的公告信息的方法。网络设备将 LLDP 公告信息放在一个局域网数据包内传输, 网络设备在收到邻近设备发出的 LLDP 消息后,将它存储在 MIB 库中,并且保持在一 定的时限内有效。- 11 - 兰州交通大学专业学位硕士学位论文支持 LLDP 的相邻网络设备之间相互公告自身的系统描述信息, 这些信息被存储在 SNMP MIB 信息库中,网络管理系统可以运用 SNMP 协议方便地获取这些信息,网络 管理系统能利用这些信息够精确地发现和构造物理网络拓扑结构。 拓扑发现算法是从被选择作为种子的某个设备开始,通过读取种子节点的 MIB 获 取 LLDP 信息,从中获得种子节点的所有邻居节点信息,并把他们加入到待扫描的节点 队列中。 然后依次从该队列中取出每一个节点, 作类似处理, 并对处理完成的节点做 “已 经处理”标志。按照以上步骤,便可以发现当前网络中所有的 LLDP 节点。 该方法是链路层拓扑发现的新技术, 有可能是将来链路层拓扑发现技术的主要发展 方向。其缺点 LLDP 技术较新,目前网络中已有的大多数交换机不支持 LLDP,并且它 也要求设备支持 SNMP。 2.2.4 基于端口流量 基于端口流量的技术是基于这样一种思想: 直连端口的流量在理想的情况下应该相 等。算法根据这一原则,比较所有端口的流量,在误差范围内将流量最接近的端口确定 为直连端口。 此算法需要对端口流量进行进行反复监测,因此算法所需数据流量及运算量都很 大,尤其对于大型繁忙的网络,就会加剧网络的负担,且耗时很大。端口流量算法是一 个概率算法,其准确性与快速难以兼顾。此算法也要求网络设备支持 SNMP,否则就不 能进行。 理想的流量关系只能在理想情况下出现。在实际网络中,由于应用层的差异,以及 丢包及误差等原因,这种理想的状况很少出现,所以往往只能以概率的形式来统计实测 的流量。数据流量的关系并不能依靠直接读取每个接口的流入、流出字节数来说明,因 为不同的设备启动的时间不同,这些计数器的起始时间也并不相同。实际的做法是在某 一时刻,同时读取所有设备各个接口的流量总数;间隙一段时间后,再同时读取各个接 口的流量总数。计算两次读数的流量差值,再除以两次读数的时间间隔,就是在这段时 间中各个端口的流量。一次测量过程往往不能代表端口的真实情况,所以端口流量往往 需要经过多次重复测量取统计平均值,提高准确性。此算法局限性较大,在前期需要进 行大量的测量准备,而且不适合多子网和虚拟局域网的情况。 2.2.5 链路层拓扑发现技术小结 通过上述几种链路层拓扑发现方法的分析,我们发现每种方法都有其优缺点,而基 于地址转发表的方法实现原理简单,适用范围较广,算法理论和实际应用都较成熟,而 且校园网的主干交换机都支持 SNMP。 本系统将主要采用基于地址转发表的技术实现链 路层拓扑发现。- 12 - 兰州交通大学专业学位硕士学位论文2.3 SNMP协议简介简单网络管理协议是由互联网工程任务组(Internet Engineering Task Force,IETF) 定义的一套用于网络管理工作的协议。该协议起源于简单网关监视协议。使用 SNMP 技术,一个网管理工作站可以通过网络对所有支持这种协议的网络设备进行远程管理, 包括监视设备状况、测试网络状态、修改设备配置、接收网络事件通告等。 SNMP 在 1998 年 8 月首次定义,很快就在 RFC1157 中达到正式标准。SNMP 实质 上在是 NMS 和代理之间建立了异步请求和响应机制。利用 SNMP 协议,对网络设备状 态的管理和监视主要通过对代理网管信息库 MIB 中相应对象的值查询和设置来完成。 设备代理也会发出一些陷阱来通知 NMS 管理工作站设备发生了什么事情。 2.3.1 SNMP基本原理 代理/管理站模型。 通过管理工作站与 SNMP 采用了 Client/Server 模型的特殊形式: SNMP 代理间的交互来完成对网络的管理与维护工作。每个 SNMP 设备代理能够回应 SNMP 管理工作站关于 MIB 定义信息的各种查询。图 2.2 是 SNMP 协议的实现模型。 SNMP管理站 网络管理程序 通 信 原 语 SNMP管理模块 UDP IP 底层网络接口 SNMP消息 SNMP管理代理 被管理对象 管理信息库 通 信 原 语 SNMP代理 UDP IP 底层网络接口应用程序 管理对象通信网络图 2.2 SNMP 管理模型SNMP 代理和管理站通过 SNMP 协议中的标准消息进行通信,每个消息都是一个- 13 - 兰州交通大学专业学位硕士学位论文单独的数据报。SNMP 使用 UDP 作为第四层传输协议,进行消息的发送和接收操作。 SNMP 消息报文包含两个部分: SNMP 报头和协议数据单元 PDU。 数据报结构如图 2.3。版本标识符 团体名 数据报结构图 2.3 SNMP 数据报结构版本识别符:确保 SNMP 代理使用相同版本的协议,每个 SNMP 代理都直接抛弃 与自己协议版本不同的数据报。 团体名:用于 SNMP 代理对 SNMP 管理站进行认证;如果网络配置要求验证时, SNMP 代理将对团体名和管理站的 IP 地址进行认证,如果失败,SNMP 代理将向管理 站发送一个认证失败的 Trap 消息。 协议数据单元:指明了 SNMP 的消息类型及其相关参数。 2.3.2 管理信息库MIB IETF 规定的管理信息库 MIB 中定义了可访问的网络设备及其属性,由对象识别符 唯一指定。MIB 是一个树形结构,SNMP 协议消息通过遍历 MIB 树形目录中的节点来 访问网络中的设备。图 2.4 给出了 SNMP 可访问网络设备的对象识别树结构。 2.3.3 SNMP的五种消息类型 SNMP 中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、 Set-Request、Trap。如图 2.5 所示: (1) Get-Request 、Get-Next-Request 与 Get-Response SNMP 管理站用 Get-Request 消息从拥有 SNMP 代理的网络设备中请求设备信息, 而 SNMP 代理则用 Get-Response 消息响应。Get-Next-Request 用于和 Get-Request 组合 起来查询特定的表对象中的下一列元素。如: 首先通过下面的访问消息原语获得所要查询的设备的接口数: {iso.org(3).dod(6).internet(1).mgmt(2).mib(1).interfaces(2).ifNumber(2)} 然后再通过下面的原语,进行表信息的查询(其中第一次用 Get-Request 消息,第 二次用 Get-Next-Request 消息) : {iso.org(3).dod(6).internet(1).mgmt(2).mib(1).interfaces(2).ifTable(2)} (2) Set-Request SNMP 管理站用 Set-Request 可以对网络设备进行配置和运行参数的修改,包括设 备名、设备性能、删除设备或使某一个设备属性有效、无效等。- 14 - 兰州交通大学专业学位硕士学位论文RootCcitt(0)Iso(1)Joint-iso-ccitt(3) Member body(2) Identified organization(3)Standard(0)Registration authority(1)…… Internet(1) 1.3.6.1Dod(6)Directory(1)Mgmt(2)Experimental(3)Private(4)Security(5)Snmpv2(6)Mib-2(1)1.3.6.1.2.1Enterprises(1) ……1.3.6.1.4.1System(1) ……Interface(2) ……At(3) ……Ip(4) ……Icmp(5) ……Tcp(6) ……Udp(7) ……Egp(8) …… ……图 2.4 管理信息库的对象树结构图 2.5 SNMP 的五种消息类型- 15 - 兰州交通大学专业学位硕士学位论文(3)Trap SNMP 代理使用 Trap 向 SNMP 管理站发送非请求消息,一般用于报告代理设备上 某一事件的发生。- 16 - 兰州交通大学专业学位硕士学位论文3 拓扑发现算法本章将对系统中将要应用的几种算法进行描述。 网络拓扑发现主要涉及到网络体系 结构的网络层和数据链路层,根据各个层次的特点,我们可以利用各种协议设计不同的 算法,根据 2.1 节中提到的网络拓扑发现常用技术,相继有人提出不同算法。各种算法 的性能差距很大,各有所长。 判断一种拓扑发现算法性能的具体指标主要是:有效性、准确性、通用性、负荷和 发现速度。 详细地来说就是在不同的网络环境中能够准确有效的发现网络中的设备和链 路,并尽可能的降低算法的附加负荷,提高发现的效率和速度。 网络拓扑发现算法起初主要集中在第三层网络拓扑,近年来,也出现了一些通用的 基于第二层的网络拓扑发现算法。不管是基于哪一层进行拓扑发现,最重要的是能够获 取准确有用的拓扑信息。 校园网络中主要网络设备都支持 SNMP 协议,这样我们可以采用基于 SNMP 的算 法,通过 SNMP 协议从网络设备中提取 MIB 信息,通过分析 MIB 中包含拓扑信息得到 校园网络拓扑连接情况。 下面介绍本系统中将要用到的几种拓扑发现算法: (1) 网络层拓扑发现算法 (2) 链路层拓扑发现算法 (3) 主机拓扑信息的发现3.1 网络层拓扑发现算法网络层拓扑发现的主要任务是发现网络层节点设备之间的连接关系, 主要是指路由 器与路由器、路由器与子网之间的连接关系,这里所说的的路由器当然也包括三层交换 机。所生成的拓扑图只表示网络的主干拓扑,只包括路由器、三层交换机及子网几种节 点类型。 目前在网络层拓扑发现领域,没有统一的标准和规范,有关网络拓扑发现的文档比 较缺乏。因此,目前很多发现方法都只能在一定的条件下、基于一定的前提,完成一定 范围内的拓扑发现。另外,网络拓扑结构会涉及网络安全方面的问题,因为拓扑结构是 一种重要的网络信息。例如,探测数据包和请求报文被防火墙过滤,或者路径信息因为 不具备访问权限而无法获取等。所有这些都在一定程度上影响了网络拓扑的发现,使得 拓扑发现算法不能获取整个网络的信息。 路由器的一个活动端口可能的连接情况有两种:连接到其他的路由器,或者连接到 一个子网。网络内数据包的传递一般是这样的:当一个子网内的某一个主机向其他子网 发送数据时,数据包首先到达本子网的缺省路由器,然后缺省路由器根据数据包中的目- 17 - 兰州交通大学专业学位硕士学位论文的地址和自身路由表中的相关信息决定转发的路径, 可能是直连网段也可能是下一跳网 关。数据包到达下一个路由器后再进行类似的处理。继续这个过程,数据包最后将被传 输到达目的主机。 从上述路由器的基本工作原理可以得知,无论采用那一种路由协议,网络中的路由 器的路由表信息中的都明确知道指示了其相邻的路由器即下一跳地址。 根据这个信息可 以发现邻近路由器的连接,继而发现这个网络层逻辑结构。这就是网络层拓扑发现算法 的基本理论基础。 图 3.1 是网络拓扑结构的一个典型模型。其中,各子网都连接到路由器的一个端口 上,通过各自的路由器与其他子网通信。路由器的一个端口可以同其他路由器相连,也 可以连接到一个子网。当子网内的某一主机向别的子网发起通信连接时,数据包首先到 达本子网的缺省路由器。缺省路由器获取数据包中的目的地址,根据其路由表确定该目 的地址是否在与自己直连的子网中。如果是,则把数据包直接发往目的子网,否则转发 给路由表中指定的下一个路由器, 下一个路由器再进行类似处理。 经过路由器依次转发, 数据包将最终到达目的地。可见,通过分析整个网络所有路由器上的路由表,就可以知 道目标网络的网络层拓扑结构。图 3.1 典型网络拓扑结构模型下面将详细描述一种基于 SNMP 协议的网络层拓扑发现算法。- 18 - 兰州交通大学专业学位硕士学位论文3.1.1 算法的理论基础 使用基于 SNMP 协议的拓扑发现算法的理论基础就是:从设备的 MIB 库中提取出 与网络层拓扑发现相关的信息,比如接口地址表和路由转发表,然后将这些信息安装一 定的算法归纳、整理,从而得出网络的逻辑拓扑结构。 本系统的网络层拓扑发现程序为了具有通用性,选择 MIB-II 作为拓扑发现的基本 管理信息库。MIB-II(RFC-1213)是标准的 SNMP MIB,所有的路由器都支持该标准。 MIB-II 由很多不同的部分组成,本节的主干拓扑发现算法用到的组包括:System 组, Interfaces 组和 IP 组。在算法中需要使用的 MIB-II 对象的描述如下: (1)system 组(1.3.6.1.2.1.1) 算法中用到的 System 组的对象有 sysObjeetID、sysLocation 和 sysService,各对象 的详细说明如表 3.1 所示。表 3.1 System 组对象说明 对象名称 sysObjectID sysLocation sysService 类型 OBJECT IDENTIFIER OBJECT IDENTIFIER INTEGER 存取权限 read only read only read only 说明 设备出厂 ID 位置信息 设备服务层次(2)interfaces 组(1.3.6.1.2.1.2) 算法中用到了 interfaces 组的 ifNumber 对象,类型为 INTERGER,表示系统中的网 络接口数量。 (3)IP 组(1.3.6.1.2.1.3) 算法中用到的 IP 组的对象有三个:简单对象 ipFowrarding 和两个表对象,接口地 址表 ipAddTable、路由转发表 ipRouteTable。简单对象 ipFowrarding 用来表示设备是否 具有转发功能,它的值只能为 1 或 2,为 1 代表系统开启了路由功能,正在转发维护数 据包,2 则代表不在转发。表对象 ipAddTable 和 ipRouteTable 的对象详细信息如表 3.2 和表 3.3 所示。 ① ipAddrTable 接口地址表 接口地址表中包含了对路由端口的 IP 地址的相关信息的描述,它表现了路由设备 的各个端口所对应的端口号、IP 地址以及所对应的子网掩码的对应关系。 ② ipRouterTable 路由转发表 路由转发表是对路由器的路由信息的相关描述, 它在拓扑发现算法中起着最重要的 作用。 它提供了设备的路由信息, 为整个拓扑发现算法奠定了基础。 其中 ipRouteNextHop 表示下一条地址,有可能就是邻近路由器的接口地址。ipRouteType 的值如果为 invaid, 说明这是一个无效的路由;如果是 direct,说明此接口连接的是子网;如果是 indirect,- 19 - 兰州交通大学专业学位硕士学位论文说明接口连接的是路由设备。表 3.2 ipAddTable 组对象信息 对象名称 ipAdEntAddr inAdEntifIndex ipAdEntNetMask 类型 IpAddress OBJECT IDENTIFIER INTEGER 存取权限 read only read only read only 说明 端口对应的 IP 地址 端口号 子网掩码表 3.3 ipRouteTable 组对象信息 对象名称 ipRouteDest ipRouteifIndex ipRouteNextHop ipRouteType 类型 INTEGER INTEGER ipAddress INTEGER 存取权限 read-Write read-Write read-Write read-Write 说明 目的地址 路由项目端口号 下一跳地址 路由类型本系统网络层拓扑发现采用了由近及远、从上到下的分层发现策略来实现。如图 3.2 所示:首先,从指定的网关路由器 R1 开始搜索,找出与之相连的网络层的连接关 系。保存与指定网关路由器相关连接的其他各个网关路由器 R2,R3,及它们之间的连 接关系。然后,搜索与所有单个路由器相连接的其他路由器和各个子网信息。这样便完 成了网络层拓扑结构的发现。交换机 S1 子网1路由器 R1 R2 S2 子网2S3 子网3R3R3图 3.2 网络拓扑分层发现策略- 20 - 兰州交通大学专业学位硕士学位论文3.1.2 算法的数据结构 将网络层拓扑发现算法要用到的数据结构用 Java 语言描述如下: (1) 路由器队列 Vector&Router& routerV (2) 路由器连接向量队列 Vector&RouterConnect& routerConnectV //用来存储路由器之间的连接关系 (3) 路由器信息 class Router{ String routerID; String String Vector routerN flagA addrV //路由器标识 ID //路由器名字 //路由器某标识 IP 地址 //路由器所有 IP 地址集合 //用来存储要访问的路由器队列Vector subnetV //路由器关联子网集合 boolean processF //处理标志 true-已处理;false-未处理 } (4)子网信息 class Subnet{ int subnetF //子网标识数字 //子网 IP 地址 //子网内主机集合 String subnetA Vecter hostV } (5)主机信息 class Host{ String hostID; int hostT //主机标识字符串 //主机名字 //主机类型:0-终端主机;1-交换机 //连接上一级设备的接口索引值 //主机 IP 地址掩码 S int parentIfI } (6)路由器连接信息 class RouterConnect{ String localRID; //本地路由器标识- 21 -String subnetM //子网 IP 地址掩码String hostAddrM 兰州交通大学专业学位硕士学位论文String localRA String peerRID; } 3.1.3 算法流程图 String peerRA//本地路由器 IP 地址 //连接到的路由器 IP 地址//连接到的路由器标识这里给出网络层拓扑发现的算法流程如图 3.3。 3.1.4 算法的伪代码 初始化网关路由器集合 routerV 初始化路由器连接集合 routerConnectV 获取指定起始网关的标识和指定的 IP 地址,实例化一个 Rouer 类对象,设定其 processFlag 值为 false,将该对象放入 RouterVector 中; while(RouterVector 中还有 processFlag 为 false 的路由器){ 从 RouterVector 中读取一个 Router 对象,记为 currentR 获取 currentRouter 的 ipAddrTable 信息,填入其 addrVector 中; 获取 currentRouter 的 ipRouterTable 信息,除去其中 ipRouteType 为“无效”的条目; for(ipRouterTable 表中各项路由记录){ if(路由记录为直连网段){ 以 ipRouteDest 及 ipRouteMask 等实例化一个 Subnet 类对象; 将该对象无重复地放入 currentRouter 的 subnetVector 中; } else{ 判断当前条目的 ipRouteNextHop 不同于 currentRouter 的所有 IP 地址; 获取 ipRouterNextHop 对应网关路由器的 RouterID; 以 ipRouteNextHop 和 currentRouter 的 标 识 和 IP 地 址 值 实 例 化 一 个 RouterConnect 类对象 routerC If(routerConn 没有在 ConnectVector 中存在) 将 routerConn 填入 ConnectVector 中; ipRouteNextHop 等信息实例化一个 Router 类对象 aR 设置 aRouter 的 processFlag 为 false,将其放入 RouterVector 中; } } 设置 currentRouter 标志为“已处理”; }- 22 - 兰州交通大学专业学位硕士学位论文图 3.3 网络层拓扑发现算法流程- 23 - 兰州交通大学专业学位硕士学位论文算法中所表示的网络连接关系是一种无向拓扑,即:在进行重复判断时首先分别判 断连接的两端有没有相同的对象实例, 然后对调其中一个连接的本地和对面信息后再进 行比较,若两次判断的结果都不同,则认为对应的两个连接是不同的。 算法完成后,结果信息保存在全局变量 routerVector 和 routerConnectVector 中。3.2 链路层拓扑发现算法链路层拓扑发现能够发现网络实体的实际物理连接(对应第二层设备的连接),二层 网络拓扑发现算法的核心步骤是发现交换机与交换机之间的连接关系。 其他任务还包括 发现子网网络中交换机与路由器和主机之间的连接关系。 3.2.1 算法中涉及的MIB 在以太网络发展的初期,第二层互连设备主要是网桥,具有地址学习能力,能够自 动将不同网段的数据帧按目的地址进行转发。后来出现了以太网交换机,它的工作原理 跟网桥实质上是一样的, 相当于多个网桥集中到一个设备中, 提供了多个端口。 交换机、 网桥为了完成数据帧的转发工作,各自维护自己的生成树状态表和 MAC 地址转发表, 并且保存在设备内部的 Bridge MIB 库中。 文中所讨论的物理连接拓扑发现的过程,也是通过使用 SNMP 协议,查询专门的 网桥 MIB 信息,即所谓的 BridgeMIB,并对信息进行分析。基于 SNMP 协议的链路层 拓扑发现方法的优点在于发现信息全面,发现速度快、效率高。它的局限性在于要被发 现的设备必须支持 SNMP 协议,但在校园网络环境中所使用的设备基本能满足这一要 求 , 所 以 这 种 方 式 比 较 适 合 校 园 网 拓 扑 的 发 现 。 在 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 的端口。 交换机地址转发表 dot1dTpFdbAddress 如表 3.4 所示: 3.2.2 算法的理论基础 贝尔实验室的 Yuri Breitbart 给出了基本算法。算法理论基础和描述如下: 定义 1:令交换机,路由器组成的二层主干结构为图G,G中第i台交换机为S i ,其 第j个端口为S ij 。 定义 2:令任意端口S ij ,D ij 表示交换机S i 的地址转发表中通过端口S ij 收到的数据帧 中源MAC地址集合。 定义 3:令任意端口S ij ,L ij 表示交换机S i 的地址转发表中通过端口S ij 收到的数据帧 的源MAC地址为交换机的集合。 定义 4:若一台交换机S i 其端口S ij 的L ij 中未出现其它交换机的MAC地址,则称端口- 24 - 兰州交通大学专业学位硕士学位论文S ij 为叶端口。表 3.4 交换机地址转发表的部分对象 对象名称 dot1dTpFdbAddress dot1dTpFdbPort dot1dTpFdbStatus 类型 MACADDRESS INTEGER INTEGER 描述信息 设备最近转发的 MAC 地址 该 MAC 地址所对应的端口号 记录状态定义 5:端口S ij 是完全的,是指在给定子网中任何设备D发出的数据帧可以通过端 口S ij 到达S i ,则D的MAC地址必出现在L ij 中。 引理 1:如果L ij ∪L kl =A(A指子网内所有交换机的合集)且L ij ∩L kl =∮(∮表示 空集)则端口S ij 与端口S kl 直接连接。 引理 2:若路由器或主机与交换机S i 的S ij 直接相连,当且仅当S ij 是叶端口,且L ij 中包含路由器或主机的MAC地址。 此算法在实际应用中存在一个问题,它要求每台交换机的地址转发表必须完整(每 台交换机必须知道其他交换机所连接的端口) ,但这在现实的网络运行状态中往往很难 实现。 为此在该算法的基础上采取改进措施, 改进算法的出发点在于降低算法对地址转发 表的完备性的要求,并且通过简单而有效的手段满足这种降低后的要求。描述如下: 定义l:令交换机,路由器组成的二层主干结构中第i台交换机为S i ,其第j个端口为 S ij 。 定义 2:标志节点:当运行算法的主机在发现的网络中时,将此主机确定为标志节 点,若不在,则将目标子网中转发运行算法主机发出的数据报文的路由器定义为标志节 点(tracert 命令的到的最近的路由器) 。 定义 3:所有可以通过 SNMP 访问的交换机集合定义为 switchVector。 定义 4:令任意端口S ij ,L ij 表示交换机S i 的地址转发表中通过端口S ij 收到的数据帧 的源MAC地址为交换机的集合。 定义 5:上行端口:指端口对应的地址转发表中出现标志节点 MAC 地址的端口。 定义 6:下行端口:指端口对应的地址转发表中没有出现标志节点 MAC 地址,并 且出现其他交换机 MAC 地址的端口。 定义 7:交换机S i 的下行端口的集合为P i 。 推论 1:对集合switchVector中所有的交换机进行了ping操作后,S i 的L ij 中必然包含 S ij 下所有连接的交换机的MAC地址,所有交换机的上行端口必然包含标志主机的MAC 地址。 推论 2:L ij 中的根节点L k 必然包含L ij 中其他所有交换机的MAC地址,否则在S ij 下- 25 - 兰州交通大学专业学位硕士学位论文必然连接至少一个不能够访问的网络设备,即通常所说的哑设备。 3.2.3 算法的数据结构 (1) 交换机集合Vector&Switch& switchV(2) 交换机信息 public class Switch{ public String ipA public String macA } (3) 交换机端口发现信息 SwitchConnTemp 用来存放三元组(switchA,switchB,switchportB),表示在 switchB 的端口 switchportB 上发现了 switchA 的 MAC 地址 class SwitchConnTemp{ String switchA; String switchB; String switchportB; } (4) 交换机端口发现信息的所有三元组存放在集合 swConnTemp 中Vector&SwitchConnTemp& swConnT(5) 交换机连接信息 SwitchConn 用来存放四元组(switchA,switchportA,switchB,switchportB),表示 交换机 switchA 的端口 switchportA 与交换机 switchB 的端口 switchportB 相互连接。 public class SwitchConn{ String switchA; String switchportA; String switchB; String switchportB; } (6) 交换机连接信息的所有四元组存放在集合 swConnVector 中Vector& SwitchConn& swConnV- 26 - 兰州交通大学专业学位硕士学位论文3.2.4 算法流程图 算法主要分成两步: 第一步收集子网内所有交换机端口发现信息,流程如下: (1) 获取网络所有路由器、交换机列表,确定可以通过 SNMP 读取 MIB 库信息的 交换机集合 switchVector, 并且确定其 IP 地址与 MAC 地址的对应关系, 以及标志节点。 (2) 对集合 switchVector 中所有设备进行 ping 操作。 (3) 读取集合 switchVector 中所有设备和标志节点的 MAC 地址是否在其他所有交 换机的端口上出现,得到三元组(switchA,switchB,switchportB) ,表示在 switchB 的 端口 switchportB 上发现了 switchA 的 MAC 地址。将三元组存放在集合 swConnTemp 中。 第二步根据得到的三元组(switchA,switchB,switchportB)集合,推导出所有设 备端口之间的连接关系,得到交换机端口连接四元组(switchA,switchportA,switchB, switchportB) ,并存放在集合 swConnVector 中,具体流程见图 3.4 这样就得到了子网内交换机的链接关系。 3.2.5 算法的伪代码 根据主干拓扑发现的结果构造子网集合 subnetV for(子网集合 subnetVector 中的每一个子网){ 初始化交换机集合 switchV 确定子网内可以通过 SNMP 读取的交换机集合到 switchVector 中; 确定标志节点到 rootD Ping 集合 switchVector 中的每个交换机 for(switchVector 中的每个交换机 switchA){ If(switchA 的 MAC 出现在 switchB 的 MAC 表中){ 查找 switchA 对应的端口号 switchportB; swConnTemp.add(switchA,switchB,switchportB); } } 根据三元组集合发现交换机间的连接关系; 输出发现结果四元组集合 swConnV }- 27 - 兰州交通大学专业学位硕士学位论文初始化设备集合switchVector 端口发现集合swConnTemp 标志主机markhost从SwitchVector中读取设备Si在端口发现集合swConnTemp中查找 Si的下行端口集合Pi从Pi中读取记录Sij在swConnTemp中查找Sij的Lij集合查找Lij中的根节点设备将Sij与根节点的上行端口连接Y Pi中是否还有Sij没有处理 N YSwitchVector中是否还有Si没有处理 N 输出端口连接集合算法结束图 3.4 根据交换机的端口发现信息进行链路层拓扑发现- 28 - 兰州交通大学专业学位硕士学位论文3.2.6 主机拓扑信息的发现 确定了交换机之间的连接关系之后, 接下来要做的工作就是确定每台交换机上连接 了哪些主机。 相对交换机之间的拓扑确定而言, 交换机与主机之间的连接关要简单许多。 局域网中的主机一般默认都不支持 SNMP,所以直接通过 SNMP 协议访问主机的 办法不一定能确定交换机上的链接关系。但一般情况下,只要是连接在交换机上的活动 主机都会在交换机的地址转发表 AFT 中出现。基于这一原理,我们可以确定交换机上 的主机拓扑信息。 以下是实现这一目标的伪代码描述: 初始化当前主机集合 hostV 读取当前交换机 currSwicth 的 AFT 到 currAFTV 去除 currAFTVector 中状态为无效的条目; 去除 currAFTVector 中的交换机、路由器等网络设备; 剩下的便是与当前交换机连接的主机了; 建立 currSwicth 与 currAFTVector 的连接 hostConnV 输出 ConnV- 29 - 兰州交通大学专业学位硕士学位论文4 拓扑发现系统的总体设计4.1 系统需求分析拓扑发现的最终目的是为网络管理提供正确的网络拓扑结构, 并以图形化界面显示 在管理者面前,用以有效的监控网络设备和连接线路。因此要求系统能采用合适的拓扑 发现算法来有效的发现网络拓扑结构,同时能够将拓扑结构清晰、完整地显示在图形界 面上。 校园网拓扑发现系统的设计是依赖于校园网的硬件平台结构进行的。 对于不同的网 络设备,拓扑自动发现系统的要求不同。主干网络设备在校园网络中起着核心作用,它 们担负着网络的分层、转发、连接、控制、分组等功能,因此必须以较高的要求实现主 干网络的功能。 所以对校园网拓扑发现系统的首要功能是:准确快速的发现主干网络设备。根据主 干网发现的结果将实际拓扑结构生成网络拓扑图形, 将校园网络的骨干拓扑结构直观地 展示给网络管理员。作为进一步的目标,在此基础上实现其它的网络管理功能使得软件 系统的功能更加完善。比如加入故障告警功能,发生网络故障时能及时对网络故障进行 定位; 加入流量显示功能, 在网络拓扑结构图上显示链路的流量信息, 进行流量监测等。 对于子网内主机的情况,网络管理员需要知道某一指定网段的主机情况,所以校园 网拓扑发现系统还要实现某个子网内主机的发现,探测某个交换机上有哪些活动主机。 如目前该设备下连接了多少台主机正在运行,它们的 IP 信息是多少,基本信息的查看, 连通性如何等。这些拓扑信息可以以图形化的方式展现,也可以简单地以列表的形式显 示出来,使网络管理员能够清楚地了解子网中主机的连接情况。4.2 校园网络基本结构和特点湖南交通工程职院技术学院校园网络采用以星型拓扑结构为主的分布式三层, 包括 核心层、汇聚层、接入层。核心层应用十万或万兆以太网技术等先进成熟的主流网络技 术,网络主干采用 1 台核心三层交换机和 7 台汇聚交换设备。汇聚层和接入层采用百兆 和千兆混合式三层交换以太网结构,如图 4.1 所示。- 30 - 兰州交通大学专业学位硕士学位论文图 4.1 湖南交通工程职院网络拓扑结构本校校园网拓扑的主要特点有: (1) 整个网络的主要拓扑形态为树形,基本不存在冗余链路 (2) 只有出口处有一台路由器,校内网络以三层交换机 RG-S8610 为核心,汇聚 层也以三层交换机为主 (3) 接入层以二层网管交换机为主 (4) 由于历史原因和设备经费不足的问题,网络中还存在旧的不支持网管的设 备4.3 系统体系结构根据网络应用系统的运行方式,系统的结构划分为三个层次。 最下层是拓扑信息获取层,是拓扑发现的核心部分。该层中的拓扑发现模块是拓扑 发现的基本工作单元,它负责一定范围内网络的拓扑数据的采集,然后以一定的形式送 到中间层。 中间层是拓扑信息分析,该层主要负责拓扑数据的分析与判断。- 31 - 兰州交通大学专业学位硕士学位论文最上层为拓扑数据表示层,该层负责拓扑的显示以及和用户的互操作等任务。 系统的体系结构如图 4.2 所示:拓扑图形显示拓扑拓扑信息分析拓扑拓扑信息获取网络设备图 4.2 拓扑发现系统体系结构4.4 功能模块根据实现功能划分,整个系统可分为以下几个部分,如图 3-3 所示总体控制模块网 络 层 拓 扑 发 现链 路 层 拓 扑 发 现拓 扑 信 息 储 存拓 扑 图 形 显 示系 统 图 形 界 面图 4.3 拓扑发现系统总体功能模块(1)总控制功能模块 该模块提供整个系统的操作界面,完成系统的初始化并对其他功能模块进行控制。- 32 - 兰州交通大学专业学位硕士学位论文(2)网络层拓扑发现模块 对网络层逻辑拓扑信息进行发现,按照一定的数据结构将发现的结果储存在内存 中。 (3)链路层拓扑发现模块 对数据链路层拓扑信息进行发现,按照一定的数据结构将发现的结果储存在内存 中。 (4)拓扑信息存储模块 将获取到的拓扑连接信息储存到数据库中,方便用户调用 (5)拓扑图形显示模块 将获取到的拓扑连接信息转化为具体的网络拓扑图并显示在用户界面中4.5 数据库设计每次拓扑发现都要消耗一定的时间和系统资源,为了更快速地呈现拓扑图形,将发 现后的拓扑图以一定的结构储存在数据库中,方便日后调用是一种比较合理、可行的方 法。 本系统主要设计了拓扑图形信息表、网络节点信息表、网络连接信息表 (1) 拓扑图形信息表存储拓扑图形的相关信息,包括:网络拓扑图名称,网络设备 总数量,拓扑图创建时间等。 (2) 网络节点信息表保存网络节点的设备信息,主要包括网络设备 ID,IP 地址, MAC 地址,设备类型,设备标签,设备访问信息等。 (3) 网络连接信息表用于保存网络设备之间的连接关系,主要包括链路类型,源设 备 ID,源设备端口,目标设备 ID,目标设备端口等。- 33 - 兰州交通大学专业学位硕士学位论文5 拓扑发现系统的详细设计与实现5.1 系统开发环境本系统采用 Eclipse 集成环境、ObjectSNMP 及 AdventNet SNMP API 软件开发包在 Java 平台上进行开发,数据库采用开源数据库 MySQL。 5.1.1 Java简介 Java 语言的广泛应用是因为它是一种面向对象的编程语言,具有“一次编写,到处 运行” 的特点, 在网络编程领域有着非常突出的特点。 作为一种程序设计语言, 它简单、 面向对象、不依赖于机器的结构,具有可移植性、健壮性、安全性,提供了并发机制, 程序的编译性能优越;对网络的功能进行了完整的封装,最大限度地利用了网络,Java 的小应用程序(applet)和网络应用等对象可在网络上传输而不受操作系统和机器的限制。 对于于编写网络管理软件, Java 语言是一个比较理想的平台。 开发过程中所需要的技术, Java 语言都提供了很好的解决方案,SNMP 开发包有 SUN 公司的 JDMK,Advent 公司 的 SNMP 包,还有开放源代码的 SNMP4J 以及北京智和公司的 ObjectSNMP 等。 5.1.2 Eclipse简介 Eclipse 是一个可扩展的开放源代码集成开发环境。 2001 年 11 月, IBM 公司捐出价 值 4000 万美元的源代码组建了 Eclipse 联盟,并由该联盟负责这种工具的后续开发。集 成开发环境经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成 开发环境克服目前的局限性,业界厂商合作创建了 Eclipse 平台。 就其本身而言,Eclipse 只是一个框架和一组服务,用于通过插件组件构建开发环 境。Eclipse 附带了一个标准的插件集,包括 Java 开发工具 JDT、调试工具、部署工具 等。同时 Eclipse 允许在同一 IDE 中集成来自不同供应商的工具,并实现了工具之间的 互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。 Eclipse 框架的这种灵活性来源于其扩展点。它们是在 XML 中定义的已知接口,并 充当插件的耦合点。扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个 Java 类的描述。任何 Eclipse 插件定义的扩展点都能够被其它插件使用,反之,任何 Eclipse 插件也可以遵从其它插件定义的扩展点。除了解由扩展点定义的接口外,插件 不知道它们通过扩展点提供的服务将如何被使用。 利用 Eclipse, 我们可以利用多种开发工具、 多种开发语言协同工作。 比如在 Eclipse 集成 UML 建模语言,图形开发工具,集成汇编调试器。也可以集成多种语言环境,无 论 Java 语言、 perl 语言还是 C/C++语言都可以有效的协作开发, 并可以在相同的框架内 同时瞄准不同的进程或节点。- 34 - 兰州交通大学专业学位硕士学位论文5.1.3 SNMP软件开发包简介 (1) AdventNet SNMP API 开发包 AdventNet SNMP API 是美国 AdventNet 公司推出的一个发包,它提供了一个全面 的开发工具包用于开发基于 SNMP 的网络管理应用。AdventNet 封装了一系列强大的 Java SNMP 类和 API, 用来创建功能丰富的基于 SNMP 协议的网络管理程序, 并且这些 应用程序是独立于机器平台和操作系统的。AdventNet Java SNMP 库除了提供基本的 SNMP 操作,如:SNMP GET、SNMP GETNEXT、SNMP RESPONSE 和 SNMP SET, 还为陷阱处理和表格处理提供了完整的的功能组件。 这些组件便于开发者更简单快速地 开发部署各种版本的 SNMP 管理应用程序。 (2) ObjectSNMP 开发组件 ObjectSNMP 是由智和信通推出的一个一个面向对象的 SNMP 开发组件,实现了 Object 到 SNMP MIB 的映射,简称 O-M Mapping,基于标准版 JAVA 技术,能让开发者 从编写复杂的 SNMP 代码中解脱出来,并且与面向对象的设计风格自然结合起来。开 发者需要定义对应的 JAVA 数据对象,然后通过 ObjectSNMP API 提供的基于对象的添 加、删除、修改、查询等操作,就可以实现对 SNMP 底层协议的操作,ObjectSNMP 会 自动处理复杂的对象转换和 SNMP 网络处理。 使用 ObjectSNMP 的优点:面向对象开发,开发时间短、成本低,编程任务简化, 可靠性高,模块化程度高,编程易于学习、和掌握理解 5.1.4 MySQL数据库简介 MySQL 是一个小型关系型数据库管理系统, 开发者为瑞典 MySQL AB 公司, 2008 在 年 1 月被 Sun 公司收购。在 Internet 的中小型网站和中小型企业应用方面广泛地应用了 MySQL 数据库。由于它是开源软件,而且具备体积小、速度快、总体成本低的特点, 许多中小型应用系统都选择了 MySQL 作为后台管理数据库。 MySQL 是一种采用了先进成熟的关系型数据库技术的数据库管理系统,它使用标 准的数据库管理语言─SQL 语言进行数据库管理。MySQL 虽然免费向用户提供代

我要回帖

更多关于 fabric 多节点拓扑图 的文章

 

随机推荐