目录

简介

先决条件

要求

使用的组件

规则

关于 OSPF 转发地址的说明

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

从路由表中丢失的网络

不要在 ABR 上进行汇总

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

相关信息

简介

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

本文档中所阐释的问题仅在 12.1(3) 之前的 Cisco IOS® 软件版本中比较显著。 在 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 转发地址的概念，如下图所示。

在图中，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路由问题

上图中的令牌环网络中添加了只运行 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 。

此输出在 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节（计算AS外部路由），指出：

“如果转发地址是非零值，则在路由表中查询转发地址。匹配的路由表条目必须指定区域内或区域间路径；如果不存在这样的路径，则不会对 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覆盖，该路由是区域间路由。

相关信息

- 转发地址对类型 5 LSA 路径选择的影响

- 将连接的网络重分配到 OSPF 中

- OSPF 支持页

- 技术支持 - Cisco Systems