吴玉林
【摘 要】 OSPF协议作为动态路由协议广泛应用于数据网络中,在日常运行维护过程中会经常遇到OSPF协议类故障问题,处理这类问题时只要掌握合适的技巧按照正确的步骤进行排查就能比较快速的定位和解决故障。
【关键词】 OSFP 故障处理 邻居关系 系统规划 骨干区域与其他区域
【Abstract】 Open Shortest Path First(OSPF) has been widely used as the dynamic routing path in data network. Functional failure of OSPF is a common problem in its daily maintenance.Proper techniques and correct protocols help positioning and dealing with the malfunction of OSPF.
【Key words】 OSFP Fault handling Neighbor relations System planning Backbone area and other area
0 OSPF协议常见故障分类
在数据网运行维护环境中,导致OSPF协议不能正常运行的故障有很多,通过分析故障原因,很多的故障原因是相似的,总结起来主要有以下几点:(1)自身数据配置错误引起的OSPF协议故障;(2)两台相邻路由器之间的故障引起网络中路由错误;(3)系统规划时区域划分不准确引起的故障;(4)其他一些不常见因素引起的OSPF故障。
1 OSPF故障处理思路
1.1 故障分析和处理步骤
由于OSPF协议自身的复杂性,在配置的过程中可能会出现种种错误。
OSPF协议正常运行的标志是:在每一台运行OSPF协议的路由器上,应该得到的路由一条也不少,并且都是最优路径。
所以在处理OSPF故障时需要首先掌握排除故障的步骤顺序,按照顺序依次检查则能比较迅速定位故障点来排除故障。
在由OSPF协议维护的路由网络中发现通信不正常时,先采用ping的方式检查是网络的问题还是上层应用的问题。如果确实无法ping通,这时我们可以采用tracert的方式检查报文是在哪里转发不过去的,然后登陆到那台设备上检查。如果发现是OSPF路由的问题,即路由表里应该通过OSPF协议学习到的路由但实际上没有学习时,我们就要按照下列步骤逐步查看。
在数据网中出现OSPF协议故障时,可以按照以下步骤进行处理:(1)配置故障处理:检查是否已经启动并正确配置了OSPF协议。(2)局部故障处理:检查两台直接相连的路由器之间协议运行是否正常。(3)全局故障处理:检查一下系统设计(主要是指区域的划分、地址和掩码的配置)是否正确。(4)其它疑难问题:路由时通时断、路由表中存在路由却无法Ping通该地址。需要针对不同的情况具体分析。
1.2 检查协议配置
在排查故障之前,应首先检查基本的协议配置是否正确。
(1)是否已经配置Router ID。可以使用命令来检查Router ID是否已配置,如果配置错误或未配置则通过命令进行修改Router ID。Router ID可以配置为与本路由器一个接口的IP地址相同。需要注意的是:不能有任何两台路由器的Router ID是完全相同的。
(2)检查是否已经正确引入了所需要的外部路由。实际运行中经常需要引入自治系统外部路由(其它路由协议如BGP或静态路由)。如果需要,检查是否已经配置了引入。
(3)检查OSPF配置的邻居是否正确。
1.3 查看邻居路由器器件工况
由于OSPF协议需要整个自治系统中所有路由器协调工作,故任意两台相邻路由器之间的故障都会导致网络中全部或者部分路由错误。
OSPF路由计算的过程是:路由器自动发现网络中的邻居,然后选举DR(多路访问网络中),交互链路状态信息LSA,当LSA同步后即建立了邻接关系时才能根据SPF算法计算路由。所以邻居关系的建立是OSPF路由计算的前提条件,邻居关系不正常时OSPF的路由是无法计算出的。
如何判断相邻的路由器之间运行正常呢?在两台路由器上分别执行“showipospf neighbor”命令,查看在相应的接口上是否已发现对端路由器为自己的邻居,并且邻居状态机达到full状态。如果有邻居但是关系不正确,不是full状态,那么就需要检查是接口MTU值不同还是有IP地址冲突等导致了邻居关键无法正常建立;如果是邻居关系建立正确,但就是没有计算出相关路由就要检查路由配置是否正确,数据库信息是否正确。(如图1)
需要注意的是:在Broadcast和NBMA类型的网络中,两台接口状态是DROther的路由器之间邻居状态机停留在2-Way状态,这是正常的,但都应该与DR之间达到Full状态。
两台路由器之间达到Full需要一定的时间,一般在几秒钟至3分钟之间为正常。如果超过这段时间仍旧没有发现邻居或没有达到Full状态,则可以判断为出现故障。若出现故障可按下列几点来检查。
(1)检查物理连接及下层协议是否正常运行。OSPF正常运行需要下层协议来发送和接收报文,所有必须确保下层协议运行无误。可以通过ping命令测试,若从本地路由器ping对端路由器不通,则表明物理连接和下层协议有问题。但需要注意的是:ping命令发送的是单播报文,而OSPF除了在NBMA类型的接口之外,都发送的是多播报文。所以除了能够Ping通对端之外,还必须具有能够收发多播报文的能力。
(2)检查双方在接口上的配置是否一致。如果物理连接和下层协议正常,则检查在接口上配置的OSPF参数,必须保证和与该接口相邻的路由器的参数一致。这些参数包括Hello时间、dead时间、Area-ID和Authentication password。区域(area)号必须相同,网段与掩码也必须一致(点到点与虚连接的网段与掩码可以不同)。endprint
(3)若网络的类型为广播或NBMA,至少有一台路由器的priority应大于零。根据OSPF协议规定,接口的priorty=0的路由器没有被选举权,即不能被选为DR或者BDR。而在广播或NBMA类型网络中所有的路由器只与DR之间交换路由信息,所以至少应有一台路由器的priority大于零。
(4)区域的STUB属性必须一致。如果一个Area配置成STUB Area,则在与这个区域相连的所有路由器中都应该将该区域配置成STUB Area。
(5)接口的网络类型必须一致。两台直接相连的路由器,它们之间的接口的网络类型必须一致,否则可能无法正确计算出路由。
查看接口的网络类型可以使用命令“showospf interface”,如发现双方类型不一致,可使用接口配置模式下的命令“ospf network-type”来修改。需要特别注意的是:当两台路由器的接口类型不一致时,双方的邻居状态机仍旧有可能达到Full状态,但无法正确计算路由。
1.4 系统规划检查
系统规划中的故障主要体现在区域划分中的错误。协议中对区域划分的要求是:如果自治系统被划分成一个以上的区域,则必须有一个区域是骨干区域,并且保证其他区域与骨干区域,并且保证其他区域与骨干区域直接相连或逻辑上相连。骨干区域自身也必须是连通的。
区域划分错误的表现形式是:在一个区域内通常路由都是正常的,但无法得到区域外部的路由。这是从全局规划的角度来看的,如果落实到具体的配置上,可以这样认为:如果在一台路由器上配置了两个以上的区域,则至少应有一个是骨干区域,或配置了一条虚连接。(如图2)
1.5 其他方面的检查和处理
如果经过以上分析之后,仍无法定位错误产生的原因,可按照下列现象进行分析。
(1)路由表中丢失部分路由。可以查询一下是否本路由器配置了路由过滤。如果配置了,再查询访问规则,是否丢失的路由恰好是访问列表中所过滤的。
(2)路由表不稳定,时通时断。表现形式为:路由表中的部分或者全部路由表现不稳定,一会儿加上了,一会儿又丢失,且变化很快。这种错误不太好分析,可能由以下几种原因产生。
1)网络中线路质量不好,导致线路时通时断,造成OSPF的路由随之不停的更改。可以通过检查相应的链路层协议是否正常来定位问题的原因。
2)在拨号的情况下,如果是多台路由器同时拨一台路由器时,应将所有的这些拨号的接口类型改为point-to-multipoint。如果不加更改的,当有多台路由器同时拨入时,接入方会在这些拨入的路由器之间不停的选择其中的一个并建立邻接关系,导致路由不稳定。
3)有可能是自治系统中有两台路由器的Router ID相同了。协议中规定,一台路由器的Router ID应该在整个自治系统中唯一。如果有两台路由器的Router ID相同,协议运行就会出现故障。
这两台路由器如果是邻居,在相互接收对方Hello报文时会检测到这一错误,导致无法成功建立邻接关系。如果这两台路由器不是直接相连,而是分别位于自治系统中的两个不同的地方,则表现出的现象是部分路由时断时通。可以通过查看这部分不正常路由所属的路由器来定位此问题。
(3)无法引入自治系统外部路由。某台路由器引入了自治系统外部路由后,却无法在其他路由器上发现这些路由。则很可能是由于本路由器处于一个STUB区域之内。因为按照协议规定,STUB区域内不传播Type5类型的LSA。所以这种类型的LSA即不能由区域外传播进来,也同样不能由区域内传播出去。实际上即使同一个区域内的其它路由器也无法获得这些路由信息。
(4)区域间路由聚合的问题。通过在ABR上配置路由聚合可以大大减少自治系统中的路由信息,但是,如果配置不当,就会导致路由出现错乱,所以在规划时需要特别注意。
2 结语
OSPF协议作为动态路由协议广泛应用于数据网络中,为数据网络组网带来了很大的灵活性和便利性,在数据网络中OSPF协议占据着很重要的地位。由于OSPF协议在数据网络中有着广泛应用,所以在日常运行维护过程中会经常遇到OSPF协议类故障问题,在碰到这些问题时需要掌握有效的故障处理技巧,按照故障处理步骤进行逐步排查就较容易将问题解决,同时也要注意在数据网络建设初期规划时对OSPF区域进行合理划分,通过这些手段来保障数据网络的稳定运行。
参考文献:
[1]《CCNP思科网络技术学院教程》,Mark McGregor著李逢天,张帆,程实翻译.人民邮电出版社,2002.endprint
(3)若网络的类型为广播或NBMA,至少有一台路由器的priority应大于零。根据OSPF协议规定,接口的priorty=0的路由器没有被选举权,即不能被选为DR或者BDR。而在广播或NBMA类型网络中所有的路由器只与DR之间交换路由信息,所以至少应有一台路由器的priority大于零。
(4)区域的STUB属性必须一致。如果一个Area配置成STUB Area,则在与这个区域相连的所有路由器中都应该将该区域配置成STUB Area。
(5)接口的网络类型必须一致。两台直接相连的路由器,它们之间的接口的网络类型必须一致,否则可能无法正确计算出路由。
查看接口的网络类型可以使用命令“showospf interface”,如发现双方类型不一致,可使用接口配置模式下的命令“ospf network-type”来修改。需要特别注意的是:当两台路由器的接口类型不一致时,双方的邻居状态机仍旧有可能达到Full状态,但无法正确计算路由。
1.4 系统规划检查
系统规划中的故障主要体现在区域划分中的错误。协议中对区域划分的要求是:如果自治系统被划分成一个以上的区域,则必须有一个区域是骨干区域,并且保证其他区域与骨干区域,并且保证其他区域与骨干区域直接相连或逻辑上相连。骨干区域自身也必须是连通的。
区域划分错误的表现形式是:在一个区域内通常路由都是正常的,但无法得到区域外部的路由。这是从全局规划的角度来看的,如果落实到具体的配置上,可以这样认为:如果在一台路由器上配置了两个以上的区域,则至少应有一个是骨干区域,或配置了一条虚连接。(如图2)
1.5 其他方面的检查和处理
如果经过以上分析之后,仍无法定位错误产生的原因,可按照下列现象进行分析。
(1)路由表中丢失部分路由。可以查询一下是否本路由器配置了路由过滤。如果配置了,再查询访问规则,是否丢失的路由恰好是访问列表中所过滤的。
(2)路由表不稳定,时通时断。表现形式为:路由表中的部分或者全部路由表现不稳定,一会儿加上了,一会儿又丢失,且变化很快。这种错误不太好分析,可能由以下几种原因产生。
1)网络中线路质量不好,导致线路时通时断,造成OSPF的路由随之不停的更改。可以通过检查相应的链路层协议是否正常来定位问题的原因。
2)在拨号的情况下,如果是多台路由器同时拨一台路由器时,应将所有的这些拨号的接口类型改为point-to-multipoint。如果不加更改的,当有多台路由器同时拨入时,接入方会在这些拨入的路由器之间不停的选择其中的一个并建立邻接关系,导致路由不稳定。
3)有可能是自治系统中有两台路由器的Router ID相同了。协议中规定,一台路由器的Router ID应该在整个自治系统中唯一。如果有两台路由器的Router ID相同,协议运行就会出现故障。
这两台路由器如果是邻居,在相互接收对方Hello报文时会检测到这一错误,导致无法成功建立邻接关系。如果这两台路由器不是直接相连,而是分别位于自治系统中的两个不同的地方,则表现出的现象是部分路由时断时通。可以通过查看这部分不正常路由所属的路由器来定位此问题。
(3)无法引入自治系统外部路由。某台路由器引入了自治系统外部路由后,却无法在其他路由器上发现这些路由。则很可能是由于本路由器处于一个STUB区域之内。因为按照协议规定,STUB区域内不传播Type5类型的LSA。所以这种类型的LSA即不能由区域外传播进来,也同样不能由区域内传播出去。实际上即使同一个区域内的其它路由器也无法获得这些路由信息。
(4)区域间路由聚合的问题。通过在ABR上配置路由聚合可以大大减少自治系统中的路由信息,但是,如果配置不当,就会导致路由出现错乱,所以在规划时需要特别注意。
2 结语
OSPF协议作为动态路由协议广泛应用于数据网络中,为数据网络组网带来了很大的灵活性和便利性,在数据网络中OSPF协议占据着很重要的地位。由于OSPF协议在数据网络中有着广泛应用,所以在日常运行维护过程中会经常遇到OSPF协议类故障问题,在碰到这些问题时需要掌握有效的故障处理技巧,按照故障处理步骤进行逐步排查就较容易将问题解决,同时也要注意在数据网络建设初期规划时对OSPF区域进行合理划分,通过这些手段来保障数据网络的稳定运行。
参考文献:
[1]《CCNP思科网络技术学院教程》,Mark McGregor著李逢天,张帆,程实翻译.人民邮电出版社,2002.endprint
(3)若网络的类型为广播或NBMA,至少有一台路由器的priority应大于零。根据OSPF协议规定,接口的priorty=0的路由器没有被选举权,即不能被选为DR或者BDR。而在广播或NBMA类型网络中所有的路由器只与DR之间交换路由信息,所以至少应有一台路由器的priority大于零。
(4)区域的STUB属性必须一致。如果一个Area配置成STUB Area,则在与这个区域相连的所有路由器中都应该将该区域配置成STUB Area。
(5)接口的网络类型必须一致。两台直接相连的路由器,它们之间的接口的网络类型必须一致,否则可能无法正确计算出路由。
查看接口的网络类型可以使用命令“showospf interface”,如发现双方类型不一致,可使用接口配置模式下的命令“ospf network-type”来修改。需要特别注意的是:当两台路由器的接口类型不一致时,双方的邻居状态机仍旧有可能达到Full状态,但无法正确计算路由。
1.4 系统规划检查
系统规划中的故障主要体现在区域划分中的错误。协议中对区域划分的要求是:如果自治系统被划分成一个以上的区域,则必须有一个区域是骨干区域,并且保证其他区域与骨干区域,并且保证其他区域与骨干区域直接相连或逻辑上相连。骨干区域自身也必须是连通的。
区域划分错误的表现形式是:在一个区域内通常路由都是正常的,但无法得到区域外部的路由。这是从全局规划的角度来看的,如果落实到具体的配置上,可以这样认为:如果在一台路由器上配置了两个以上的区域,则至少应有一个是骨干区域,或配置了一条虚连接。(如图2)
1.5 其他方面的检查和处理
如果经过以上分析之后,仍无法定位错误产生的原因,可按照下列现象进行分析。
(1)路由表中丢失部分路由。可以查询一下是否本路由器配置了路由过滤。如果配置了,再查询访问规则,是否丢失的路由恰好是访问列表中所过滤的。
(2)路由表不稳定,时通时断。表现形式为:路由表中的部分或者全部路由表现不稳定,一会儿加上了,一会儿又丢失,且变化很快。这种错误不太好分析,可能由以下几种原因产生。
1)网络中线路质量不好,导致线路时通时断,造成OSPF的路由随之不停的更改。可以通过检查相应的链路层协议是否正常来定位问题的原因。
2)在拨号的情况下,如果是多台路由器同时拨一台路由器时,应将所有的这些拨号的接口类型改为point-to-multipoint。如果不加更改的,当有多台路由器同时拨入时,接入方会在这些拨入的路由器之间不停的选择其中的一个并建立邻接关系,导致路由不稳定。
3)有可能是自治系统中有两台路由器的Router ID相同了。协议中规定,一台路由器的Router ID应该在整个自治系统中唯一。如果有两台路由器的Router ID相同,协议运行就会出现故障。
这两台路由器如果是邻居,在相互接收对方Hello报文时会检测到这一错误,导致无法成功建立邻接关系。如果这两台路由器不是直接相连,而是分别位于自治系统中的两个不同的地方,则表现出的现象是部分路由时断时通。可以通过查看这部分不正常路由所属的路由器来定位此问题。
(3)无法引入自治系统外部路由。某台路由器引入了自治系统外部路由后,却无法在其他路由器上发现这些路由。则很可能是由于本路由器处于一个STUB区域之内。因为按照协议规定,STUB区域内不传播Type5类型的LSA。所以这种类型的LSA即不能由区域外传播进来,也同样不能由区域内传播出去。实际上即使同一个区域内的其它路由器也无法获得这些路由信息。
(4)区域间路由聚合的问题。通过在ABR上配置路由聚合可以大大减少自治系统中的路由信息,但是,如果配置不当,就会导致路由出现错乱,所以在规划时需要特别注意。
2 结语
OSPF协议作为动态路由协议广泛应用于数据网络中,为数据网络组网带来了很大的灵活性和便利性,在数据网络中OSPF协议占据着很重要的地位。由于OSPF协议在数据网络中有着广泛应用,所以在日常运行维护过程中会经常遇到OSPF协议类故障问题,在碰到这些问题时需要掌握有效的故障处理技巧,按照故障处理步骤进行逐步排查就较容易将问题解决,同时也要注意在数据网络建设初期规划时对OSPF区域进行合理划分,通过这些手段来保障数据网络的稳定运行。
参考文献:
[1]《CCNP思科网络技术学院教程》,Mark McGregor著李逢天,张帆,程实翻译.人民邮电出版社,2002.endprint