IP : 开放最短路径优先 (OSPF)

与 OSPF 转发地址有关的常见路由问题

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

本文档介绍与开放最短路径优先 (OSPF) 转发地址有关的概念和问题。请参阅为什么某些 OSPF 路由在数据库中但不在路由表中?来了解有关排除 OSPF 故障的详细信息。

在本文解释的问题用思科IOSï ¿  ½软件版本只是可测的早于12.1(3)。在 Cisco IOS 软件版本 12.1(3) 及更高版本中,重分配行为得到了改进。有关详细信息,请参阅 Cisco Bug ID CSCdp72526仅限注册用户使用)。此 Bug 拥有受影响的 Cisco IOS 软件版本和已修复版本的列表。请参阅将连接的网络重分配到 OSPF 中,其中阐释了有关 Cisco IOS 行为的改进。

先决条件

要求

本文档的读者应掌握以下这些主题的相关知识:

  • 常规 IP 路由。

  • OSPF 路由协议概念和术语。

使用的组件

本文档中的信息基于以下软件和硬件版本:

  • Cisco 2503 路由器

  • Cisco IOSï ¿  ½在所有路由器的软件版本12.2(24a)运行

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

关于 OSPF 转发地址的说明

为避免在将流量路由到外部自治系统 (AS) 时产生额外的跃点,引入了 OSPF 转发地址的概念,如下图所示。

/image/gif/paws/13682/10a.gif

在图中,OSPF 域中有两台路由器连接到了外部域。然而,只有路由器 1 与路由器 100 交换路由信息。路由器 1 将从路由器 100 获得的信息重分配到 OSPF 域中,并将该信息广播给 OSPF 域的其余部分。在进行此操作时,路由器 1 将成为重分配给 OSPF 域的信息的下一跳(或转发地址)。当路由器 2 从 OSPF 域接收到要发送至外部域中某个地址的数据包时,它会将该数据包转发给路由器 1。路由器 1 接着再将它转发给路由器 100。利用转发地址这一概念可以避免这个额外的跃点,原因是路由器 1 可以将另一个路由器的 IP 地址指定为转发地址。中,路由器 1 可将路由器 100 指定为由路由器 1 重分配到 OSPF 域中的外部信息的转发地址。当路由器 2 从 OSPF 域接收到要发送至外部域中某个地址的数据包时,它会将该数据包转发给路由器 100。其结果是避免了路由器 1 这一额外的跃点。

由自治系统边界路由器 (ASBR)(上图中的路由器 1)指定的转发地址的值可以是 0.0.0.0,也可以是非零值。0.0.0.0 地址表示始发路由器 (ASBR) 是下一跳。转发地址取决于以下条件:

  • 如果 ASBR 重分配路由且在这些路由的下一跳接口上未启用 OSPF,则转发地址设置为 0.0.0.0。在上图中,如果路由器 1 在以太网接口上未启用 OSPF,便会进行此设置。

  • 在下列条件下,转发地址字段将设置为非零地址:

    • 在 ASBR 的下一跳接口上启用了 OSPF,并且

    • ASBR 的下一跳接口在 OSPF 下是非被动的,并且

    • ASBR 的下一跳接口并非 是点对点的,并且

    • ASBR 的下一跳接口并非 是点到多点的,并且

    • ASBR 的下一跳接口地址属于在 router ospf 命令中指定的网络范围。

  • 在除以上条件之外的任何其他条件下,转发地址均设置为 0.0.0.0。

有关转发地址的设置方法及其对路径选择影响的信息,请参阅转发地址对类型 5 LSA 路径选择的影响

与转发地址有关的常见 OSPF路由问题

/image/gif/paws/13682/10b_01.gif

上图中的令牌环网络中添加了只运行 RIP(并且可能连接到了仅使用 RIP 的网络)的 R2513 路由器。ASBR (R2515) 将从 R2513 获得的路由重分配到 OSPF 中后,其中某些路由不会安装到某些路由器的路由表中。这些表中会提供每一个路由器的相关配置信息。

hostname R2504
interface Serial0
ip address 1.1.1.2 255.255.255.0
         
interface TokenRing0
ip address 3.3.4.2 255.255.255.0
         
