要在对可能的IPv4路由协议问题进行故障排除时,首先需要把问题逐步隔离,例如请首先关注接口,然后关注邻居。
路由协议配置标识路由器应在其上使用路由协议的接口。识别出这些接口之后,网络工程师可以查看每个路由器在每个接口上找到的邻居,搜索应该存在但不存在的邻居。
本文首先简要介绍一些与EIGRP 和 OSPF 路由协议问题进行故障排除相关的广泛概念 。
路由协议问题故障排除
由于路由协议的工作是用当前最佳的路由填充路由器的路由表,因此从IP路由表开始对路由协议的潜在问题进行故障排除是很有意义的。
例如,下图显示了具有六个子网的互联网络。路由器R1的路由表应列出所有六个子网,包括三个连接的路由,从R2获知的两个路由(172.16.4.0/24和172.16.5.0/24)和从R3获知的一个路由(172.16.6.0/24)。
一种可能的故障排除过程是分析互联网络,查看路由表,并寻找丢失的路由。如果缺少一条或多条预期路由,则下一步将是确定该路由器是否已从预期的下一跳(邻居)路由器获悉任何路由。
如果路由器在与另一台路由器形成邻居关系时遇到问题,而与工作中的邻居关系存在问题但不能学习所有路由,则下一步解决问题的方法将大不相同。
例如,假设图中的R1已经学习了子网172.16.4.0/24的路由,但是没有子网172.16.5.0/24的路由。在这种情况下,很明显R1与R2具有工作邻居关系。在这些情况下,此问题的根本原因可能仍然与路由协议有关,或者可能与路由协议无关。
例如,问题可能是R2的下部LAN接口已关闭。但是,如果R1没有到172.16.4.0/24或172.16.5.0/24的路由,则可能是R1与R2的邻居关系。
使用路由协议启用的接口
本文的此部分检查如何验证已启用路由协议的接口。EIGRP和OSPF配置都使用network router子命令在接口上启用路由协议。对于网络命令匹配的任何接口,路由协议尝试以下两个操作:
- 尝试在连接到接口的子网上查找潜在邻居
- 公布连接到该接口的子网
同时,可以配置passive-interface router子命令,以使路由器不会尝试在接口上查找邻居,但仍会通告连接的子网。
在Cisco设备中,我们仅需三个show命令即可确切地知道哪些接口已通过EIGRP启用,哪些接口是被动的。特别是,show ip eigrp interfaces命令列出了不是被动接口的所有启用EIGRP的接口。
所述 节目IP协议 命令基本上列出了每个路由协议和被动接口的单独列表的配置的网络命令的内容。比较这两个命令,可以确定所有启用了EIGRP的接口以及那些是被动接口。
对于OSPF,该命令的工作原理略有不同,其中show ip ospf interface brief 命令列出了所有启用OSPF的接口(包括被动接口)。使用此命令以及show ip protocol命令列出的被动接口列表,可以再次标识所有完全启用的OSPF接口以及所有被动接口。
下表总结了这些命令,以方便参考。
路由协议邻居关系
在EIGRP或OSPF路由器听到新邻居发出的Hello消息后,路由协议会检查Hello消息中的信息,并将该信息与本地路由器自己的设置进行比较。如果设置匹配,那就太好了。如果不是,则路由器不会成为邻居。
因为路由协议考虑的所有这些项目都没有正式的术语,所以本书仅称其为邻居要求。下表列出了EIGRP和OSPF的邻居要求:
1具有重复的EIGRP RID不会阻止路由器成为邻居,但是当将外部EIGRP路由添加到路由表时,这可能会引起问题。
与上表中列出的大多数邻居要求不同,前三个要求与路由协议本身几乎没有关系。这两个路由器必须能够通过它们都连接到的物理网络相互发送数据包。为此,路由器接口必须处于启动/启动状态,并且必须位于同一子网中。另外,路由器一定不能使用过滤路由协议流量的ACL。
例如,OSPF将许多消息发送到众所周知的多播IP地址224.0.0.5和224.0.0.6,而EIGRP使用224.0.0.10。 像访问列表101这样的 ACL命令在路由器接口上的入站ACL中拒绝ip主机224.0.0.10中的任何主机,将过滤传入的EIGRP数据包。或者,像访问列表102一样拒绝任何ospf的ACL命令可以过滤所有OSPF流量。因此,请格外小心以注意ACL,尤其是当所有路由协议配置看起来都不错时。
在检查为什么两个路由器不成为邻居的其余细节之前,请确认两个路由器可以在本地子网上相互ping通。如果ping失败,请调查所有可能导致ping无法正常工作的第1层,第2层和第3层问题,例如接口无法启动/启动。