OSPF故障诊断
OSPF:路由器无法建立邻居关系
现象描述:OSPF路由器没有建立起正确的邻居关系,导致路由信息无法交换。
1 ABR=area border router (区域边界路由器)
OSPF:路由丢失
现象描述:OSPF路由和网络没有向其它路由器宣告。某一区域内的路由器接收不到关于别的区域的路由信息。其它区域主机间不能进行通信,路由表不完整。
可能的原因 |
判断方法和解决方案 |
OSPF路由器不能建立邻居关系 |
参见上一章节中给出的步骤和程序。 |
来自IGRP或者RIP的路由信息没有正确地重新分布到OSPF中
|
步骤1
使用命令show running-config检查路由器配置。 步骤2 查找redistribute配置命令。确保配置了路由重新分布命令。 步骤3 如果没有配置redistribute,使用下列命令增加或者改变配置: ROUTER_config# |
区域中没有配置区域边界路由器(ABR)将该区域和OSPF主干区域进行隔离 | 步骤1
使用命令show running-config验证该区域中至少应该有一个ABR。ABR首先属于区域0(即主干区域),同时也属于另一区域。检查network命令是否把该路由器配置为区域0的一部分。 步骤2 如果该区域中没有ABR,需要使用network命令进行相应的配置。 例如,使用下列命令配置OSPF进程100参加OSPF主干区域: ROUTER_config# |
在帧中继网络上端口类型不匹配 | 在OSPF的帧中继环境中,如果链路一端是点到多点的端口类型,另一端是点到点的端口类型,在缺省情况下,点到多点端口会把链路作为非广播类型网络进行宣告,而点到点端口会把链路作为点到点类型网络进行宣告。这将在链路状态数据库中造成冲突,并可能妨碍路由信息的正确学习。 步骤1 在链路的每一端上检查路由器每个端口的网络类型是否匹配。使用命令show ip ospf interface可以检查端口的网络类型。 下面示例是命令show ip ospf interface的输出样本: Serial1/0 is up, line protocol is up 在本例中,网络类型是点到点类型的。 步骤2 通过配置子端口把点到点类型的端口变为点到多点类型,或者使用端口配置命令ip ospf network broadcast把点到点端口的网络类型改变为广播类型。 关于配置子端口的更多信息,请参考本公司路由器配置手册。 |
某个区域被配置成stub类型 |
重新分布的路由不可能出现在OSPF的stub区域中。任何外部路由都不会向stub区域中宣告。如果使用了配置命令area
area-id stub no-summary,任何汇总路由(区域间路由)也不会向stub区域中宣告。 步骤1 如果你想把汇总路由向stub区域中宣告,同时不想它们在路由表中出现,使用命令show running-config察看路由器的配置。 步骤2 检查是否配置了area area-id stub no-summary 。如果配置了这条命令,输入下列命令使其无效: ROUTER_config# 这条命令使关键词no-summary无效,同时路由器仍被配置为stub类型。 步骤3 需要向某个区域宣告外部路由,该区域一定不能配置成stub类型。 |
配置了错误的路由过滤 |
步骤1
使用命令show
running-config检查路由器的配置。 步骤2 察看路由器上是否配置了distribute-list in或者distribute-list out命令。 命令distribute-list in阻止LSA中的特定信息合并到OSPF路由表中。命令distribute-list out阻止路由器在发送路由更新时包含特定的信息。但在OSPF中,命令distribute-list out仅仅在自治系统边界路由器(ASBR)上配置用来过滤外部路由。 注意: 尽管命令distribute-list能够阻止特定信息合并到OSPF路由表中,但关于这些网络的信息仍然包含在链路状态数据库中并通过LSA在整个网络范围内进行扩散。这意味着:除非下游路由器也从路由表中过滤这些路由,否则,它们的路由表中将包含这些路由信息。 步骤3 如果路由器上配置了distribute-list命令,使用no形式的命令使其无效。 例如,使用下列命令将引用访问列表10的入栈过滤器无效: ROUTER_config_ospf_100# 步骤4 在取消所有的分布列表后,使用命令clear ip route清空路由表。 步骤5 使用命令show ip route检查路由表中是否出现期望的路由。如果路由存在,命令distribute-list所引用的访问列表可能禁止了某些路由更新。 步骤6 为了定位引发问题的分布列表,将列表一条一条地激活,直至路由在路由表中消失。 步骤7 使用命令show running-config检查访问列表,确保它没有禁止期望的路由更新。如果访问列表禁止了来自特定地址的路由更新,确保它没有将应当接收其更新的路由器禁止。改变访问列表的配置,允许路由器从适当的地址处接收更新。切记每个访问列表的末尾都隐含着一条deny any语句。 如果路由器要从某些地址接收更新,要对这些地址配置显式的permit语句。 步骤8 如果你改变了访问列表,使用命令distribute-list将该列表重新激活。使用命令clear ip route检查丢失的路由是否重新出现在路由表中。 步骤9 如果路由重新出现在路由表中,在路径上的每台路由器上执行上述步骤,直至即激活了分布列表,同时期望的路由信息也出现在路由表中。 关于配置访问列表的更多信息,请参考本公司路由器配置手册。 |
虚链路的配置配置错误 |
步骤1
在虚链路的每一端器上使用命令show
running-config检查路由器的配置。 检查配置语句area area-id virtual-link router-id 。这些命令用于配置虚链路。 步骤2 使用命令show ip ospf找出路由器的标识符(IP地址)。 步骤3 如果没有配置area area-id virtual-link router-id 命令,需要增加配置。如果原来的配置有错,需要将其改正。要确保命令中指定了正确的区域ID和路由器ID(IP地址)。位于虚链路两端的路由器之间必须经过传输区域进行相连。 例如,在下图所示的网络中,路由器B和A之间经过传输区域创建了一条虚链路。 在路由器A上输入下列命令: A_config# 在路由器B上,输入下列命令: B_config# |
1 LSA=link state
advertisement (链路状态宣告)
2 ASBR=autonomous system
border router(自治系统边界路由器)