IP网络拓扑自动发现------------------------------------------------------算法比较经典---已读

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IP网络拓扑自动发现

自从20世纪90年代以来,越来越多的企业及个人在加入Internet网,使网络规模持续扩大。为了适应越来越多的流量,新节点、新链路不断的被引进到网络上,从而使手工维护很难跟上网络的变化,给网络管理带来困难。

网络由一起工作的大量实体构成,向用户提供某种服务。这些实体功能由硬件和软件执行,一些出现在真实网络中实体的例子有路由器、服务器、普通主机、链路等,所有这些都影响着网络运行的方式及提供给最终用户的服务质量。例如,如果一个应用服务器(Web Server)出现宕机而从网络上剥离下来,那么用户将得不到他们所期望的服务(浏览网页)。提到拓扑发现,一般是指发现完成最终用户服务所涉及到的所有实体,不仅要发现实体,而且要发现实体在网络中所起的作用及实体间互相连接的方式。

网络拓扑对网络管理、网络规划非常有用。例如,网络故障、流量瓶颈等重要信息能直接显示在网络拓扑上,这样网络管理员对当前的网络状况就有一个清楚的认识,对哪里发生了故障一目了然。如果网络拓扑上显示一条链路总处于满负荷传输状态,那么扩大该条链路的容量对提高网络性能将有很大帮助。此外,网络拓扑对网络仿真也十分重要,要仿真能否在现有网络上新开放一种应用,必须首先有正确的网络拓扑。

获得网络拓扑的最简单的方法莫过于让管理员根据实际网络手工绘出其拓扑,但现在网络越来越复杂,越来越庞大,并一直在膨胀,而且实体在网络中担负的功能也越来越复杂,要跟踪这样一个网络需要花费很多时间或精力,而且网络一旦有所改变所有工作必须重做。网络拓扑自动发现正是基于这个原因发展起来的,本文对能用于拓扑发现的一些常用的工具和技术作了简要的介绍,并基于笔者的实践提供了一个简单的算法实现,该算法主要针对同一个管理机构下的IP网络的拓扑自动发现,更复杂的拓扑发现算法可在此基础上进一步扩展。

一、用于拓扑发现的工具

1. Ping

Ping命令是IP网上最古老的一种工具,用来监测网络节点是否活着,或用于监测到网络节点间的往返时延(RTT)。通常Ping只涉及网络上的源和目的两节点,而忽略网络细节。另外我们可以使用广播Ping,其Ping的地址不是一个单一的地址,而是子网的广播地址,所有位于该子网的主机均对此Ping包进行响应,从而一次就可得到子网内的全部活动主机。

使用Ping的最大问题是,当Ping一个活着的主机时,其往返时延往往在几十毫秒左右,但Ping一个不存在的或宕着的主机,一般比较常用的超时通常为20秒,再加上为了减少丢包对测量结果的影响而采取发2~3个Ping包,这样对这类主机的监测代价就非常大。这个问题最直接的解决方案是减少超时值,但是必须注意不要小于网络实际的往返时延。通过精心设计超时和重发策略(随着跳数的增多,超时相应增大),可以有效减少等待时间同时又减少误判

使用广播Ping的问题是,现在实际网络中广播Ping很少得到完全支持,部分网络由路由器代替子网内的主机响应。在另外一些网络中主机根本就不对广播Ping进行响应,甚至路由器根本不转发能引起广播的包。这是基于网络安全的考虑,因为可以利用这个特性进行拒绝服务攻击,例如向几个大的子网进行广播Ping,并把源地址设置为受害者的地址,这样受害者就会淹没于大量ICMP Ping的响应包,从而拒绝提供任何服务。对该问题的一个解决方案是设计一个专门的Broadcast Ping程序,其内部实现是直接将子网的广播地址转变为多个主机地址,然后启动多个线程或进程来分别向主机发送Ping包,从而获取子网内的全部主机地址

2. Traceroute

Traceroute命令是TCP/IP家族内另一个比较早的工具,它可用来发现测试点和目标主机之间的路由器。路由器在转发包之前总是将其TTL值减1,如果TTL降为0,则路由器向源地址发送TTL-Expired

ICMP消息。Traceroute实现的原理就是应用路由器的这个特性,通过发送TTL逐渐增大的探测包,由测试点到目标间这条路经上所有的路由器依次向测试点发送TTL-Expired ICMP包,从而发现所有路由器。因为几乎所有的路由器设计时都实现了发送TTL-Expired ICMP消息的功能,所以大多数情况下Traceroute的结果是准确可信的。由于采用逐渐增大TTL值的方法,每探测一个目标需要依次发送不同TTL值的多个包,因此用Traceroute 获取结果比Ping要慢的多。可以设计一种并发式的Traceroute命令,一次发送不同TTL 值的多个包,从而加速路由器的发现速度

3. DNS

IP地址是为网络上的路由器或主机等机器设计的,它不符合人类的记忆习惯,DNS (Domain Name

System)就是为了解决这个问题而开发的。DNS系统主要用于网络设备IP地址到名字的映射,同时也维护一些其他信息如设备的硬件平台及操作系统等。

使用DNS服务器提供的区域传输功能可以一次获取域内许多主机和路由器,快捷方便,这是它的优点。但如果主机的地址通过DHCP获得,则DNS对此就无能为力,此外,DNS 服务器提供的信息可能与实际情况不一致,甚至有些DNS服务器没有提供区域传输功能。尽管有诸多缺点,DNS在拓扑发现中还是很重要的,我们可以把DNS返回的信息作为其他算法的起点;我们还可以在不知道网络具体结构的情况下,使用不同时间返回来的信息直接用来估算网络的增长速度

4. SNMP

SNMP(简单网络管理协议)的基本思想是所有的网络设备维护一个MIB(管理信息库)保存其所有运行进程的相关信息,并对管理工作站的查询进行响应。SNMP协议描述了一种从MIB库中获取信息的方法,对设备唯一的要求是支持SNMP并且MIB中的信息足够丰富。

使用SNMP的最大优点是信息自动随网络的状况更新,这样通过SNMP获取的拓扑信息总是反映网络最新的状况。其缺点是并不是所有设备都支持SNMP协议,而且除了标准的MIB信息外,各厂家都为自己的设备开发了专门的MIB,如果在拓扑自动发现程序中使用了这些MIB,其处理上可能不得不随厂家的不同而作特殊的处理。因此,我们建议尽量使用标准MIB。本文中用到的MIB组有System组、Interfaces组、IP组,它们均为当前MIB-II下的标准组。

5. 其它工具或技术

除了上面介绍的几种常用工具外,我们还可利用节点的ARP表查询它直连的设备,利用路由协议(如OSPF、BGP)发现所有子网或网络,发现所有的路由器,在BGP下还可发现一条路经经过的自治域(Autonomous

Systems)。对于非IP网络,可利用专门的技术(对IPX网络可采用SAP)发现网络拓扑信息。此外,一些厂家专有的技术如Cisco的CDP(思科发现协议,仅用于Cisco设备)、Netflow技术等也可用于拓扑发现

相关文档
最新文档