一种定位网络故障的方法和系统的制作方法

文档序号:7669641阅读:113来源:国知局
专利名称:一种定位网络故障的方法和系统的制作方法
技术领域
本发明涉及通信领域,特别涉及一种应用traceroute程序定位网络故障的 方法和系统。
背景技术
随着互联网飞速发展,网络规模越来越大。对于一个网络管理员来说, 维护如此庞大的网络将面临着很多挑战。其中的一个挑战就是,当网络发生 故障,业务发生中断后。网络管理员首先需要做的是,快速查找出故障点, 只有故障点被查找出来了,才能对故障原因进行分析定位,进而快速恢复网 络。
网络中断可以归纳为三个层次其一是链路中断,主要指网络中的物理连 接断了,比如说网络中某条光纤断了,某个设备死机了等等;其二是网络层 中断,即网络中的物理连接都是好的,但是网络中的路由等故障,造成网络 中的主机间无法互相发送接收到对端报文了;其三是应用层中断,即网络中 的主机间还是可以连通的,报文还是可以转发的,比如说可以Ping(检测网络 连通性的小程序)通,但是不能联网打游戏了,不能-见频聊天了。对于前两 种中断,可以通过下面介绍的现有技术定位出故障节点,但对于第三种网络 业务中断,现有技术无法定位到故障节点。
由梵 杰科博森(Van Jacobson)编写的跟踪路由traceroute程序,是一种 获取源、目的主机间网络路径的程序,可以通过源主机,如一台PC,向目的 主机,如服务器,发送数据包并测试数据包从所述源主机(PC)到所述目的 主机(应用服务器)所经过的网关,用于检查网络连接是否可达,以及分析 网络什么地方发生了故障。应用traceroute的执行过程是源主4几首先向目的 主机发送一个TTL (Time To Live,生存时间)为1的IP数据包,当路径上的第 一跳路由设备收到此数据包时将TTL减l,并检查此数据包的TTL是否为O,如 果为0,则将数据包丢弃并给源主机发送回一ICMP (Internet Control Message Protocol,互联网控制消息协议)错误消息,如果不为0,则继续转发此数据包。由于此时数据包的TTL变为O,因此该第一跳路由设备会将数据包丢弃,并发 送回一个ICMP (Internet Control Message Protocol,互联网控制消息协-汉)4昔 误消息以指明此数据包因为TTL超时而不能被发送,所述ICMP^I普误消息是通 过ICMP超时差错报文发送。之后源主机重新发送一个TTL为2的IP数据包, 同样第二跳路由设备收到数据包后将返回一个指明TTL超时而不能被发送的 ICMP错误消息。这个过程不断进行,直到到达目的主机。执行这些过程的目 的是记录每一个ICMP超时差错报文的源地址,以提供一个IP数据包到达目的 主机所经历的路径。当最后收到目的主机回应的ICMP应答报文时,说明从源 主机到目的主机的网络是连通的,并且根据上述记录的ICMP超时差错报文源 地址,可以知道源、目的主机间跨越了哪些网关设备。当网络中某个节点、 链路发生故障时,则从源节点到该故障节点、链路之间经过的每一个网关设 备都会回应ICMP超时差错报文,而该故障节点及其以后的设备不会有回应过 来,由此可以判断出网络中的故障节点或者链路。
但是现有网络中,为了防攻击,很多网关设备都配置了禁止ICMP检测报 文功能,但一般不禁止返回的ICMP差错报文。而传统的traceroute程序检测报 文类型是固定的。这样,就经常会遇到无法通过传统的traceroute程序检测网 络是否可达。因为不能知道该节点是由于禁止该检测报文还是节点出现故障 导致报文无法通过,以至于无法准确查找到故障节点。还有些网络业务中断 发生时,网络层是连通的,4旦应用层无法连接。即传统的traceroute程序可以 到达目的主机,但是游戏、视频等应用却无法使用,这种情况下就无法检测 出故障节点了。
作为traceroute程序的改进,现有另一种技术是源主机发送的是UDP检 测报文,而不是ICMP检测报文。UDP (用户报文协议)检测报文源端口使用 随机的任何大于32768的高端端口 ,目的端口从33434开始每发送一个探测报 文依次递增,同时TTL从1开始依次递增。中间的路由器发现TTL超时,发送 ICMP超时错误消息指明该数据报文不能被发送。当最后的目的主机收到源主 机发送的UDP检测报文时,目的主机会解析该UDP检测报文,并检查报文中 要求的端口是否正被使用。由于UDP检测报文的端口号是大于33434的高端端 口号,普通应用程序通常都不会使用这一类的高端端口号(大于30000的端口号),因此目的主机将会发送一个ICMP端口不可达差4晉报文给源主机。但是
该技术方案中,端口号是程序固定了的,如果网络中间设备禁止了这些高端
端口号,就无法正常工作;另外端口号是程序自己生成的而且是固定的,但 实际应用中不同的应用层对应的端口号不一样,因此不能通过该traceroute程 序检测出应用层是否连通。

