在本课中,你将了解OSPF以及如何监控和排除故障。
完成本课后,你应该能够实现上图显示的目标。
通过展示理解OSPF的能力,你将能够理解、监控和排除OSPF的故障。
在本节中,你将简要回顾OSPF。
使用OSPF等链路状态协议,每个路由器都可以完整地查看网络拓扑结构。OSPF的优势包括可扩展性和快速收敛。每30分钟,路由器会再次发布他们的OSPF信息。在这30分钟的间隔中,路由器仅在检测到拓扑变化时才会发送更新。因此,只要网络拓扑结构稳定,它就是一个相对安静的协议。在大型网络中,使用OSPF需要良好的规划,并且可能难以排除故障。
同一区域的每个路由器都有相同和同步的数据库。在本课的后面,你将了解OSPF领域。OSPF路由器使用LSDB和Dijkstra算法中的信息来生成OSPF树,该树包含从本地路由器到彼此路由器和网络的最短路径。该树提供了每个目的地的最佳路由,这是OSPF可以注入设备路由表的信息。
LSA包含OSPF对等交换的拓扑信息。路由器的LSDB填充了来自本地LSA和从其他路由器接收的所有LSA的信息。
两个OSPF对等端之间的会话被称为邻接。上图显示了两个正在形成相邻的对等之间的初始交换。任何新的邻接都会经历不同的状态:Init、2way、ExStart、Exchange、Loading和Full。Full状态表示相邻已成功形成,并且两个路由器都有相同的LSDB副本。
上图列出了两个对等形成OSPF邻接的要求。如果不满足任何要求,邻接失效,将无法达到完整状态。
在本节中,你将学习监控OSPF所需的命令。
上图显示的命令提供了有关OSPF过程的详细信息。
上图的命令显示了路由器所属的每个区域的信息。
有关每个接口的OSPF信息,请使用上图显示的命令。它显示:
● 网络类型,在这种情况下广播多址
● 如果接口是DR或BDR
● DR和BDR ID和IP地址
● 邻接数和流量统计
上图的命令显示了所有OSPF邻居的状态摘要。对于每个邻居,它显示邻接状态,以及接口是DR、BDR还是两者都不是(DROther)。如果邻居在点对点网络中,响应在状态后显示破折号。
上图显示的命令提供了FortiGate上所有LSDB条目的摘要,按LSA类型排序。它首先显示1型LSA(路由器链接状态),然后是2型LSA(净链接状态),最后是5型LSA(AS外部链接广告)。您可以通过以下图片中显示的命令查看有关每个类型1链接ID的详细信息。
使用上图所示的命令查看类型1 LSA的详细信息。link state ID对应get router info ospf database brief命令提供的Link ID。
上图显示了命令get router info ospf database router lsa的更多输出示例。
上图显示的命令列出了来自本地FortiGate的LSA,路由器ID为0.0.0.2。
在本节中,你将了解对OSPF问题进行故障排除的工具和技巧。
按照以下步骤对两个对等之间的OSPF问题进行故障排除:
● 检查本地路由器是否能够到达远程对等端。IP地址必须位于同一子网中,并具有相同的子网掩码。
● 确保IP协议89没有被阻止。
● Hello和dead间隔必须匹配。
● 每个对等端的OSPF路由器ID必须是唯一的。不允许重复路由器ID。
● MTU匹配吗?
● 如果启用了身份验证,类型和密码必须在两边匹配。
OSPF实时调试显示有关邻接建立和OSPF错误的信息。它还显示了有关网络拓扑变化的信息。
你可以启用z1标志,以便在路由进程重启后持续进行实时调试。
这是OSPF实时调试生成的示例输出。此示例显示了正在发送的Hello数据包。
这是OSPF实时调试生成的另一个示例输出。此示例显示了正在接收的Hello数据包。
上图展示了当邻接失败时OSPF实时调试的输出样本。此时OSPF认证失败。我们可以看到DR发送了一个AuType 1的Hello消息,表示配置了身份验证,并且需要成功的邻接。从邻居路由器接收到的HELLO报文中,AuType为0,因此收到HELLO报文中的错误信息表明认证类型不匹配。在这种情况下,认证方法必须在两端匹配才能建立邻接关系。
上图显示了有助于解决常见邻接问题的其他错误消息。Authentication Error对端认证类型相同,但配置的密码不同。通过HelloInterval mismatch/RouterDeadInterval mismatch的错误消息,可以确认hello或dead间隔定时器不匹配。错误信息:MTU size is too large, MTU不匹配。
在上图所示的场景中,FGT-A被配置为重新分配所有静态路由。注意默认情况下不发布默认静态路由。此时只发布8.8.8.8/32路由。
查看FGT-B上的路由表,路由表中没有发布的路由8.8.8.8/32。get router info ospf database brief命令用来查看LSDB,确认路由发布成功。这也验证了FGT-A和FGT-B之间成功的OSPF邻接。
场景2中的问题是,FGT-B配置了一个distribute-list-in,拒绝将8.8.8.0/24网络中的任何子网注入路由表。在config route ospf下配置distribute-list-in。该列表本身在config router prefix-list中配置。
解决这个问题的推荐方法是在适用于OSPF配置的前缀列表中添加另一个规则。在这种情况下,更改为Deny-8.8.8.0/24前缀列表。要让FortiOS将路由从LSDB注入路由表,你必须添加子网8.8.8.8/32。与防火墙策略不同,列表不是自上而下评估的。列表中的每条规则都经过检查。
上图显示的路由表确认FGT-A的发布路由已成功注入。你还可以看到distribution-list-in命令对LSDB没有影响。
在上图的场景中,FGT-A是一个区域边界路由器(ABR),在OSPF区域0.0.0.0和0.0.0.5中具有接口。FGT-C充当自主系统边界路由器(ABSR),将静态路由导入OSPF。FGT-B是一个内部路由器,其所有接口都属于0.0.0.5区域。
get router info ospf database brief命令在FGT-A上省略的输出显示OSPF区域0.0.0.0中从FGT-C (路由ID 0.0.0.3)收到的类型5 LSA。
在FGT-B上查看LSDB摘要显示,类型5 LSA没有从FGT-A转发到FGT-B。没有AS外部链接状态。造成这种情况的原因是什么?
FortiGate B的LSDB中没有接收到类型5 LSA的原因是区域0.0.0.5被配置为存根区域。存根区域阻断类型5 LSA。解决方案是将区域0.0.0.5的类型更改为常规区域,或在FGT-B上配置静态路由,以模仿ASBR发布的路由。
默认情况下,FortiGate记录最重要的OSPF路由事件,例如:
● 邻居下线或上线
● OSPF消息交换
● 协商错误
你可以在GUI上查看与OSPF相关的路由器事件。你可以单击任何已登录的条目来查看详细信息。
上图展示了你在本课中涵盖的目标。
通过掌握本课中涵盖的目标,你了解了OSPF概念,以及如何配置OSPF和排除故障。