【网络协议】开放式最短路径优先协议OSPF详解(二)
前言
第一部分:【网络协议】开放式最短路径优先协议OSPF详解(一)
在第一部分中,我们了解了链路状态路由协议并讨论了 OSPF 的工作原理,同时学习了如何配置 OSPF。在本章的第二部分中,我们将进一步探讨 OSPF 的一些概念,例如 OSPF 的度量值、OSPF 更新的抑制以及默认路由的重分发。
文章目录
- 前言
- OSPF 度量值
- 抑制 OSPF 更新
- 重分发默认路由
OSPF 度量值
在 OSPF 中,用于决定到目标网络最佳路径的度量值是成本(Cost)。成本是根据链路上的可用带宽来决定的。可以通过修改该值来影响度量值的计算结果。
下表显示了我们可以在网络中使用的各种链路上的不同成本。
当路由器在 OSPF 中计算度量值时,会将每个链路通往目标网络的成本相加。累积成本随后被用作度量值。
可以使用命令 show ip ospf interface <interface name> <interface ID>
来查看 OSPF 中链路的成本。
在某些情况下,我们希望调整某条链路的成本。可以通过在需要修改的接口中使用命令 bandwidth <interface_Bandwidth>
来完成。这将改变路由器用于计算成本的带宽值。命令结构如下所示:
Router(config-if)#bandwidth <interface_bandwidth>
我们还可以使用 ip ospf cost
命令在接口中直接修改成本。这将把链路的成本更改为指定的值。该命令需要在希望更改成本的接口中执行,命令格式如下:
Router(config-if)#ip ospf cost <COST_VALUE>
此命令会将链路成本修改为管理员配置的特定值。
在第一部分中,我们配置了 OSPF 的基本选项。在这一部分的实验中,我们将继续修改 R1 的 serial 0/0 链路的成本。
首先,我们需要验证 R1 上 serial 0/0 当前的成本。可以在 R1 的特权模式中使用 show ip ospf serial0/0
命令完成验证。以下是该命令的输出结果:
从输出中可以看到,该链路的成本为 64。我们可以确认,从 R1 学到的路由的度量值将为 64 或更高。我们将使用 R1 的邻居 R2 进行验证。
如上图红色标记所示,从 R1 学到的网络 192.168.1.0/28 的度量值为 65,比该链路配置的带宽对应的成本增加了 1。
在我们的场景中,我们需要将该成本更改为自定义的值,这里设置为 10。为此,请进入 R1 的 serial 0/0 接口并输入以下命令:
这将指定该链路的成本应为 10,而不是 64。可以使用 show ip ospf interface s0/0
命令进行验证,如下输出中用红色高亮部分所示。
然而,仔细查看路由表可以发现,R2 仍然从 R1 接收度量值为 65 的路由。这是因为该命令需要在链路的两端执行才能生效。因此,我们还需要在 R2 的 s0/0 接口上执行 ip ospf cost 10
命令,如下所示:
这将使该链路的成本变为 10。根据 R2 的路由表,对于由 R1 宣告的网络 192.168.1.0/28,新更改将得到反映,如下输出所示:
如上所示,192.168.1.0/28 路由的新度量值为 11。
更改 OSPF 链路上的度量值是调整的一部分,目的是为了手动选择优先路径而非另一条路径。
注意:通常不建议更改度量值,因为这可能会导致负面结果。
抑制 OSPF 更新
在某些场景下,我们可能需要限制通过某些接口发送的更新。例如,以下是我们场景中的情况:
如拓扑图中所示,我们不需要向用红色箭头标记的 FastEthernet 接口发送路由更新,因为它们连接的是用户网络。这是没有必要的,并且可能会带来安全风险。为了防止路由更新传播到这些接口,我们需要将它们配置为被动接口,就像在 EIGRP 中所做的一样。
为此,请在每台路由器的 OSPF 配置模式下输入以下命令:
此命令执行后,将停止指定的接口发送 OSPF 更新。
注意:此命令的替代方法是将路由器上的所有接口配置为被动接口,然后在需要发送 OSPF 更新的每个接口上取消此命令。
重分发默认路由
在许多场景中,我们可能需要从企业网络访问其他外部网络。连接到互联网就是其中一种场景,类似于 EIGRP,我们需要配置一条路由,将所有未知流量引导到互联网。
在本节中,我们将把一个静态定义的路由重分发到 OSPF 网络中。
下图所示的拓扑结构中,包含 3 台路由器,它们位于 OSPF 域内,R1 的链路连接企业网络与互联网。所有路由器都位于 OSPF 1 区域 0,R1 通过 serial 0/2 接口连接互联网,该接口已分配了公共 IP 地址 87.155.23.9/30。
在此场景中,我们需要确保其他路由器能够访问互联网。这一连接将通过 R1 完成。
在我们的场景中,基本配置已经完成,所有接口都是活动的。我们将只配置 OSPF 和指向互联网的默认路由。
使用的 IP 地址规划如下所示:
首先,我们在三台路由器上配置 OSPF。三台路由器的配置命令如下表所示:
在所有路由器上完成 OSPF 配置后,我们需要在 R1 上配置指向互联网的静态默认路由,通过 serial 0/2 接口。为此,我们使用以下命令:
ip route 0.0.0.0 0.0.0.0 s0/2
配置完成后,我们可以检查每台路由器的路由表,以查看是否有任何变化:
如上所示,在 R1 上执行 show ip route
命令的输出中,可以看到一个静态默认路由,标记为 “S*”,位于输出的底部,并且被标记为“最后的后备网关”。这意味着,任何在 R1 路由表中没有匹配的包都会通过 s0/2 接口转发。
然而,在 R2 和 R3 上,我们仍然没有看到默认路由,如下面的 ip route
输出所示。
R2 和 R3 都没有“最后的后备网关”或默认路由。因此,我们需要将此路由从 R1 重分发到这些路由器。
与 EIGRP 不同,在 OSPF 中用来重分发默认路由的命令是 default-information originate
,该命令需要在路由器配置模式下执行。
在 R1 上,进入 OSPF 配置模式并输入以下命令:
R1(config-router)#default-information originate
此命令将把配置的静态默认路由重分发到 OSPF 域中的所有其他路由器。我们可以通过查看 R2 的路由表来验证这一点。根据下面的输出,可以看到路由器学习到了一个新网络,标记为 O*E2,用蓝色高亮显示。这意味着该路由是一个类型 2 外部网络,被重分发到 OSPF 中。此外,我们还可以看到 R2 现在拥有了一个默认路由,如红框所示。