本站
非官方网站,信息完全免费,仅供参考,不收取任何费用,具体请以官网公布为准!
基于OSPF的网络拓扑拓扑发现系统
计算机科学与技术学院 03061518 于佳华
指导教师:刘刚
摘 要
随着Internet技术的飞速发展,网络技术给人们的生活、工作方式带来了巨大的变化。为了适应越来越多的流量,新的链路不断被接入网络中,网络中的硬件设备路由器、交换机等影响着网络的运行。清楚的了解网络拓扑情况对网络维护、设备管理以及网络安全有着重要的意义。OSPF路由协议是当今效率最高最为流行的内部网关协议,OSPF同区域的路由器具有链路状态数据库同步特性,为网络拓扑发现提供了很好的条件。
本文在分析传统的拓扑发现方法的基础上,详细研究了OSPF路由协议,给出了基于OSPF的路由拓扑发现技术。根据OSPF协议的链路状态数据库同步特性,在每个区域中布置一台装有路由模拟软件的服务器,通过这个服务器获取网络链路状态数据,再通过一个拓扑服务器进行信息汇总,按文中的算法绘制出整个自治系统的网络拓扑,并且也对可控网络内的路由器的各个接口进行了端口扫描和操作系统探测。最后对这项技术进行了实现,实现的系统能够完全完成预期功能。
关键字:软件路由;OSPF;拓扑发现;端口扫描
ABSTRACT
With the rapid development of Internet technology, the network had been changing everybody’s life and working methods tremendously. For the sake of satisfying more and more network flux, the new link is connected to network incessantly. Network hardware as routers and switches, are affecting the network’s run. Realizing the network topology clearly is very important for network’s maintenance, devices’ management and network security. OSPF routing protocol is the most popular highest efficiency in the internal gateway protocol, and it has a characteristic that every router in the same area has the same Link State Database. And this characteristic provides a very good condition for network topology detecting.
This paper analyzed traditional topology detecting methods at first. After that the author researched the topology detecting technology based on OSPF on the basis of a detailed study of OSPF routing protocol. According to the OSPF link state database synchronization characteristics, each area was disposed one server which was installed routing-simulation software, and got the link states of the area through the server. This design also used a topology-server to collect the link state information from the servers that was disposed in every area. After that the system mapped out entire AS network topology through the algorithm which the paper mentioned. Besides that, the system also scanned every interface which could be reached and got the port and OS information. At last, the author implemented this topology detecting technology, and the result of implement could match the expected needs fully.
Key word: soft-routing ; OSPF ; network topology detecting ; port scan
一、绪论
1. 引言
随着Internet技术在全球范围内的飞速发展,网络技术给人们的生活、工作方式带来了巨大的变化,各种单位越来越多地依赖网络与外界进行信息沟通。为了适应越来越多的流量,新节点、新链路不断地被引进到网络中,路由器(Router)、服务器(Server)、交换机(Switch)、集线器(Hub)等设备影响着网络运行。了解清楚网络的拓扑情况可以更方便的解决网络故障、更改网络配置和进行设备维护,对于网络维护和管理意义相当重大。
与此同时,网络安全问题也变得越来越突出,蠕虫对网络的威胁日益增加。越来越多的黑客入侵事件,使人们充分认识到网络信息安全管理的重要性和紧迫性。了解清楚网络的拓扑结构更有利于方便的隔离有害源头,对于网络安全也有着非常重要的意义。
目前网络管理人员需要手工查看庞大的网络,网络的维护工作越来越复杂,给网络管理带来许多困难。于是有许多人研究自动网络拓扑发现,自动网络拓扑发现技术能及时发现工作在网络中的所有设备,再通过拓扑绘制技术将它们自动绘制出来,让管理人员能方便、直观、有效、及时地了解整个网络的运行情况。
2. 课题研究现状
从采集拓扑信息的方式上来看,当前常用的网络拓扑发现技术有基于ICMP协议和基于SNMP协议两种。
基于ICMP协议的拓扑发现在具体实现中,往往是利用ping依次检测IP地址区间的每一个IP地址,然后对ping得到的结果依次进行traceroute操作,记录其结果,得到到达该IP的路由。通过发送掩码请求报文得到子网掩码,将每个IP加入相应的子网。其优点是:使用ICMP协议实现较为简单,还可检测网络设备的活动情况,适合于小范围(如子网内)的拓扑发现;缺点:它是对一定范围的IP逐一测试,费时且增加网络的负担,同时不能得到网络接口的有关信息,而且当路由器禁用ICMP数据包时,这个方法就不能生效。
简单网络管理协议(SNMP[1])是一种实现网络设备间交换管理信息的应用层协议。SNMP网络管理结构是分散的数据(分布在每个被管理设备的MIB中)、集中的管理(统一由管理系统管理)。基于SNMP协议的拓扑发现的优点是:测量准确、速度较快、网络负载较小;缺点:需要路由器上的SNMP权限,如果不能获得相关的权限,此方法就失效。
3. 课题简介
本文在分析传统的拓扑发现方法的基础上,详细研究了OSPF路由协议,给出了基于OSPF的路由拓扑发现技术。根据OSPF协议的链路状态数据库同步特性,设计并实现了基于OSPF的网络拓扑发现系统,实现的系统可以自动绘制出整个自治系统的网络拓扑结构,并且也对可控网络内的路由器的各个接口进行了端口扫描和操作系统探测。
二、OSPF路由协议的研究
1. OSPF概述
开放式最短路优先路由信息协议(OSPF[2],Open Shortest Path First)是目前IGP中应用最广、性能最优的一个协议。于1988年,网间工程任务组织(IETF,Internet Engineering Task Framework)成立了内部网关协议工作组,专门设计用于因特网的基于最短路径优先(SPF)算法的IGP。1991年,在RFC1247中对第2版OSPF进行了描述,即OSPFv2,也是第一次被标准化[3]。
OSPF路由协议是一种典型的链路状态(Link State)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(AS,Autonomous System),它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的[3]。
2. OSPF的分层路由机制
OSPF是一种分层次的路由协议,其层次中最大的实体是AS(自治系统)。在每个AS中,将网络划分为不同的区域,每个区域都有自己特定的标识号。对于主干(backbone)区域,负责在区域之间分发链路状态信息。这种分层次的网络结构是根据OSPF的实际提出来的。图2-2就是一个典型的分层结构。
图2.1 OSPF分层路由图
三、基于OSPF的网络拓扑发现系统的设计
1. 基于OSPF的网络拓扑发现的原理
OSPF支持一种两层的层次化路由选择方案,这是通过使用OSPF区实现的。每一个OSPF区由多个通过路由器互联的网段组成,并由一个32位的区ID标识[4]。在任意一个OSPF区的内部,每一个区均有其自己的链路状态数据库,该数据库由描述区路由器(Area Router)及网段互联关系的router-LSA和network-LSA组成。区内的路由选择是平面式的,每一个路由器都清楚地知道区内包含那些网段。这样在每个OSPF区域中如果都存在一台系统可以访问的路由器,这样就可以通过分析区域中的router-LSA和network-LSA,得到整个区域的路由拓扑。
2. 端口扫描和操作系统探测概述
为了较好的掌握网络结构信息,需要对网络中的路由器的端口和操作系统进行探测。每个Area内部有一个zebra服务器,它可以实现Area内部路由器和服务器的探测。
端口扫描是向目标主机的服务端口发送探测数据包,并记录目标主机的响应。通过分析响应的数据包来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。
操作系统探测分为主动和被动两种方式。其基本原理是:由于TCP/IP协议栈技术只是在RFC文档中描叙,并没有一个统一的行业标准,于是各个公司在编写应用于自己的OS的TCP/IP协议栈时,对RFC文档做出了不尽相同的诠释,于是造成了各个OS在TCP/IP协议的实现上不同。
3. 网络拓扑发现系统的设计
系统的功能概括起来就是得到一个自治系统中每个区域的路由拓扑信息和每个可达端口的端口信息,并汇总由windows界面显示出来。
这个系统分为三个大的部分,第一部分为分布在各个自治系统中的zebra服务器部分,它有三个大的功能,一是运行zebra软件,将自己虚拟为一个具有OSPF功能的路由器,从而通过OSPF协议的数据库同步特性,得到区域链路数据库;二是运行端口扫描程序,扫描所达的所有区内路由器接口,得到端口信息和操作系统信息;三是和上层拓扑服务器通信,将所获得链路状态信息和端口扫描信息上传给拓扑服务器。
第二部分是各种zebra服务器信息汇总并存储的拓扑服务器,它也有三大功能,一是与下层zebra服务器通信,将所得信息提取整理,以适当格式存入数据库的相应表中,因此第二个功能是数据库操作功能,第三个功能就是和上层客户端通信,根据上层客户端的不同需求从数据库中得到信息并传送给客户端。
第三部分就是用于显示的windows客户端,由于直接被用户所使用,它的功能相对较多,首先是具有登录验证功能,使得只有用户名和口令的用户才能使用系统,还有就是用户管理功能,对所有的用户进行权限划分,使得不同权限的用户的功能也不一样,再就是zebra服务器的管理功能,能够添加和删除拓扑服务器所能控制的zebra服务器,还有就是对系统操作日志的查询功能,还一个与下层拓扑服务器通信的功能,以得到想要信息,再有就是最为重要的功能,即对得到的拓扑信息和端口扫描信息进行显示。系统的软件各个模块关系如图3.1所示。
图3.1 系统各模块关系图
四、基于OSPF的网络拓扑发现系统的实现
整个系统的服务器部分(包括zebra服务器和拓扑服务器部分)使用C++编写,系统为Red Hat Linux 9.0,使用的编译器为gcc-3.4.3-9.EL4。
客户端使用MFC编写,系统为Windows XP,编译环境为Microsoft Visual C++ 6.0。
1. 实验环境说明
整个系统的实现在如图4.1环境中进行,整个自治系统分为两个区域,area0和area1;每个区域中都只有一个网段,area0为10.60.100.1/21,area1为10.70.100.1/24;有三台华为路由器,型号分别为Quidway 3600、Quidway NetEngine 05、Quidway AR 4680;有两台zebra服务器分别部署在两个区域中;一台拓扑服务器向下能与两台zebra服务器通信向上能与Windows客户端通信。
图4.1 实验环境示意图
2. zebra服务器的实现
系统中的zebra服务器为两台普通PC机,所装系统为Red Hat Linux 9.0,系统已经默认安装了zebra工具包,版本为zebra-0.93b-1。
zebra是一个非常强大的路由模拟软件,有了它系统的路由器模拟模块就完全的转化为了对zebra工具包的ospfd进程的正确配置。配置好两台zebra服务器,使他们能够正确接入到OSPF区域中,并成为路由动态扩散的对象,同时还要保证对原网络的影响达到最小。至于与拓扑服务器的通信接口问题,因为ospfd进程已经提供了一个端口为2604的服务,拓扑服务器访问时只需建立一个端口为2604的TCP连接即可[5]。
端口扫描模块要求系统装有NMap工具包,作者所实现的系统中所使用的NMap版本为nmap-3.70-2.1,系统实现的原理就是使用C++调用系统的shell命令,然后将命令执行结果返回,所使用的命令为“nmap –O [ip]”。
3. 拓扑服务器的实现
这个部分是整个系统的核心所在,它承上启下,下与zebra服务器通信得到整个区域的拓扑结构和端口扫描信息,上与Windows客户端通信,返回客户端想要的信息,而自身又担负着连接数据库的重任,数据库也成为了系统各部分信息转换的中心。
就通信而言,拓扑服务器要同时保持三种通信,即与客户端的通信、与ospfd进程的通信、与端口扫描进程的通信。而且这三种通信都具有随时发生的特点,在时间上重叠的可能性很大,因此必须采用多线程技术,对每个通信都单独分配一个线程来维护,为了保证多线程之间的影响达到最低,使数据库成为他们交换信息的媒介是个可取的选择,因为数据库管理系统自身就已经完成了读写之间的互斥关系。
(1)数据库模块
由于对数据库的操作异常频繁,而且三个多线程的通信也都是通过数据库来彼此交换信息,所以会出现同一时间多个代码段访问数据库的情况,为此作者把数据库的相关操作有一个类封装起来,只要生成一个实例,就可以完成对数据库的所有访问操作。数据库访问类Cmysql设计如图4.2所示。
图4.2 Cmysql类结构图
(2)与路由器模拟进程交互模块的实现
此线程操作过程如下:得到ospfd进程的network-LSA的命令是show ip ospf database network,把得到的信息插入相应数据表中。同理,得到ospfd进程router-LSA的命令是show ip ospf router[2],也将得到信息插入数据表。
(3)与端口扫描进程交互模块的实现
本线程先通过查询表NetworkLSA,得到对应的zebra服务器所在的area,查询表RouterLSA在区域area中的所有接口,这些接口也是zebra服务器应该能探测到的所有接口。之后调用Cportmap类的Map()方法扫描各个端口。
(4)与Windows客户端交互模块的实现
与客户端的通信线程主要由作者自己定义的另一个通信协议来走,对客户端发来的各种命令进行解析,转换为拓扑服务器的各种相应动作,其中绝大部分的任务是查询数据库,将查询结果按协议格式返回。
4. Windows客户端的实现
这是展示系统功能的关键部分,由用户直接操作,它的功能也最全面具体,客户端使用的是普通的PC机,系统为Windows XP sp2。
实现的效果如图4.3所示。
图4.3 主界面截图
五、结束语
本文详细阐述了基于OSPF的路由拓扑发现的技术原理和实现方法,弥补了传统拓扑发现方法的多处不足之处,只要在每个OSPF区域中搭设一台Linux主机模拟的OSPF服务器,即可以得到整个区域的路由拓扑信息,而通过一个拓扑服务器分别和分布在各区域中的zebra服务器通信,就可以将拓扑信息收集,进而得到整个自治系统的拓扑信息。再由zebra服务器向每个区域内的可达端口扫描,就可以得到自治系统中任意接口的端口信息、MAC地址和操作系统信息,在界面显示上不需要任何第三方的插件,直接在视图窗体上将拓扑图绘出,而且视图中的设备布局算法简单实用。
整个系统部署方便、可靠性高,在解决网络故障、更改网络配置、网络设备维护等方面会有广泛的应用前景。若将其与网络末端隔离系统一起配合使用,由本系统查看网络末端的拓扑信息,由隔离系统完成有害IP的封堵,则系统在网络安全领域也将有着广泛的应用前景。
本文任务为实现一个自治系统内的路由拓扑发现系统,在今后的工作中还可以充分研究目前流行的外部网关协议,像BGP(Border Gateway Protocol)协议,将多个自治系统的拓扑信息关联起来,完成更大范围的拓扑发现和绘制工作。
参考文献
[1] 吴孟军,徐袭编著.Visual C++开发基于SNMP的网络管理软件[M].北京:人民邮电出版社,2007.
[2] Moy,J.OSPF Version 2[Z].Internet Request For Comments RFC 2328,1998.
[3] John T. Moy等著,胡光明等译.OSPF协议剖析[M].北京:中国电力出版社,2002.
[4] Thomas M.Thomas著,卢泽新译.OSPF网络设计解决方案(第二版)[M]. 北京:人民邮电出版社,2004.
[5] 任泰明著.TCP/IP协议与网络编程[M].西安:西安电子科技大学出版社,2004.
学习文档 http://www.xuecan.net/wenku/