router ospf 1
network 1.1.1.0 0.0.0.255 area 0
network 3.0.0.0 0.255.255.255 area 1
area 1 range 3.0.0.0 255.0.0.0

hostname R2507
interface Serial0
ip address 1.1.1.1 255.255.255.0
         
interface Serial1
ip address 7.7.7.1 255.255.255.0
         
router ospf 1
network 1.1.1.1 0.0.0.0 area 0
default- information originate metric 20
         
ip route 0.0.0.0 0.0.0.0 Serial1 

hostname R2513
interface TokenRing0
ip address 3.3.4.4 255.255.255.0
       
interface ethernet 0
ip address 200.1.1.4 255.255.255.0
       
router rip
network 3.0.0.0
network 200.1.1.0

hostname R2515
interface TokenRing0
ip address 3.3.4.3 255.255.255.0
       
interface ethernet 0
ip address 3.44.66.3 255.255.255.0
       
interface ethernet 1
ip address 3.22.88.3 255.255.255.0
       
router ospf 1
redistribute rip metric 20 subnets
network 0.0.0.0 255.255.255.255 area 1
       
router rip
network 3.0.0.0

passive-interface ethernet 0
passive-interface ethernet 1

上表中的配置显示 R2515 将 RIP 重分配到 OSPF 中,并且 R2504(区域边界路由器 [ABR])创建汇总网络 3.0.0.0/8。

以下是每一个启用了 OSPF 的路由器的路由表:

R2507# 
show ip route

Gateway of last resort is 0.0.0.0 to network 0.0.0.0
         1.0.0.0/ 24 is subnetted, 1 subnets
C          1.1.1.0 is directly connected, Serial0
         3.0.0.0/ 8 is variably subnetted, 4 subnets, 2 masks
O IA        3.0.0.0/ 8 [110/ 70] via 1.1.1.2, 00: 15: 37, Serial0
O E2        3.3.4.0/ 24 [110/ 20] via 1.1.1.2, 00: 06: 37, Serial0
O E2        3.22.88.0/ 24 [110/ 20] via 1.1.1.2, 00: 06: 37, Serial0
O E2        3.44.66.0/ 24 [110/ 20] via 1.1.1.2, 00: 06: 37, Serial0
          7.0.0.0/ 24 is subnetted, 1 subnets
C           7.7.7.0 is directly connected, Serial1
S*     0.0.0.0/ 0 is directly connected, Serial1


R2504# show ip route
Gateway of last resort is 1.1.1.1 to network 0.0.0.0
            1.0.0.0/ 24 is subnetted, 1 subnets
C             1.1.1.0 is directly connected, Serial0
            3.0.0.0/ 8 is variably subnetted, 4 subnets, 2 masks
S             3.0.0.0/ 8 is directly connected, Null0
C             3.3.4.0/ 24 is directly connected, TokenRing0
O             3.22.88.0/ 24 [110/ 11117] via 3.3.4.3, 00: 15: 16, TokenRing0
O             3.44.66.0/ 24 [110/ 11117] via 3.3.4.3, 00: 15: 16, TokenRing0
O  E2 200.1.1.0/ 24 [110/ 20] via 3.3.4.4, 00: 06: 16, TokenRing0
O* E2 0.0.0.0/ 0 [110/ 20] via 1.1.1.1, 00: 15: 16, Serial0

R2515# show ip route
 Gateway of last resort is 3.3.4.2 to network 0.0.0.0
            1.0.0.0/ 24 is subnetted, 1 subnets
 O IA         1.1.1.0 [110/ 70] via 3.3.4.2, 00: 10: 28, TokenRing0
            3.0.0.0/ 24 is subnetted, 3 subnets
 C            3.3.4.0 is directly connected, TokenRing0
 R          200.1.1.0/ 24 [120/ 1] via 3.3.4.4, 00: 00: 10, TokenRing0
 O* E2 0.0.0.0/ 0 [110/ 20] via 3.3.4.2, 00: 10: 28, TokenRing0

从路由表中丢失的网络