发明内容
本发明实施例提供一种定位网络故障的方法和系统,能够解决由于网络中 间设备配置了某些端口 、协议过滤,而无法应用traceroute程序检测网络连通 性及正确定位网络故障的问题。
本发明实施例所提供的定位网络故障的方法和系统实施例是通过以下技 术方案实现的
一种定位网络故障的方法,包括步骤
获取网络连通情况的信息;
如果网络不通,则调整检测报文的协议类型和/或端口号; 发出调整协议类型和/或端口号后的检测报文;
根据调整协议类型和/或端口号后的检测报文检测到的网络连通情况判断 确定网络故障的位置。
本发明实施例还提供一种应用traceroute程序定位网络故障的系统,包括
信息获取单元,用于获取网络连通的信息;
信息调整单元,用于调整一企测报文的协议类型和/或端口号;
检测报文发送单元,用于发出调整协议类型和/或端口号后的检测报文;
网络故障定位单元,根据调整协议类型和/或端口号后的检测报文检测到 的网络连通情况判断确定网络故障的位置。
本发明实施例提供一种定位网络故障的方法和系统,由于灵活调整检测 报文的协议类型和/或端口号,解决了由于网络中间设备配置了某些过高的端 口号、协议过滤、而无法来检测网络连通性,正确定位网络故障的问题。