R2515 拥有网络 200.1.1.0/24 的 RIP (R) 派生路由。R2515 作为 ASBR,将 RIP 协议重分配到 OSPF 中。R2504 从 R2515 获得有关网络 200.1.1.0/24 的信息,并将该信息作为 OSPF 外部类型 2 (E2) 路由安装到其路由表中。问题是,R2507 在其路由表中没有网络 200.1.1.0/24。

R2507 拥有网络 3.3.4.0/24、3.22.88.0/24 和 3.44.66.0/24 的外部路由,即使所有这些网络均应包括在 3.0.0.0/8 的汇总中也是如此。

显示这些外部路由的原因是,ASBR(将 RIP 重分配到 OSPF 中)拥有在这三个子网上运行的 RIP。因此,它会将这些子网作为外部路由重分配到 OSPF 中。由于这些子网为外部路由,因此,ABR (R2504) 不会对它们进行汇总。外部 OSPF 路由只能由 ASBR 进行汇总。在本示例中为 R2515。ABR 只能汇总从区域 1 到区域 0 的内部 OSPF 路由。

注意: 使用 Cisco Bug ID CSCdp72526仅限注册用户使用)的修补程序,OSPF 不会生成重叠外部网络的类型 5 链路状态广播 (LSA)。R2507 只有 3.0.0.0/8 的区域间路由汇总。因此,R2507 将安装 200.1.1.0/24 作为转发地址,可通过区域间路由 3.0.0.0/8 访问此地址。这与 RFC 2328 是一致的。leavingcisco.com

此输出在 R2507 的 OSPF 数据库中显示网络 200.1.1.0/24 的外部 LSA:

R2507# 
show ip ospf data external 200.1.1.0

       OSPF Router with ID (7.7.7.1) (Process ID 1)
       Type- 5 AS External Link States
       LS age: 72
       Options: (No TOS- capability, DC)
       LS Type: AS External Link
       Link State ID: 200.1.1.0 (External Network Number )
       Advertising Router: 3.44.66.3
       LS Seq Number: 80000001
       Checksum: 0xF161
       Length: 36
       Network Mask: /24
                   Metric Type: 2 (Larger than any link state path)
                   TOS: 0
                   Metric: 20
                   Forward Address: 3.3.4.4
                   External Route Tag: 0

OSPF 允许 ASBR 将另一个路由器指定为到外部路由的转发地址。在本示例中,ASBR (R2515) 已指定 3.3.4.4 作为外部网络 200.1.1.0 的转发地址。

RFC 2328 的 16.4 部分 Calculating AS external routes(计算 AS 外部路由)中规定:leavingcisco.com

“如果转发地址是非零值,则在路由表中查询转发地址。匹配的路由表条目必须指定区域内或区域间路径;如果不存在这样的路径,则不会对 LSA 执行任何操作并考虑列表中的下一条目。”

在此示例中,到转发地址 3.3.4.4 的路由如下所示:

R2507# 
show ip route 3.3.4.4

       Routing entry for 3.3.4.0/ 24
           Known via "ospf 1", distance 110, metric 20,type extern 2, forward metric 70
           Redistributing via ospf 1
           Last update from 1.1.1.2 on Serial0, 00: 00: 40 ago
           Routing Descriptor Blocks:
           * 1.1.1.2, from 3.44.66.3, 00: 00: 40 ago, via Serial0
              Route metric is 20, traffic share count is 1

根据最长匹配规则,3.3.4.4 的转发地址与外部路由 3.3.4.0/24 匹配,而不是与区域间汇总路由 3.0.0.0/8 匹配。由于路由器没有指向转发地址的内部 OSPF 路由,因此它不会在路由表中安装外部路由 200.1.1.0/24。使用外部路由到达另一个外部路由可能会产生环路。因此,OSPF 不允许使用它。

不要在 ABR 上进行汇总

如何能确保非零转发地址作为区域内或区域间路由存在于路由表中?

第一种解决方案是不在 ABR 上进行汇总。

第二种解决方案是不配置任何 LSA 类型 3 过滤条件。如果对类型 3 路由进行了过滤,将无法访问出现在 show ip ospf database external 命令输出上的转发地址,从而无法访问外部网络。在此示例中,外部网络为 R2504。这会使区域 0 中的路由器拥有其他区域中所有特定子网的区域间路由(而不是外部路由)。