6图1为本发明实施例 一提供的应用traceroute程序穿越防火墙检测网络连 通情况的实现原理图2为本发明实施例二提供的应用traceroute程序检测应用层故障节点的 实现原理图3为本发明实施例提供的应用traceroute程序定位网络故障的流程图4为本发明实施例提供的应用traceroute程序定位网络故障的系统的结 构示意图。
具体实施例方式
本发明实施例提供一种应用traceroute程序定位网络故障的方法和系统, 调整检测报文的协议类型和/或端口号,再发出调整协议类型和/或端口号后的 检测报文;根据所述调整协议类型和/或端口号后的检测报文检测到的网络连 通情况来判断确定网络故障的位置。
下面结合附图详细描述本发明的实施例,以更好的理解本发明的技术方案。
本发明提供的实施例一参照图1 ,该图为利用traceroute程序穿越防火 墙检测网络连通情况的实现原理图。
在现有技术中,通过现有traceroute程序可以检测网络连通性,了解网络 拓朴结构。但当网络中存在防火墙时,防火墙可能会禁止掉现有traceroute程 序使用的协议类型和端口号,如ICMP、端口号大于30000的UDP端口等, 此时通过现有的traceroute程序就无法进行相应的检测了。图1为在一个小型 网络应用的示意图。终端PC 10 (源主机)和应用服务器14 (目的主机)之 间的网络跨越了两台路由器(路由器11和路由器13)和一台防火墙设备12, 防火墙设备12禁止了 ICMP协议以及端口号大于30000的UDP报文,而其 他的端口号和协议一般不会被禁止,如ICMP差错报文。各个网络设备接口 的IP地址如图1中描述。上图为本发明实施例提供的应用改进的traceroute 程序穿越防火墙检测网络连通情况的流程。应用traceroute程序时,调整检测 报文的协议类型和端口号进行检测,解决使用的固定协议、端口号被防火墙 禁止而无法成功定位网络故障的问题。具体流程描述如下步骤101 、 PC10发出第一个UDP检测报文并指定该第一个UDP检测报 文的目的地址为4.4.4.2,端口号为12345, TTL为1。
步骤102、路由器11收到第一个UDP检测报文,发现目的地址不是自己, TTL是1,于是构造TTL超时的ICMP差错报文发送给PC 10。该ICMP差错 报文的源地址是路由器11的接口地址,目的地址是PC 10的地址。
步骤103、 PC 10收到路由器11返回的ICMP差错报文后,记录下该报文 的源地址,即路由器11的接口地址,由此知道PC 10到应用服务器14网络 中的第一跳地址为1.1.1.2。
步骤104、 PC IO发出第二个UDP检测报文,并指定该第二个UDP检测报 文的目的地址为4.4.4.2,端口号为12345, TTL为2。
步骤105、路由器11收到第二个UDP检测报文,发现目的地址不是自己, TTL为2,因此把TTL减1后把该第二个UDP检测报文转发出去。
步骤106、防火墙12收到该第二个UDP检测报文,发现目的地址不是自 己,TTL是1,于是构造TTL超时的ICMP差错报文发送给PC 10。该ICMP 差错报文的源地址是防火墙12的接口地址,目的地址是PC 10的地址。路由 器11把该ICMP差错报文转发给PC 10。
步骤107、 PC 10收到防火墙12返回的ICMP差错报文后,记录下该报 文的源地址,即防火墙12的接口地址,由此知道PC 10到应用服务器14网 络中的第二跳地址为2.2.2.2。
步骤108、 PC 10发出第三个UDP检测报文,并指定该第三个UDP检测 报文的目的地址为4.4.4.2,端口号为12345, TTL为3。由于所述检测报文的 协议类型及端口号可以动态调整,因此根据防火墙12所设定的禁止范围,可 将所述检测报文的协议类型及端口号指定在防火墙12禁止范围之外。如上所 述,该第三个UDP检测报文的协议类型和端口号均不在防火墙12禁止范围 内,因此该第三个UDP ^r测净艮文将顺利通过防火墙12。 4安前述的方式处理, PC 10将收到路由器13返回的ICMP差错报文,由此知道网络中第三跳地址, 即路由器13的接口地址为3.3.3.2。
步骤109、以上述方式,PC IO发出第四个UDP检测报文,经过路由器ll、路由器13和防火墙12转发后,应用服务器14收到该第四个UDP检测报文。应 用服务器14发现该检测报文的目的地址为自己,于是上送应用层处理。如果 存在UDP端口号为12345的应用,则应用服务器14接受了该UDP检测报文,并 且不会再发送ICMP差错报文。
步骤IIO、如果不存在UDP端口号为12345的应用,则应用服务器14向PC IO发送端口不可达的ICMP差错报文。如果PC 10收到应用服务器14发送的端 口不可达的ICMP差错报文后,知道第四个UDP检测报文已经被从PC IO端转 发到应用服务器14端口 ,由此可以知道PC 10到应用服务器14端的网络路径将 依次穿过IP地址为1.1.1.2、 2.2.2.2、 3.3.3.2、 4.4.4,2的几个网络设备。
上述步骤进行完后,如果PC 10发出第四个UDP检测报文后没有收到回 应,则等待一段时间后,发送第五个UDP检测报文,该检测报文和第四个 UDP检测报文类似,只是把UDP端口号改另外一个比较大的值,比如29999。 如果该检测报文发出后收到ICMP端口不可达差错报文,则已经检测出来了 网络的连通性。如果等待一段时间还是未有回应,贝'j PC10应用traceroute程 序再换一个端口号发送UDP检测报文。如果一直没有收到ICMP端口不可达 差错报文,则PC 10变换端口号继续发送检测报文,直到停止应用traceroute 程序。由此可以判断网络的连通情况。
本发明提供的实施例二参见图2,该图为应用traceroute程序检测应用 层故障节点的实现原理图。
通过现有技术的traceroute程序可以检测网络连通性,定位网络的故障节 点。但当网络中存在防火墙时,防火墙可能会禁止掉一些应用端口号和协议 类型。此时,通过现有技术的traceroute程序检测网络是连通的,但是用户服 务获取特定的服务,也就是说网络的应用层可能是不连通的。
图2为一个本发明应用在小型网络的另一实施例,终端PC10和应用服务器 14之间的网络跨越了两台路由器(路由器11和路由器13)和一台防火墙12, 防火墙12禁止了UDP端口号为12345的应用,各个网络设备的接口 IP地址如图2 中描述。通过本发明实施例提供的定位网络故障的方法,检测并定位到应用 层故障,具体流程描述如下步骤201 、 PC 10发出第一个UDP检测报文,并指定该第一个UDP检测报 文目的地址为4.4.4.2,端口号为12345, TTL为1。
步骤202、路由器11收到该第一个UDP检测报文,发现目的地址不是自己, TTL是1,于是构造TTL超时的ICMP差错报文发送给PC 10。该ICMP差错报文 的源地址是路由器ll的接口地址,目的地址是PC IO的地址。
步骤203、 PC 10端收到路由器11返回的ICMP差错报文后,记录下该报文 的源地址,即路由器ll的接口地址,由此知道PC 10端到应用服务器14网络中 的第一跳地址为1.1.1.2。
步骤204、 PC IO发出第二个UDP检测报文,并指定该第二个UDP检测报 文目的地址为4.4.4.2,端口号为12345, TTL为2。
步骤205、路由器11收到该第二个UDP检测报文,发现目的地址不是自己, TTL为2,因此把TTL减l后把该第二个UDP检测报文转发出去。
步骤206、防火墙12收到该第二个UDP检测报文,对于不同的防火墙12, 可能会有不同的处理,下面分成情形l、情形2.1、情形2.2三种情况分别加以 说明。
对于情形l,防火墙12发现对应的网络的应用层端口号(调整后的小于 30000的端口号)被禁止了 ,发送一个目的主机被禁止的ICMP差错报文,PC 10 收到该ICMP差错报文后,知道应用层故障节点即在IP地址为2.2.2.2的防火墙 12;
对于情形2.1,防火墙12发现目的地址不是自己,TTL是l,于是构造TTL 超时的ICMP差错报文发送给PC。 PC机把TTL力。1,发送了第三个UDP检测报 文。防火墙12收到该检测报文后,发现对应的应用层端口号(调整后的小于 30000的端口号)被禁止了 ,发送一个目的主机被禁止的ICMP差错报文,PC 10 收到该ICMP差错报文后,知道故障节点即在IP地址为2,2.2,2防火墙12;
对于情形2.2,防火墙12收到PC发出来的第三个UDP探测报文后,发现对 应的应用层端口号(调整后的小于30000的端口号)被禁止了,于是直接丢弃 了该检测报文,不发送ICMP差错报文;PC10等待一段时间后,把UDP端口 号换成10000后,发送第四个UDP探测报文。此时路由器13会回应一个TTL超时的ICMP差错报文,PC IO端收到该差错报文后,可以判断出路由器13前一 个节点,即防火墙12是故障节点。 '
上述本发明的实施例 一和实施例二通过应用traceroute程序时调整的检测 报文协议类型和端口号,可以使得根据traceroute程序指令,PC 10发出的UDP 4全测才艮文顺利穿越有防火墙的网络,并且可以对指定的应用层的网络连通性 进行检测。本发明实施例还可以扩充traceroute程序发出的检测报文的类型, 包括UDP、 TCP (不用现有自动发送)等,根据调整后的具体的检测报文的 协议类型和端口号信息,检测网络的网络层和网络的应用层的故障点。实施 例一和实施例二以UDP应用为例,描述了应用优化的traceroute程序4企测应 用层网络连通性,以及定位应用层网络故障的基本实现原理。
图3为本发明实施例提供的应用traceroute程序定位网络故障的一般方法 流程图,参照该图,包括步骤
30、 获知无法使用某种网络的故障;
31、 首先应用PING命令,检测网络到应用服务器的连通情况;
32、 判断是否PING通;
33、 如果PING不通,则可能是网络层无法连通,也可能是应用服务器故 障;如果能够PING通,则说明网络层是连通的,应用服务器也是正常运行的;
34、 应用传统的traceroute程序自动检测PC到应用服务器的连通情况;
35、 4企测网络是否连通;
36、 根据自动检测的检测报文的路由的轨迹判断网络的连通性;
37、 由于网络中可能存在防火墙、网关等设备,根据本发明实施例提供 定位网络故障的方法应用traceroute程序,调整协议类型和端口号,发出检测 报文,检测网络的连通性;
38、 结合自动检测的检测报文的路由的轨迹和调整协议类型和端口号后 检测报文的路由的轨迹定位网络故障的位置。
如果调整协议类型和端口号后应用traceroute程序连通成功,说明网络层 是正常的,可能是应用层故障;
如果调整协议类型和端口号后应用traceroute程序连通不成功,贝'j根据调 整协_议类型和端口号后应用traceroute程序连通的情况,以及应用传统的traceroute程序自动检测到的网络连通情况,判断确定出故障节点。即应用调 整协议类型和端d号后的检测报文中最后一个可以到达的节点后面一个节点 就是故障节点。
本发明实施例还提供一种应用traceroute程序定位网络故障的系统,参照 图4,该系统包括
信息获取单元41,用于获取网络连通的信息;
信息调整单元42,用于调整检测报文的协议类型和端口号;
检测报文发送单元43,发出调整文协议类型和端口号后的检测报文;
网络故障定位单元44,根据所述的检测报文在网络中的连通情况判断确 定网络故障的位置。
为了更好实现发明的目的,该定位网络故障的系统信息获取单元41,用 于自动检测网络到应用服务器连通状况,如果自动检测不成功,则网络层不 通;如果自动检测成功,则网络层连接是连通的。
在本发明实施例提供的定位网络故障的系统的所述的网络故障定位单元 44,如果应用调整协议类型和端口号后的检测报文连通成功,则网络层正常, 应用层故障;
上述所有本发明的实施例中应用traceroute程序时,调整后的检测报文的 协议类型可以为UDP、 ICMP或TCP或者其他任何协议类型,根据不同的应 用调整为不同的协议类型和端口号。
以上对本发明实施例所提供的一种定位网络故障的方法和系统,进行了 详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体 实施方式及应用范围上均会有改变之处,综上所述,本说明书实施例的内容 不应理解为对本发明的限制。
1权利要求
1、一种定位网络故障的方法,其特征在于,获取网络连通情况的信息;如果网络不通,则调整检测报文的协议类型和/或端口号;发出调整协议类型和/或端口号后的检测报文;根据调整协议类型和/或端口号后的检测报文检测到的网络连通情况判断确定网络故障的位置。
2、 如权利要求1所述的定位网络故障的方法,其特征在于,所述获取网 络连通情况的信息,具体包括自动检测网络到应用服务器连通状况,如果自动^^测不成功,则网络不 通;如果自动检测成功,则网络连接是连通的。
3、 如权利要求2所述的定位网络故障的方法,其特征在于,所述的根据所述调整协议类型和和/或端口号后的检测报文检测到的网络 连通情况判断确定网络故障的位置,具体包括如果应用调整协议类型和/或 端口号后的检测报文检测到网络连通成功,则判断网络层正常,应用层故障;如果应用调整协议类型和/或端口号后的检测报文检测到网络连通不成 功,则结合所述的自动检测的结果,判断确定网络故障的位置。
4、 一种定位网络故障的系统,其特征在于,包括信息获取单元,用于获取网络连通的信息;信息调整单元,用于调整检测报文的协议类型和/或端口号;检测报文发送单元,用于发出调整协议类型和/或端口号后的检测报文;网络故障定位单元,根据调整协议类型和/或端口号后的检测报文检测到 的网络连通情况判断确定网络故障的位置。
5、 如权利要求4所述的定位网络故障的系统,其特征在于,所述信息获 取单元,用于自动检测网络到应用服务器连通状况,如果自动检测不成功, 则网络层不通;如果自动检测成功,则网络层连接是连通的。
6、 如权利要求5所述的应用traceroute程序定位网络故障的系统,其特征在于,所述的网络故障定位单元,如果应用调整协议类型和/或端口号后的检测报文连通成功,则网络层正常,应用层故障;如果应用调整协议类型和/或端口号后的检测报文连通不成功,则结合应 用所述的自动检测的结果,判断确定故障的节点位置。
全文摘要
本发明涉及通信领域,本发明提供一种定位网络故障的方法,在应用traceroute程序时,动态调整检测报文协议类型、端口号,并发出经调整后的检测报文进行检测;根据应用traceroute程序检测到的网络中的连通情况判断确定网络故障的位置。并提供一种定位网络故障的系统,包括信息获取单元、检测报文发送单元和网络故障定位单元,本发明提供了一种检测定位特定应用的网络故障方法,解决了原来的traceroute程序使用固定的端口号、协议,无法对特定的网络及网络的应用层进行检测和故障点定位的问题。
文档编号H04L12/26GK101471822SQ200710307879
公开日2009年7月1日 申请日期2007年12月29日 优先权日2007年12月29日
发明者李教峰, 顾勤丰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1