使用以下命令删除 ABR 上的汇总:

R2504(config)# 
router ospf 1

R2504(config- router)# no area 1 range 3.0.0.0 255.0.0.0

此命令在 R2507 的路由表中的结果如下所示:

R2507# show ip route
       Gateway of last resort is 0.0.0.0 to network 0.0.0.0
                 1.0.0.0/ 24 is subnetted,        1 subnets
       C            1.1.1.0        is directly connected, Serial0
                 3.0.0.0/ 24 is subnetted,        3 subnets
       O IA      3.3.4.0 [110/ 70] via 1.1.1.2, 00: 00:        48, Serial0
       O IA      3.22.88.0 [110/ 80] via 1.1.1.2, 00:        00: 48, Serial0
       O IA      3.44.66.0 [110/ 80] via 1.1.1.2, 00:        00: 48, Serial0
                 7.0.0.0/ 24 is subnetted,        1 subnets
       C           7.7.7.0 is        directly connected, Serial1
       O E2 200.1.1.0/ 24 [110/ 20] via 1.1.1.2, 00: 00: 48, Serial0
       S*     0.0.0.0/ 0 is directly connected, Serial1
	   
	  R2507# show ip route 3.3.4.4
     Routing entry for 3.3.4.0/24
      Known via "ospf 1", distance 110, metric 70, type inter area
      Last update from 1.1.1.2 on Serial1, 00:03:52 ago
      Routing Descriptor Blocks:
      * 1.1.1.2, from 3.3.4.2, 00:03:52 ago, via Serial1
          Route metric is 74, traffic share count is 1

从输出中可以看到,可通过指向网络 3.3.4.0/24 的区域间路由来访问地址 3.3.4.4。在删除 ABR R2504 上的汇总之后,路由器 R2507 通过类型 5 LSA 和类型 3 LSA 获得指向此网络的路由。由于 OSPF 首选区域间路由而不是外部路由来访问同一网络,因此会将此路由安装为区域间路由。由于 R2507 此时拥有指向转发地址 3.3.4.4 的区域间路由,因此外部网络 200.1.1.0/24 也会安装到其路由表中。

注意: 如果使用 NSSA(次末节区域)且在 NSSA ABR 上执行了类型 3 LSA 过滤,将产生同一问题,即无法访问转发地址。

防止将子网作为外部路由重分配到 OSPF 中

另一种解决方案是防止将子网 3.3.4.0 作为外部路由重分配到 OSPF 中,因为 OSPF 在其上运行。ASBR (R2515) 中的这些配置命令将创建一个路由映射。redistribute 命令用它来仅允许将网络 200.1.1.0/24 重分配到 OSPF 中。ABR (R2504) 仍汇总从区域 1 到区域 0 的内部 OSPF 路由。

R2515# configure terminal
R2515(config)# router ospf 1
R2515(config-router)# redistribute rip metric 20 subnets route-map rip_to_ospf_filter
R2515(config-router)# exit
   
R2515(config)# 
access-list 28 permit 200.1.1.0 0.0.0.255
   
R2515(config)# 
route-map rip_to_ospf_filter permit 10
R2515(config-route-map)# 
match ip address 28

此命令在 R2507 的路由表中的结果如下所示:

R2507# show ip route
       Gateway of last resort is 0.0.0.0 to network 0.0.0.0
                 1.0.0.0/ 24 is subnetted,        1 subnets
       C            1.1.1.0        is directly connected, Serial0
       O IA  3.0.0.0/ 8 [110/ 70] via 1.1.1.2, 00: 07: 05, Serial0
                 7.0.0.0/ 24 is subnetted,        1 subnets
       C            7.7.7.0        is directly connected, Ethernet0
       O E2  200.1.1.0/ 24 [110/ 20] via 1.1.1.2, 00: 00: 21, Serial0
       S*      0.0.0.0/ 0 is directly connected, Ethernet0

路由表中唯一的外部路由是 200.1.1.0/24。此网络位于路由表中,因为外部网络 (3.3.4.1) 的转发地址包含在汇总路由 3.0.0.0/8 中,该路由为区域间路由。


相关信息


Document ID: 13682