目录

简介

背景信息

OSPF 与 RIP

链路状态是什么意思？

最短路径优先算法

OSPF 成本

最短路径树

区域与边界路由器

链路状态数据包

在路由器上启用 OSPF

OSPF 身份验证

简单口令身份验证

消息概要身份验证

主干和 Area 0

虚拟链路

与区域 0 之间没有物理连接的区域

主干

邻居

邻接关系

DR 选举

建立邻接关系

点对点接口上的邻接

非广播多路访问 (NBMA) 网络上的邻接关系

避免在 NBMA 上使用 DR 和 neighbor 命令

点对点子接口

选择接口网络类型

OSPF 与路由汇总

区域间路由汇总

外部路由汇总

末节区域

将路由重新分发到 OSPF

E1 与 E2 外部路由

将 OSPF 重新分发到其他协议

有效度量的使用

VLSM

相互重分配

将默认路由注入 OSPF

OSPF 设计提示

每个区域的路由器数

邻居数

每个 ABR 的区域编号

全网状与部分网状

内存问题

摘要

附录 A：链路状态数据库同步

链路状态通告

OSPF 数据库示例

附录 B：OSPF 和 IP 组播地址

附录 C：可变长子网掩码 (VLSM)

相关信息

简介

本文档介绍 OSPF 的工作原理，以及如何用它设计和构建大型复杂网络。

背景信息

RFC 2328 中定义的开放最短路径优先 (OSPF) 协议，是用于分配单个自控系统中的路由信息的内部网关协议。

开发 OSPF 协议是因为 Internet 社区中需要为 TCP/IP 协议族引入具备强大功能的非专有内部网关协议 (IGP)。

关于创建 Internet 通用互操作 IGP 的讨论从 1988 年就开始了，但直到 1991 年才正式成形。

当时，OSPF工作组要求考虑采用OSPF以推进制定Internet标准草案。

OSPF 协议基于链路状态技术，不同于传统 Internet 路由协议（如 RIP）中使用的基于 Bellman-Ford 矢量的算法。

OSPF 引入了一些新概念，如路由更新身份验证、可变长度子网掩码 (VLSM)、路由汇总等。

以下章节讨论 OSPF 的术语、算法以及该协议在当今大型复杂网络设计中的优势和细微的与众不同之处。

OSPF 与 RIP

随着现代网络的快速增长和扩展，路由信息协议 (RIP) 的作用已经发挥到了极限。RIP 的以下一些限制在大型网络中可能会导致出现问题：

- RIP 的跃点限制为 15 个。如果一个网络超过 15 跳（15 台路由器），则被认为不可达。

- RIP 不能处理可变长子网掩码 (VLSM)。考虑到 IP 地址短缺和 VLSM 在有效分配 IP 地址方面的灵活性，这被认为是一个重大缺陷。

完整路由表的定期广播消耗大量带宽。这是大型网络中的一个主要问题，特别是在低速链路和广域网网云中。

- RIP 的收敛速度比 OSPF 要慢。在大型网络中，收敛大约需要几分钟的时间。

- RIP路由器经过一段抑制和垃圾收集的时段，并会缓慢地超时一些信息，这些信息最近尚未收到。这在大型环境中是不适当的，可能导致路由不一致。

- RIP 没有网络延迟和链路成本的概念。路由决策基于跃点计数。在任何情况下，距离目的地跳数最低的路径都将是首选路径，即使较长路径的汇聚链路带宽更好、延迟更低，也是如此。

- RIP 网络是平面网络。没有区域或边界的概念。随着无类路由的引入以及汇聚和汇总的智能使用，RIP 网络已日趋落后。

RIP 的新版本 RIP2 中引入了一些增强功能。RIP2 解决了 VLSM、身份验证和多播路由更新的问题。

RIP2 相对于 RIP（现在称为 RIP1）的改进并不大，因为它仍然存在跳数少和收敛速度慢这样的限制，而这些因素对于大型网络中却至关重要。

另一方面，OSPF解决了前面介绍的大多数问题：

- 使用 OSPF 时，没有跃点计数限制。

- VLSM的智能使用在IP地址分配中非常有用。

- OSPF 使用 IP 多播发送链路状态更新。这样可确保减少不侦听 OSPF 数据包的路由器上的进程资源消耗。仅在发生路由更改时发送更新，而不是定期发送。这样可确保有效利用带宽。

- 与 RIP 相比，OSPF 可更好地进行收敛。这是因为路由更改是即时传播而不是定期传播的。

- OSPF 允许更好地进行负载平衡。

- OSPF 允许对网络进行逻辑定义，从而可将路由器划分到多个区域。这可限制整个网络中链路状态更新的急剧增长。并且还提供了一种汇聚路由的机制，减少不必要的子网信息传播。

- OSPF 允许通过不同的密码身份验证方法执行路由身份验证。

- OSPF 允许对注入自治系统的外部路由进行传输和标记。这可跟踪由外部协议（如 BGP）注入的外部路由。

这会导致OSPF网络的配置和故障排除更加复杂。

习惯了简单 RIP 的管理员若要跟上 OSPF 网络的发展，就面临着必须了解大量新信息这一挑战。

这种方式会在内存分配和 CPU 利用率方面带来更多开销。某些运行 RIP 的路由器必须进行升级才能处理 OSPF 造成的开销。

链路状态是什么意思？

OSPF 是一种链路状态协议。您可以将链路视为路由器上的接口。链路状态是对接口及接口与邻居路由器的关系的说明。

例如，接口的说明将包括接口的 IP 地址、掩码、所连接的网络的类型、连接到该网络的路由器等。

所有这些链路状态的集合形成链路状态数据库。

最短路径优先算法

OSPF 使用最短路径优先算法构建和计算到达所有目的地的最短路径。最短路径的计算使用 Dijkstra 算法。

这个算法本身很复杂。该算法的各个步骤概述如下：

1. 进行初始化或路由信息发生任何变化时，路由器会生成链路状态通告。此通告表示该路由器上所有链路状态的集合。

2. 所有路由器通过泛洪交换链路状态。每台路由器收到链路状态更新后，都必须在其链路状态数据库中存储一个副本，然后将更新传播到其他路由器。

3. 每个路由器的数据库完成后，路由器会计算到所有目的地的最短路径树。路由器使用 Dijkstra 算法来计算最短路径树、目的地、相关开销以及到达这些目的地的下一跳，从而形成 IP 路由表。

4. 如果 OSPF 网络中未发生更改（例如添加或删除链路或网络的开销），则 OSPF 将保持静默。如果发生任何更改，则将通过链路状态数据包进行传播，并使用 Dijkstra 算法重新算出最短路径。

该算法将每个路由器置于一个树的根部，并基于到达每个目标所需的累积成本计算与该目标之间的最短路径。

尽管所有路由器都使用相同的链路状态数据库构建最短路径树，但每台路由器都有自己的拓扑视图。这些部分指出了创建最短路径树所涉及的内容。

OSPF 成本

OSPF 中接口的开销（也称为度量）表示通过一个接口发送数据包所需的开销。

接口的成本与接口的带宽成反比。带宽越高，开销就越低。

通过 56k 串行线路比通过 10M 以太网线路需要更多的开销（更高的成本）和时间延迟。

用于计算成本的公式为：

- 开销 = 10000 0000/带宽（以 bps 为单位）

例如，通过 10M 以太网线路的开销为 10 EXP8/10 EXP7 = 10，通过 T1 线路的开销为 10 EXP8/1544000 = 64。

默认情况下，接口的开销根据带宽计算；您可以使用接口子配置模式命令强制 ip ospf cost <value>  接口的开销。

最短路径树

请参阅下方的网络图以及其中显示的接口开销。若要生成 RTA 的最短路径树，我们必须将 RTA 作为树的根并计算每个目标的最小成本。

这是从 RTA 视角看的网络图。请注意开销计算中的箭头方向。

RTB 接口到网络 198.51.100.1 的开销与其到 192.168.0.1 的开销不相关。

RTA可通过RTB到达192.168.0.1，开销为15(10+5)。

RTA 还可以通过 RTC 或 RTB 到达 203.0.113.1，开销分别为 20 (10+10) 和 20 (10+5+5)。

如果通往同一目的地存在等价路径，则 OSPF 实施会跟踪最多六 (6) 个通往同一目的地的下一跳。

路由器构建最短路径树后，会构建路由表。直连网络通过度量（开销）0到达，其他网络根据树中计算出的开销到达。

区域与边界路由器

如前所述，OSPF 使用泛洪方式在路由器之间交换链路状态更新。路由信息的所有更改都泛洪给网络中的所有路由器。

引入区域是为了给链路状态更新的急剧增长设置边界。路由器上的 Dijkstra 算法计算和泛洪仅限于区域内的更改。

一个区域内的所有路由器具有相同的链路状态数据库。属于多个区域的路由器以及将这些区域连接到骨干网区域的路由器称为区域边界路由器 (ABR)。

因此，ABR必须维护描述主干区域和其他附加区域的信息。

区域特定于接口。所有接口都在同一个区域之内的路由器称为内部路由器 (IR)。

接口在多个区域内的路由器称为区域边界路由器 (ABR)。

在 OSPF 和其他路由协议（IGRP、EIGRP、IS-IS、RIP、BGP、Static）或其他 OSPF 路由进程实例之间用作网关（重分配）的路由器称为自治系统边界路由器 (ASBR)。所有路由器都可以是 ABR 或 ASBR。

链路状态数据包

链路状态数据包有不同的类型，这些类型在 OSPF 数据库中很常见（附录 A 和下方图示）。

路由器链路可指示路由器接口在某个指定区域中的状态。每台路由器都会为其所有接口生成一条路由器链路。

汇总链路由 ABR 生成；这就是在区域之间传播网络可达性信息的方式。

通常，所有信息都注入主干（区域0），主干反过来将其传递到其他区域。

ABR 还能传播 ASBR 的可达性。这便是路由器了解如何到达其他 AS 中的外部路由的方式。

网络链路由网段上的指定路由器 (DR) 生成（稍后讨论 DR）。

此信息表示连接到特定多路访问分段（如以太网、令牌环和 FDDI（也称为 NBMA））的所有路由器。

外部链路表示 AS 外的网络。这些网络通过重分配注入 OSPF。ASBR 将这些路由注入自治系统。

在路由器上启用OSPF

在路由器上启用 OSPF 包括配置模式下的两个步骤：

1. 使用命令启用OSPF进 router ospf <process-id>  程。

1. 使用命令为接口分配区 network <network or IP address> <mask> <area-id>  域。

OSPF process-id是路由器本地的数值。它不必与其他路由器上的进程ID匹配。

可以在同一路由器上运行多个 OSPF 进程，但不建议这样做，因为这样会创建多个数据库实例，从而增加额外的路由器开销。

该命 network 令是一种将接口分配给特定区域的分配方法。使用掩码作为快捷方式，通过一个线路配置行将一系列接口置于同一区域。

掩码包含通配符位，其中 0 表示匹配，1 表示“无关”位，例如，0.0.255.255 表示网络编号的前两个字节匹配。

area-id是我们希望接口所在的区域编号。area-id可以是介于0和4294967295之间的整数，也可以采用类似于IP地址A.B.C.D的形式。

例如：

RTA# interface Ethernet0 ip address 192.168.0.2 255.255.255.0 interface Ethernet1 ip address 192.168.0.5 255.255.255.0 interface Ethernet2 ip address 192.168.0.3 255.255.255.0 router ospf 100 network 192.168.0.4 0.0.255.255 area 0.0.0.0 network 192.168.0.3 0.0.0.0 area 23

第一条 network 语句将 E0 和 E1 放置在同一区域 0.0.0.0 内，第二条 network 语句将 E2 放置在区域 23 内。请注意掩码 0.0.0.0，它表示 IP 地址完全匹配。

在无法解析掩码时，这是一种将接口置于特定区域的简单方法。

OSPF 身份验证

可以对 OSPF 数据包进行身份验证，从而使路由器可以基于预定义的口令加入路由域。

默认情况下，路由器使用空身份验证，这意味着不对网络上的路由交换进行身份验证。还有两种身份验证方法：简单密码身份 Message Digest 验证和身份验证(MD-5)。

简单口令身份验证

简单口令身份验证允许为每个区域配置一个口令（密钥）。同一区域中想要加入路由域的各路由器必须配置相同的密钥。

此方法的缺点是容易受到被动攻击。任何使用链路分析器的人都很容易从线路中获得口令。

要启用密码身份验证，请使用以下命令：

- ip ospf authentication-key key  （这位于特定接口下）

- area area-id authentication (此内容将归入 router ospf <process-id>下)

例如：

interface Ethernet0 ip address 10.0.0.1 255.255.255.0 ip ospf authentication-key mypassword router ospf 10 network 10.0.0.0 0.0.255.255 area 0 area 0 authentication

消息概要身份验证

消息概要身份验证是加密身份验证。密钥（口令）和密钥 ID 在每个路由器上进行配置。

路由器使用基于 OSPF 数据包、密钥和密钥 ID 的算法生成附加到数据包的“消息概要”。

与简单身份验证不同，此身份验证不会在线路上交换密钥。每个 OSPF 数据包还包含非递减序号，以防止受到重播攻击。

此方法还允许在密钥间进行不间断转换。如果管理员希望在不中断通信的情况下更改 OSPF 密码，这种方法非常有用。

如果接口配置了新密钥，则路由器会发送同一数据包的多个副本，每个副本通过不同的密钥进行身份验证。

当路由器检测到所有邻居都采用了新密钥时，就会停止发送重复的数据包。

以下命令用于消息摘要身份验证：

- ip ospf message-digest-key keyid md5 key  （在接口下使用）

- area area-id authentication message-digest (在下面使 router ospf <process-id>用)

例如：

interface Ethernet0 ip address 10.0.0.1 255.255.255.0 ip ospf message-digest-key 10 md5 mypassword router ospf 10 network 10.0.0.0 0.0.255.255 area 0 area 0 authentication message-digest

主干和 Area 0

当涉及多个区域时，OSPF 具有特殊限制。如果配置了多个区域，则其中一个区域必须为 area 0。此区域称为骨干网。

网络设计的最佳实践是从 area 0 开始，然后扩展到其他区域。

主干必须位于所有其他区域的中心，也就是说，所有其他区域都必须物理连接到主干。

其原因是，OSPF 期望所有区域都将路由信息注入主干，然后主干再将这些信息传播到其他区域。

下图说明了 OSPF 网络中的信息流：

在上图中，所有区域都直接连接到主干。在极少数情况下，如果引入无法直接物理访问主干的新区域，则必须配置虚拟链路。

虚拟链路将在下一部分中讨论。请注意不同类型的路由信息。从区域内（目的地属于该区域）生成的路由称为区域内路由。

这些路由在 IP 路由表中通常由字母 O 表示。源自其他区域的路由称为 inter-area 或 Summary routes。

这些路由的表示法是 IP 路由表中的 O IA。源自其他路由协议（或不同OSPF进程）的路由以及通过重分发注入到OSPF的路由称为 external routes。

这些路由在 IP 路由表中用 O E2 或 O E1 表示。首选多条通往同一目的地的路由，顺序如下  intra-area, inter-area, external E1, external E2:。外部类型 E1 和 E2 将在后面介绍。

虚拟链路

虚拟链路有两个用途：

- 连接到没有到主干的物理连接的区域

- 在 area 0 不连续的情况下临时连接主干。

与区域 0 之间没有物理连接的区域

如前所述，区域0必须位于所有其他区域的中心。在某些罕见的情况下，无法使区域物理连接到主干，则使用虚拟链路。

虚拟链路为断开连接的区域提供通往主干的逻辑路径。虚拟链路必须建立在有公共区域的两个 ABR 之间，并且其中一个 ABR 已连接到主干。

在本示例中，区域 1 没有与区域 0 之间没有直接物理连接。必须在 RTA 和 RTB 之间配置虚拟链路。区域 2 将用作中转区域，并且 RTB 是到区域 0 的入口点。

这样，RTA 和 area 1 便具有到主干的逻辑连接。要配置虚拟链路，请在RTA和RTB上使用 area <area-id> virtual-link <RID> router OSPF子命令，其中area-id是传输区域。

在上图中，该区域是 area 2。RID 是 router-id。OSPF router-id 通常是设备上的最高 IP 地址或最高环回地址（如果存在）。

路由器ID仅在启动时计算。要查找router-id，请使用命 show ip ospf interface 令。

假设 RTA 和 RTB 的 RID 分别是 10.0.0.11 和 10.0.0.22，那么这两台路由器的 OSPF 配置为：

RTA# router ospf 10 area 2 virtual-link 10.0.0.22 RTB# router ospf 10 area 2 virtual-link 10.0.0.11

主干

OSPF 允许主干的不连续部分通过虚拟链路连接。在某些情况下，需要将不同的 area 0 连接起来。

例如，如果某个公司尝试将两个单独的 OSPF 网络合并为一个具有公共 area 0 的网络，就会发生这种情况。在其他情况下，虚拟链路是作为冗余添加的，以防止由于某些路由器故障而导致将骨干网一分为二。

如果有单独的 ABR 从各端接触 area 0 并共享一个公共区域，则可在它们之间配置虚拟链路（如图所示）。

在上图中，通过虚拟链路将两个 area 0 连接起来。如果不存在公共区域，则可以创建一个附加区域（如区域 3）作为中转区域。

如果主干区域之外的任何区域发生了分区，主干区域会负责处理分区工作，而无需使用任何虚拟链路。

分区区域各部分之间通过区域间路由（而不是区域内路由）来彼此通信。

邻居

共享公共分段的路由器成为该分段上的邻居。邻居是通过 Hello 协议进行选择的。Hello 数据包通过 IP 组播定期从每个接口发出（附录 B）。

当路由器发现自己列于邻居 Hello 数据包中时，它就成为了邻居。这样，就可保证进行双向通信。邻居协商仅使用于主地址。

辅助地址可在接口上使用以下限制进行配置：这些地址必须与主地址属于同一个区域。

两台路由器对此条件达成一致才能成为邻居。

- Area-id: 两台具有公共网段的路由器；它们的接口必须属于该网段上的同一区域。接口必须属于同一子网并具有相似的掩码。

- Authentication: OSPF 允许为特定区域配置口令。要成为邻居的路由器必须在特定分段上交换相同的口令。

- Hello and Dead Intervals: OSPF在每个 Hello  网段上交换数据包。这是路由器使用的一种保持连接的形式，用于确认其在网段上的存在，同时还用于在多路访问网段上选举指定路由器 (DR)。

间 Hello  隔指定路由器在OSPF接口上发送的 Hello  数据包之间的时间长度（以秒为单位）。

dead间隔是路由器数据包在其邻居声 Hello  明OSPF路由器关闭之前未出现的秒数。

- OSPF 要求这些间隔在两个邻居之间完全相同。如果其中任何间隔不同，这些路由器不会成为特定网段上的邻居。用于设置这些计时器的路由器接口命令为： ip ospf hello-interval seconds 和 ip ospf dead-interval seconds。

- Stub area flag:  两台路由器也必须同意数据包中的末节区 Hello 域标志才能成为邻居。末节区域将在后续部分讨论。考虑末节区域定义会影响邻居选举过程。

邻接关系

邻接关系是邻居进程之后的下一步。邻接路由器是超出简单交换范围 Hello 进入数据库交换过程的路由器。

为了使特定分段上的信息交换量减到最小，OSPF 在每个多路访问分段上选择一个路由器作为指定路由器 (DR)，一个路由器作为备用指定路由器 (BDR)。

BDR 选择作为 DR 停机时的备用机制。采用这种做法的目的是使路由器具有用于信息交换的中心联络点。

每台路由器都只与 DR 和 BDR 交换信息，而不会与网段上的任何其他路由器交换更新。

DR 和 BDR 会将信息中继转发给其他设备。从数学上讲，这减少了从O(n*n)到O(n)的信息交换，其中n是多路访问网段上的路由器数量。

以下路由器模型说明了 DR 和 BDR：

在上图中，所有路由器共享一个通用多路访问网段。由于数据包交换， Hello 一台路由器被选举为DR，另一台被选举为BDR。

网段上的每台路由器（已成为邻居）都会尝试与 DR 和 BDR 建立邻接关系。

DR选举

DR和BDR选择通过协议完 Hello 成。数 Hello 据包通过每个网段上的IP组播数据包（附录B）交换。

网段上具有最高 OSPF 优先级的路由器将成为该网段的 DR。会为 BDR 重复相同的过程。如果出现平局，则具有最高 RID 的路由器胜出。

接口 OSPF 优先级的默认值是一。请记住，DR 和 BDR 概念是针对每个多路访问分段的。接口上的OSPF优先级值使用interface命令 ip ospf priority <value>  完成。

优先级值为零表示不选为DR或BDR的接口。优先级为 0 时，接口的状态为 DROTHER。这说明了DR选举：

在上图中，RTA 和 RTB 具有相同的接口优先级，但 RTB 具有更高的 RID。RTB 将是该分段上的 DR。RTC 具有比 RTB 更高的优先级。RTC 成为该网段上的 DR。

建立邻接关系

相邻关系构建过程在完成多个阶段后生效。相邻路由器具有确切的链路状态数据库。

以下是接口在邻接另一路由器之前所经历状态的汇总：

- Down（关闭）：网段上未收到任何信息。

- Attempt（尝试）：在非广播多路访问云（如帧中继和 X.25）上，此状态表示未收到来自邻居的最新信息。要联系邻居，请以低速轮询间隔来发送 Hello 数据包。

- Init：接口检测到来自邻居的Hello数据包，但尚未建立双向通信。

- Two-way（双向）：与邻居有双向通信。路由器在来自邻居的 Hello 数据包中发现了自己。在此阶段结束时，DR 和 BDR 选择将完成。在双向阶段结束时，路由器决定是否继续建立邻接关系。决策基于其中一个路由器是否是 DR 或 BDR 或者链路是点对点还是虚拟链路。

- Exstart（准启动）：路由器将尝试建立用于信息交换数据包的初始序列号。序列号可确保路由器始终获得最新信息。一个路由器成为主路由器，另一个成为辅助路由器。主路由器轮询辅助路由器以获取信息。

- Exchange（交换）：路由器通过发送的数据库描述数据包来描述其整个链路状态数据库。在此状态中，数据包可以泛洪到在路由器上的其他接口。

- Load（加载）：在此状态下，路由器将完成信息交换。路由器建立了一个链路状态请求列表和一个链路状态重新传输列表。任何不完整或过时的信息都将放入请求列表。更新将放入重新传输列表，直至得到确认。

- Full（完全）：在此状态下，邻接关系完成。邻居路由器之间完全邻接。邻接路由器具有相似的链路状态数据库。

例如：

RTA、RTB、RTD和RTF共享区域0.0.0.0中的公共段(E0)。这些是 RTA 和 RTF 的配置。RTB 和 RTD 必须具有与 RTF 类似的配置，并且不包含在内。

RTA# hostname RTA interface Loopback0 ip address 203.0.113.41 255.255.255.0 interface Ethernet0 ip address 203.0.113.141 255.255.255.0 router ospf 10 network 203.0.113.41 0.0.0.0 area 1 network 203.0.113.100 0.0.255.255 area 0.0.0.0 RTF# hostname RTF interface Ethernet0 ip address 203.0.113.142 255.255.255.0 router ospf 10 network 203.0.113.100 0.0.255.255 area 0.0.0.0

这是一个简单的示例，演示了在调试 OSPF 网络时非常有用的几个命令。

- show ip ospf interface  <interface>

此命令用于快速检查，以确定是否所有接口都属于其应该所在的区域。OSPF network 命令的列出顺序是非常重要的。

在 RTA 的配置中，如果将“network 203.0.113.100 0.0.255.255 area 0.0.0.0”语句置于“network 203.0.113.41 0.0.0.0 area 1”语句之前，则所有接口都将位于 area 0 中，这是错误的，因为环回接口位于 area 1 中。

以下是 RTA、RTF、RTB 和 RTD 上的命令输出：

RTA#show ip ospf interface e0 Ethernet0 is up, line protocol is up Internet Address 203.0.113.141 255.255.255.0, Area 0.0.0.0 Process ID 10, Router ID 203.0.113.41, Network Type BROADCAST, Cost: 10 Transmit Delay is 1 sec, State BDR, Priority 1 Designated Router (ID) 203.0.113.151, Interface address 203.0.113.142 Backup Designated router (ID) 203.0.113.41, Interface address 203.0.113.141 Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in 0:00:02 Neighbor Count is 3, Adjacent neighbor count is 3 Adjacent with neighbor 203.0.113.151 (Designated Router) Loopback0 is up, line protocol is up Internet Address 203.0.113.41 255.255.255.255, Area 1 Process ID 10, Router ID 203.0.113.41, Network Type LOOPBACK, Cost: 1 Loopback interface is treated as a stub Host RTF#show ip ospf interface e0 Ethernet0 is up, line protocol is up Internet Address 203.0.113.142 255.255.255.0, Area 0.0.0.0 Process ID 10, Router ID 203.0.113.151, Network Type BROADCAST, Cost: 10 Transmit Delay is 1 sec, State DR, Priority 1 Designated Router (ID) 203.0.113.151, Interface address 203.0.113.142 Backup Designated router (ID) 203.0.113.41, Interface address 203.0.113.141 Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in 0:00:08 Neighbor Count is 3, Adjacent neighbor count is 3 Adjacent with neighbor 203.0.113.41 (Backup Designated Router) RTD#show ip ospf interface e0 Ethernet0 is up, line protocol is up Internet Address 203.0.113.144 255.255.255.0, Area 0.0.0.0 Process ID 10, Router ID 192.0.2.174, Network Type BROADCAST, Cost: 10 Transmit Delay is 1 sec, State DROTHER, Priority 1 Designated Router (ID) 203.0.113.151, Interface address 203.0.113.142 Backup Designated router (ID) 203.0.113.41, Interface address 203.0.113.141 Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in 0:00:03 Neighbor Count is 3, Adjacent neighbor count is 2  Adjacent with neighbor 203.0.113.151 (Designated Router) Adjacent with neighbor 203.0.113.41 (Backup Designated Router) RTB#show ip ospf interface e0 Ethernet0 is up, line protocol is up Internet Address 203.0.113.143 255.255.255.0, Area 0.0.0.0 Process ID 10, Router ID 203.0.113.121, Network Type BROADCAST, Cost: 10 Transmit Delay is 1 sec, State DROTHER, Priority 1 Designated Router (ID) 203.0.113.151, Interface address 203.0.113.142 Backup Designated router (ID) 203.0.113.41, Interface address 203.0.113.141 Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in 0:00:03 Neighbor Count is 3, Adjacent neighbor count is 2 Adjacent with neighbor 203.0.113.151 (Designated Router) Adjacent with neighbor 203.0.113.41 (Backup Designated Router)

此输出显示了非常重要的信息。在 RTA 输出中，Ethernet0 位于 area 0.0.0.0 中。进程 ID 为 10 (router ospf 10)，路由器 ID 为 203.0.113.41。

请记住，RID 是机箱或环回接口上的最高 IP 地址，在启动时或每次重新启动 OSPF 进程时进行计算。

接口的状态是 BDR。由于所有路由器在 Ethernet 0 上具有相同的 OSPF 优先级（默认值为 1），RTF 接口因其 RID 较高而被选为 DR。

同样地，选择 RTA 作为 BDR。RTD 和 RTB 既不是 DR 也不是 BDR，它们的状态为 DROTHER。

注意邻居计数和邻接计数。RTD 有三个邻居，并与其中两个（DR 和 BDR）邻接。RTF 有三个邻居并与所有邻居邻接，因为它是 DR。

有关网络类型的信息非常重要，这些信息决定了接口的状态。在以太网等广播网络中，DR 和 BDR 的选举与最终用户无关。

DR 或 BDR 是谁并不重要。但在其他情况下（例如帧中继和 X.25 此类的 NBMA 媒体），这对于 OSPF 的正常工作非常重要。

随着点对点和点对多点子接口的引入，DR 选举不再是一个问题。下一部分将讨论基于 NBMA 的 OSPF。

我们需要了解的另一个命令是：

- show ip ospf neighbor

我们来看看 RTD 输出：

RTD#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 203.0.113.121 1 2WAY/DROTHER 0:00:37 203.0.113.143 Ethernet0 203.0.113.151 1 FULL/DR 0:00:36 203.0.113.142 Ethernet0 203.0.113.41 1 FULL/BDR 0:00:34 203.0.113.141 Ethernet0

命令 show ip ospf neighbor 显示特定网段上所有邻居的状态。如果邻居 ID 不属于您正在查看的网段，请不要担心。

在本例中，203.0.113.121和203.0.113.151不在Ethernet0上。Neighbor ID实际上是RID，可以是机箱上的任何IP地址。

RTD 和 RTB 仅仅是邻居，所以状态是 2WAY/DROTHER。RTD 与 RTA 和 RTF 相邻，状态为 FULL/DR 和 FULL/BDR。

点对点接口上的邻接

在点对点接口（例如点对点串行线路）上，OSPF 总是会与另一端的邻居建立邻接关系。没有 DR 或 BDR 的概念。串行接口的状态为点对点。

非广播多路访问 (NBMA) 网络上的邻接关系

在配置 OSPF 时，对于帧中继、X.25、ATM 等多路访问非广播介质需要特别注意。协议对待这些媒体的方式与对待任何其他广播媒体（例如以太网）类似。

NBMA 网云通常采用星型拓扑进行构建。PVC 或 SVC 以部分网状形式布置，其物理拓扑并不提供 OSPF 可以检测的多路访问方式。

那么，DR 的选择就成为问题。因为 DR 和 BDR 需要与云中的所有路由器建立完全的物理连接。

由于缺少广播功能，DR 和 BDR 需要连接到云的所有其他路由器的静态列表。

这可以通过命 neighbor ip-address [priority number] [poll-interval seconds] 令实现，其中“ip-address”和“priority”是分配给邻居的IP地址和OSPF优先级。

会将优先级为 0 的邻居视为无资格进行 DR 选择。“poll-interval”是 NBMA 接口在轮询（发送 Hello）假定失效的邻居之前等待的时间量。

此命 neighbor 令适用于具有DR或BDR潜能（接口优先级不等于0）的路由器。下面显示了一个网络图，其中 DR 选择非常重要：

在上图中，必须将云的 RTA 接口选举为 DR。这是因为 RTA 是具有到其他路由器的完全连接的唯一路由器。

DR 的选举可能受到接口 ospf 优先级参数的影响。如果路由器不需要成为 DR 或 BDR，其优先级为 0，其他路由器可能具有较低优先级。

本文neighbor 档未深入介绍该命令，该命令通过新的接口Network Type（网络类型）过时，与底层物理介质无关。这将在下一部分中进行说明。

避免NBMA上的DR和neighbor命令

非广播云上的静态邻居配置和成为 DR 或 BDR 的特定路由器比较复杂，我们可以使用不同的方法来避免这些复杂情况。

指定使用哪种方法取决于我们是从头开始设计网络，还是纠正已经存在的设计。

点对点子接口

子接口是一种用来定义接口的逻辑方式。同一物理接口可以拆分为多个逻辑接口，将每个子接口定义为点对点方式。

最初创建这种子接口是为了更好地处理 NBMA 上的水平拆分和基于路由协议的向量所导致的问题。

点对点子接口具有任何物理点对点接口的属性。就 OSPF 而言，邻接始终在不进行 DR 或 BDR 选择的点对点子接口上形成。

以下是点对点子接口的图示：

在此图中，在RTA上，我们可以将Serial 0拆分为两个点对点子接口S0.1和S0.2。这样，OSPF 会将云视为一组点对点链路，而不是一个多路访问网络。

点到点应用的唯一缺点是每个分段属于不同子网。这是不可接受的，因为某些管理员已经为整个云分配了一个 IP 子网。

另一个解决方法是在网云上使用 IP 不编号的接口。对于根据串行线路的 IP 地址管理 WAN 的管理员来说，这也是个问题。以下是 RTA 和 RTB 的典型配置：

RTA# interface Serial 0 no ip address encapsulation frame-relay interface Serial0.1 point-to-point ip address 198.51.100.36 255.255.252.0 frame-relay interface-dlci 20 interface Serial0.2 point-to-point ip address 198.51.100.46 255.255.252.0 frame-relay interface-dlci 30 router ospf 10 network 198.51.100.1 0.0.255.255 area 1 RTB# interface Serial 0 no ip address encapsulation frame-relay interface Serial0.1 point-to-point ip address 198.51.100.35 255.255.252.0 frame-relay interface-dlci 40 interface Serial1 ip address 198.51.100.11 255.255.255.0 router ospf 10 network 198.51.100.1 0.0.255.255 area 1 network 198.51.100.10 0.0.255.255 area 0

选择接口网络类型

用于设置 OSPF 接口网络类型的命令为：

ip ospf network {broadcast | non-broadcast | point-to-multipoint}

点对多点接口

OSPF 点对多点接口定义为具有一个或多个邻居的已编号点对点接口。此概念拓展了前面讨论的点对点概念。

管理员不必担心每个点对点链路的多个子网。网云会配置为一个子网。

如果需要迁移到点对点概念而不更改云上 IP 地址，这种方法非常有用。此外，它们可以忽略 DR 和邻居声明。

OSPF 点对多点通过交换附加的链路状态更新来工作，这些更新包含许多信息元素，描述了与邻居路由器的连接状态。

RTA# interface Loopback0 ip address 203.0.113.101 255.255.255.0 interface Serial0 ip address 198.51.100.101 255.255.255.0 encapsulation frame-relay ip ospf network point-to-multipoint router ospf 10 network 198.51.100.1 0.0.255.255 area 1 RTB# interface Serial0 ip address 198.51.100.102 255.255.255.0 encapsulation frame-relay ip ospf network point-to-multipoint interface Serial1 ip address 198.51.100.11 255.255.255.0 router ospf 10 network 198.51.100.1 0.0.255.255 area 1 network 198.51.100.10 0.0.255.255 area 0

请注意，没有配置任何静态帧中继映射语句；这是因为逆向 ARP 会负责处理 DLCI 到 IP 地址的映射。下面我们来看一些 show ip ospf interface 输 show ip ospf route 出：

RTA#show ip ospf interface s0 Serial0 is up, line protocol is up Internet Address 198.51.100.101 255.255.255.0, Area 0 Process ID 10, Router ID 203.0.113.101, Network Type POINT_TO_MULTIPOINT, Cost: 64 Transmit Delay is 1 sec, State POINT_TO_MULTIPOINT, Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5 Hello due in 0:00:04 Neighbor Count is 2, Adjacent neighbor count is 2 Adjacent with neighbor 198.51.100.174 Adjacent with neighbor 198.51.100.130 RTA#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 198.51.100.103 1 FULL/ - 0:01:35 198.51.100.103 Serial0 198.51.100.102 1 FULL/ - 0:01:44 198.51.100.102 Serial0 RTB#show ip ospf interface s0 Serial0 is up, line protocol is up Internet Address 198.51.100.102 255.255.255.0, Area 0 Process ID 10, Router ID 198.51.100.102, Network Type POINT_TO_MULTIPOINT, Cost: 64 Transmit Delay is 1 sec, State POINT_TO_MULTIPOINT, Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5 Hello due in 0:00:14 Neighbor Count is 1, Adjacent neighbor count is 1 Adjacent with neighbor 203.0.113.101 RTB#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 203.0.113.101 1 FULL/ - 0:01:52 198.51.100.101 Serial0

点对多点的唯一缺点在于会为所有邻居生成多个主机路由（具有掩码 255.255.255.255 的路由）。请注意 RTB 的 IP 路由表中的主机路由：

RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.210 255.255.255.255 is subnetted, 1 subnets O 203.0.113.101 [110/65] via 198.51.100.101, Serial0 198.51.100.1 is variably subnetted, 3 subnets, 2 masks O 198.51.100.103 255.255.255.255 [110/128] via 198.51.100.101, 00:00:00, Serial0 O 198.51.100.101 255.255.255.255 [110/64] via 198.51.100.101, 00:00:00, Serial0 C 198.51.100.100 255.255.255.0 is directly connected, Serial0 172.16.0.0 255.255.255.0 is subnetted, 1 subnets C 172.16.0.1 is directly connected, Serial1 RTC#show ip route 203.0.113.210 255.255.255.255 is subnetted, 1 subnets O 203.0.113.101 [110/65] via 198.51.100.101, Serial1 198.51.100.1 is variably subnetted, 4 subnets, 2 masks O 198.51.100.102 255.255.255.255 [110/128] via 198.51.100.101,Serial1 O 198.51.100.101 255.255.255.255 [110/64] via 198.51.100.101, Serial1 C 198.51.100.100 255.255.255.0 is directly connected, Serial1 172.16.0.0 255.255.255.0 is subnetted, 1 subnets O 172.16.0.1 [110/192] via 198.51.100.101, 00:14:29, Serial1

请注意，在 RTC 的 IP 路由表中，网络 172.16.0.1 可通过下一跳 198.51.100.101 到达，而不是可通过 198.51.100.102 到达（通常在共享同一子网的帧中继云上看到）。

这是点对多点配置的一个优势，因为您不需要对 RTC 进行静态映射即可到达下一跳 198.51.100.102。

广播接口

此方法是静态列出所有当 neighbor 前邻居的命令的一种解决方法。接口在逻辑上设置为广播，其行为就像路由器连接到 LAN 一样。

DR 和 BDR 选举的执行方式可确保要么使用全网状拓扑，要么基于接口优先级来静态选择 DR。将接口设置为广播的命令是：

ip ospf network broadcast

OSPF 与路由汇总

汇总是将多个路由合并为单个通告。这通常在区域边界路由器 (ABR) 的边界上完成。

虽然任意两个区域之间都配置了汇总，但最好在主干方向进行汇总。这样的话，主干可接收所有汇聚地址，然后将已汇总的地址注入其他区域。

汇总分为两种类型：

- 区域间路由汇总

- 外部路由汇总

区域间路由汇总

区域间路由汇总在ABR上完成，适用于AS内的路由。它无法通过重分配应用到注入 OSPF 的外部路由。

为了充分利用汇总的优势，必须以连续的方式分配区域的网络编号，以将这些地址集中在一个范围内。

要指定地址范围，请在路由器配置模式执行以下任务：

area area-id range address mask

其中，area-id 是包含待汇总网络的区域。“address”和“mask”指定要在一个范围汇总的地址范围。以下是一个汇总示例：

在上图中，RTB 将从 172.16.0.64 到 172.16.0.95 的子网范围汇总为一个范围：172.16.0.64 255.255.224.0。为实现这一点，使用掩码 255.255.224.0 对 64 的前三位（即最左边的三位）进行掩码操作。

同理，RTC 可生成汇总地址 172.16.0.96 255.255.224.0 并注入主干。请注意，此汇总成功是因为我们有两个不同的子网范围 64-95 和 96-127。

如果区域1和区域2之间的子网重叠，则很难进行汇总。主干区域将收到重叠的汇总范围，中间的路由器不知道根据汇总地址将流量发送到何处。

这是RTB的相对配置：

RTB# router ospf 100 area 1 range 172.16.0.64 255.255.224.0

在 Cisco IOS® 12.1(6) 之前的软件版本中，建议在 ABR 上手动配置汇总地址的丢弃静态路由，以防止出现路由环路。对显示的汇总路由使用以下命令：

ip route 172.16.0.64 255.255.224.0 null0

在 Cisco IOS® 12.1(6) 及更高版本中，默认情况下会自动生成丢弃路由。要放弃路由，请在以下位置配置命 router ospf令：

- 任一 [no] discard-route internal

- 或者 [no] discard-route external

有关汇总地址度量计算的注意事项：RFC 1583 要求根据可用组件路径的最小度量计算汇总路由的度量。

RFC 2178（现已被 RFC 2328 取代）更改了计算汇总路由度量的指定方法，因此具有最高（或最大）开销的汇总组件将决定汇总路由的开销。

在 Cisco IOS® 12.0 之前，思科的软件实现符合当时的 RFC 1583 标准。从 Cisco IOS® 12.0 开始，思科更改了 OSPF 的行为，以符合新标准 RFC 2328。

这种情况使得如果某一区域内的所有 ABR 未同时升级到新代码，则可能存在次优路由。

为了解决此潜在问题，Cisco IOS® 的 OSPF 配置中添加了一个命令，利用该命令您可以选择性地禁用与 RFC 2328 的兼容性。

新的配置命令位于 router ospf下，其语法为：

[no] compatible rfc1583

默认参数与 RFC 1583 兼容。此命令在以下 Cisco IOS® 版本中可用：

- 12.1(03)DC

- 12.1(03)DB

- 12.001(001.003)- 12.1 mainline

- 12.1(01.03)T - 12.1 T 系列

- 12.000(010.004) - 12.0 Mainline

- 12.1(01.03)E - 12.1 E 系列

- 12.1(01.03)EC

- 12.0(10.05)W05(18.00.10)

- 12.0(10.05)秒

外部路由汇总

外部路由汇总只适用于通过重新分发注入 OSPF 的外部路由。另外，还应确保汇总的外部范围是连续的。

对两个不同路由器的重叠范围进行汇总可能会导致数据包发送到错误的目的地。汇总通过子命令完router ospf 成：

summary-address ip-address mask

此命令仅在 ASBR 重新分发到 OSPF 时有效。

在此图中，RTA和RTD通过重分发将外部路由注入OSPF。RTA注入范围128.213.64-95的子网，RTD注入范围128.213.96-127的子网。要将每台路由器上的子网汇总为一个范围，请执行以下操作：

RTA# router ospf 100 summary-address 172.16.0.64 255.255.224.0 redistribute bgp 50 metric 1000 subnets RTD# router ospf 100 summary-address 172.16.0.96 255.255.224.0 redistribute bgp 20 metric 1000 subnets

这样会使 RTA 生成一个外部路由 172.16.0.64 255.255.224.0，并使 RTD 生成 172.16.0.96 255.255.224.0。

请注意，如 summary-address 果在RTB上使用该命令，则不会产生任何影响，因为RTB不会执行到OSPF的重分发。

末节区域

OSPF 允许将某些区域配置为末节区域。外部网络（例如从其他协议重新分发到 OSPF 中的网络）不允许泛洪到末节区域。

从这些区域到外部世界的路由基于默认路由。末节区域配置可减小区域内部的拓扑数据库大小，并降低该区域内路由器的内存要求。

符合以下条件的区域可以作为末节区域：该区域存在单个出口点，或者到区域外部的路由不必采用最优路径。

后一种描述表示，具有多个出口点的末节区域也会有一个或多个区域边界路由器，这些路由器会将默认路由注入该区域。

到外界的路由可能会采用次优路径，通过离目的地较远的出口点（相较于其他出口点）到达区域外的目的地。

其他末节区域限制是末节区域不能用作虚拟链路的中转区域。此外，ASBR 不能处于末节区域内部。

之所以存在这些限制，是因为末节区域主要配置为不承载外部路由，并且这些情况中的任何一种都会导致外部链路注入到该区域。主干不能配置为末节。

末节区域内的所有 OSPF 路由器都必须配置为末节路由器。如果将某个区域配置为末节区域，属于该区域的所有接口都会交换 Hello 数据包，并且通过一个标志指示该接口属于末节区域。

实际上，这只是Hello数据包（E位）中设置为0的一个位。所有具有公共网段的路由器都必须同意该标志。否则，它们不会成为邻居，路由也不会生效。

末节区域的扩展称为完全末节区域。Cisco通过在末节区域配置中添加 no-summary 关键字来表明这一点。

完全末节区域可阻止外部路由和汇总路由（区域间路由）进入该区域。

这样，只有区域内路由和默认的 0.0.0.0 路由会注入该区域。

- 将区域配置为末节区域的命令是：  area <area-id> stub [no-summary]

- 将 default-cost 配置到区域的命令为： area area-id default-cost cost

如果未使用该命令设置开销，则 ABR 会通告开销为 1。

假设区域 2 配置为末节区域。本例显示了对 area 2 进行末节配置之前和之后的 RTE 路由表。

RTC# interface Ethernet 0 ip address 203.0.113.141 255.255.255.0 interface Serial1 ip address 203.0.113.151 255.255.255.252 router ospf 10 network 203.0.113.150 0.0.0.255 area 2 network 203.0.113.140 0.0.0.255 area 0 RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.150 255.255.255.252 is subnetted, 1 subnets C 203.0.113.150 is directly connected, Serial0 O IA 203.0.113.140 [110/74] via 203.0.113.151, 00:06:31, Serial0 198.51.100.1 is variably subnetted, 2 subnets, 2 masks O E2 172.16.0.64 255.255.192.0 [110/10] via 203.0.113.151, 00:00:29, Serial0 O IA 172.16.0.63 255.255.255.252 [110/84] via 203.0.113.151, 00:03:57, Serial0 172.16.0.108 255.255.255.240 is subnetted, 1 subnets O 172.16.0.208 [110/74] via 203.0.113.151, 00:00:10, Serial0

RTE 已获知区域间路由 (O IA) 203.0.113.140 和 172.16.0.63，以及区域内路由 (O) 172.16.0.208 和外部路由 (O E2) 172.16.0.64。

要将 area 2 配置为末节区域，请执行以下操作：

RTC# interface Ethernet 0 ip address 203.0.113.141 255.255.255.0 interface Serial1 ip address 203.0.113.151 255.255.255.252 router ospf 10 network 203.0.113.150 0.0.0.255 area 2 network 203.0.113.140 0.0.0.255 area 0 area 2 stub RTE# interface Serial1 ip address 203.0.113.152 255.255.255.252 router ospf 10 network 203.0.113.150 0.0.0.255 area 2 area 2 stub

请注意， stub 该命令也在RTE上配置，否则RTE不会成为RTC的邻居。由于未设置默认开销，因此 RTC 向 RTE 通告 0.0.0.0，度量值为 1。

RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 203.0.113.151 to network 0.0.0.0 203.0.113.150 255.255.255.252 is subnetted, 1 subnets C 203.0.113.150 is directly connected, Serial0 O IA 203.0.113.140 [110/74] via 203.0.113.151, 00:26:58, Serial0 198.51.100.1 255.255.255.252 is subnetted, 1 subnets O IA 172.16.0.63 [110/84] via 203.0.113.151, 00:26:59, Serial0 172.16.0.108 255.255.255.240 is subnetted, 1 subnets O 172.16.0.208 [110/74] via 203.0.113.151, 00:26:59, Serial0 O*IA 0.0.0.0 0.0.0.0 [110/65] via 203.0.113.151, 00:26:59, Serial0

请注意，除了替换为默认路由 0.0.0.0 的外部路由外，会显示所有路由。路由的成本为 65（T1 线路的 64 + 由 RTC 通告的 1）。

我们现在将 area 2 配置为完全末节，并将 0.0.0.0 的默认开销更改为 10。

RTC# interface Ethernet 0 ip address 203.0.113.141 255.255.255.0 interface Serial1 ip address 203.0.113.151 255.255.255.252 router ospf 10 network 203.0.113.150 0.0.0.255 area 2 network 203.0.113.140 0.0.0.255 area 0 area 2 stub no-summary area 2 default cost 10 RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.150 255.255.255.252 is subnetted, 1 subnets C 203.0.113.150 is directly connected, Serial0 172.16.0.108 255.255.255.240 is subnetted, 1 subnets O 172.16.0.208 [110/74] via 203.0.113.151, 00:31:27, Serial0 O*IA 0.0.0.0 0.0.0.0 [110/74] via 203.0.113.151, 00:00:00, Serial0

请注意，只显示区域内路由 (O) 和默认路由 0.0.0.0。阻止了外部和区域间路由。

默认路由的成本现在是 74（T1 线路的 64 + 由 RTC 通告的 10）。在此例中不需要对 RTE 进行配置。

该区域已经是末节区域， no-summary 该命令不会像该命令那样影响Hello数 stub 据包。

将路由重新分发到 OSPF

将路由从其他路由协议或从静态重分发到OSPF会导致这些路由成为OSPF外部路由。要将路由重分发到OSPF，请在路由器配置模式下使用此命令：

redistribute protocol [process-id] [metric value] [metric-type value] [route-map map-tag] [subnets]

注意：此命令必须位于一行。

其中，protocol 和 process-id 分别是我们要注入 OSPF 的协议和其进程 ID（如果存在）。metric 是我们要分配给外部路由的开销。

如果未指定 metric 值，则 OSPF 在重新分发各协议的路由时使用默认值 20（BGP 路由除外，其 metric 值为 1）。metric-type 值将在下一段中讨论。

“route-map”是用于控制路由在路由域之间重分配的方法。路由映射的格式为：

route-map map-tag [[permit | deny] | [sequence-number]]

通过路由重分发到OSPF，如果未指定关键字，则仅重分发未 subnets 划分子网的路由。

E1 与 E2 外部路由

外部路由分为两类：外部类型 1 和外部类型 2。二者之间的区别在于计算路由开销（度量）的方式。

类型 2 路由的成本始终为外部成本，与到达该路由的内部成本无关。

类型 1 成本是用于到达该路由的外部成本和内部成本之和。

对于同一目标，类型 1 路由始终优先于类型 2 路由。

如图所示，RTA将两个外部路由重分发到OSPF。N1和N2的外部开销均为x。唯一的区别是N1使用度量类型1重分发到OSPF，而N2使用度量类型2重分发。

如果跟踪从 Area 1 向 Area 0 的路由，则会发现，从 RTB 或 RTC 来看，到达 N2 的开销始终为 x。而沿途的内部开销并未考虑在内。另一方面，到达 N1 的开销随内部开销而递增。从 RTB 来看，开销为 x+y，从 RTC 来看，开销为 x+y+z。

如果外部路由都是2类路由，并且到目的网络的外部开销相等，则选择到ASBR的开销最低的路径作为最佳路径。

除非另外指定，否则为外部路由指定的默认外部类型是类型 2。

假设我们在 RTC 上添加了两条指向 E0 的静态路由：10.0.0.16 255.255.255.0（/24 表示从最左侧开始的 24 位掩码）和 198.51.100.1 255.255.0.0。

这显示了在RTC上的命令中使用不同参数时 redistribute 的不同行为：

RTC# interface Ethernet0 ip address 203.0.113.142 255.255.255.0 interface Serial1 ip address 203.0.113.151 255.255.255.252 router ospf 10 redistribute static network 203.0.113.150 0.0.0.255 area 2 network 203.0.113.140 0.0.0.255 area 0 ip route 10.0.0.16 255.255.255.0 Ethernet0 ip route 198.51.100.1 255.255.0.0 Ethernet0 RTE# interface Serial0 ip address 203.0.113.152 255.255.255.252 router ospf 10 network 203.0.113.150 0.0.0.255 area 2

on RTE的 show ip route 输出：

RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.150 255.255.255.252 is subnetted, 1 subnets C 203.0.113.150 is directly connected, Serial0 O IA 203.0.113.140 [110/74] via 203.0.113.151, 00:02:31, Serial0 O E2 198.51.100.1 [110/20] via 203.0.113.151, 00:02:32, Serial0

请注意，由于我们没有使用关键字，因此出现的唯一外部路由是198.51.100. subnet 1。请注意，如果 subnet 不使用关键字，则仅重分发未划分子网的路由。在我们的例子中，10.0.0.16 是未进行子网划分的 A 类路由，未进行重分配。由于未 metric 使用关键字(或路由器OSPF下的语 default-metric 句)，分配给外部路由的开销为20（BGP的默认开销为1）。

redistribute static metric 50 subnets RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 10.0.0.16 255.255.255.0 is subnetted, 1 subnets O E2 10.0.0.16 [110/50] via 203.0.113.151, 00:00:02, Serial0 203.0.113.150 255.255.255.252 is subnetted, 1 subnets C 203.0.113.150 is directly connected, Serial0 O IA 203.0.113.140 [110/74] via 203.0.113.151, 00:00:02, Serial0 O E2 198.51.100.1 [110/50] via 203.0.113.151, 00:00:02, Serial0

请注意，现在显示了 10.0.0.16，并且到外部路由的成本是 50。因为外部路由是类型 2 (E2)，所以未加上内部成本。假设现在将类型更改为 E1：

redistribute static metric 50 metric-type 1 subnets RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 10.0.0.16 255.255.255.0 is subnetted, 1 subnets O E1 10.0.0.16 [110/114] via 203.0.113.151, 00:04:20, Serial0 203.0.113.150 255.255.255.252 is subnetted, 1 subnets C 203.0.113.150 is directly connected, Serial0 O IA 203.0.113.140 [110/74] via 203.0.113.151, 00:09:41, Serial0 O E1 198.51.100.1 [110/114] via 203.0.113.151, 00:04:21, Serial0

请注意，类型已更改为E1，并且成本已按S0的内部成本增加，即64，总成本为64+50=114。

假设我们将路由映射添加到 RTC 的配置：

RTC# interface Ethernet0 ip address 203.0.113.142 255.255.255.0 interface Serial1 ip address 203.0.113.151 255.255.255.252 router ospf 10 redistribute static metric 50 metric-type 1 subnets route-map STOPUPDATE network 203.0.113.150 0.0.0.255 area 2 network 203.0.113.140 0.0.0.255 area 0 ip route 10.0.0.16 255.255.255.0 Ethernet0 ip route 198.51.100.1 255.255.0.0 Ethernet0 access-list 1 permit 198.51.100.1 0.0.255.255 route-map STOPUPDATE permit 10 match ip address 1

路由映射仅允许将198.51.100.1重分发到OSPF中，并拒绝其余路由。这就是 10.0.0.16 不再出现在 RTE 路由表中的原因。

RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.150 255.255.255.252 is subnetted, 1 subnets C 203.0.113.150 is directly connected, Serial0 O IA 203.0.113.140 [110/74] via 203.0.113.151, 00:00:04, Serial0 O E1 198.51.100.1 [110/114] via 203.0.113.151, 00:00:05, Serial0

将 OSPF 重新分发到其他协议

使用有效度量

每次将 OSPF 重分配到其他协议中时，都必须遵守那些协议的规则。特别是，应用的度量必须与该协议使用的度量相匹配。

例如，RIP 度量是介于 1 和 16 之间的跳数，其中 1 表示网络相距一跳，16 表示网络不可达。另一方面，IGRP 和 EIGRP 需要的度量形式如下：

default-metric bandwidth delay reliability loading mtu

VLSM

另一个需要考虑的问题是 VLSM（可变长度子网指南）（附录 C）。OSPF 可以携带同一个主网的多个子网信息，但是其他协议不能，如 RIP 和 IGRP（EIGRP 对于 VLSM 具有此功能）。

如果同一主网跨越 OSPF 和 RIP 域的边界，则重新分发到 RIP 或 IGRP 中的 VLSM 信息将会丢失，并且必须在 RIP 或 IGRP 域中配置静态路由。以下示例将说明此问题。

在上图中，RTE 运行 OSPF，RTA 运行 RIP。RTC 在两个协议之间执行重新分发。问题在于，C 类网络 203.0.113.150 是可变子网，它有两个不同的掩码：255.255.255.252 和 255.255.255.192。

以下是 RTE 和 RTA 的配置和路由表：

RTA# interface Ethernet0 ip address 203.0.113.68 255.255.255.192 router rip network 203.0.113.150 RTC# interface Ethernet0 ip address 203.0.113.67 255.255.255.192 interface Serial1 ip address 203.0.113.151 255.255.255.252 router ospf 10 redistribute rip metric 10 subnets network 203.0.113.150 0.0.0.255 area 0 router rip redistribute ospf 10 metric 2 network 203.0.113.150 RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.150 is variably subnetted, 2 subnets, 2 masks C 203.0.113.150 255.255.255.252 is directly connected, Serial0 O 203.0.113.64 255.255.255.192 [110/74] via 203.0.113.151, 00:15:55, Serial0 RTA#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.150 255.255.255.192 is subnetted, 1 subnets C 203.0.113.64 is directly connected, Ethernet0

请注意，RTE 已识别出 203.0.113.150 有两个子网，而 RTA 认为只有一个子网（在接口上配置的那个子网）。

关于子网 203.0.113.150 255.255.255.252 的信息在 RIP 域中丢失。若要到达该子网，需要在 RTA 上配置静态路由：

RTA# interface Ethernet0 ip address 203.0.113.68 255.255.255.192 router rip network 203.0.113.150 ip route 203.0.113.150 255.255.255.0 203.0.113.67

这样 RTA 就能够到达其他子网。

相互重分配

协议之间的相互重新分发必须以非常谨慎且可控的方式进行。不正确的配置可能会导致路由信息出现环路。

相互重分配的一种经验做法是不允许将从某个协议了解的信息注入回同一个协议。

必须在重新分发路由器上应用被动接口和分发列表。使用链路状态协议（例如 OSPF）过滤信息非常困难。

Distribute-list out 在ASBR上工作，以便将重分发的路由过滤到其他协议中。在任何路由器上工 Distribute-list in 作，可防止路由表中的路由，但不会阻止链路状态数据包的传播；下游路由器仍将拥有路由。

如果能够在其他协议上应用过滤器来防止环路的产生，就尽量避免使用任何 OSPF 过滤器。

举例来说，假设 RTA、RTC 和 RTE 运行 RIP。RTC 和 RTA 也运行 OSPF。RTC 和 RTA 都会在 RIP 和 OSPF 之间执行重新分发。

如果不希望将来自RTE的RIP注入OSPF域，请在RTC的E0上为RIP放置一个被动接口。但是，您已允许将RTA中的RIP注入OSPF。结果如下：

注意：请不要使用此配置。

RTE# interface Ethernet0 ip address 203.0.113.151 255.255.255.192 interface Serial0 ip address 203.0.113.152 255.255.255.192 router rip network 203.0.113.150 RTC# interface Ethernet0 ip address 203.0.113.67 255.255.255.192 interface Serial1 ip address 203.0.113.151 255.255.255.192 router ospf 10 redistribute rip metric 10 subnets network 203.0.113.150 0.0.0.255 area 0 router rip redistribute ospf 10 metric 2 passive-interface Ethernet0 network 203.0.113.150 RTA# interface Ethernet0 ip address 203.0.113.68 255.255.255.192 router ospf 10 redistribute rip metric 10 subnets network 203.0.113.150 0.0.0.255 area 0 router rip redistribute ospf 10 metric 1 network 203.0.113.150 RTC#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.150 255.255.255.192 is subnetted, 4 subnets C 203.0.113.150 is directly connected, Serial1 C 203.0.113.64 is directly connected, Ethernet0 R 203.0.113.151 [120/1] via 203.0.113.68, 00:01:08, Ethernet0 [120/1] via 203.0.113.152, 00:00:11, Serial1 O 203.0.113.151 [110/20] via 203.0.113.68, 00:21:41, Ethernet0

请注意，RTC有两条路径可到达203.0.113.151子网：Serial 1和Ethernet 0（E0显然路径错误）。出现这种情况是因为 RTC 通过 OSPF 提供到 RTA 的该入口，而 RTA 通过 RIP 将其传回（因为 RTA 无法通过 RIP 了解该入口）。

此示例是由于不正确的配置可能导致的超小规模环路。在大型网络中，这种情况更加严重。

要解决本例中的问题，请不要通过被动接口在 RTA 以太网接口 0 上发送 RIP。如果以太网上的某些路由器仅使用 RIP，此方法不适用。

在这种情况下，您可以允许 RTC 在以太网上发送 RIP；这样，由于水平分割的作用，RTA 不会将其发送回网络（如果关闭了水平分割，那么这种方式在 NBMA 介质上无法生效）。

水平拆分不允许将更新发送回从其了解这些更新的同一个接口（通过相同的协议）。

另一种好的方法是在RTA上应用分发列表，以拒绝通过OSPF获知的子网返回以太网上的RIP。使用后者：

RTA# interface Ethernet0 ip address 203.0.113.68 255.255.255.192 router ospf 10 redistribute rip metric 10 subnets network 203.0.113.150 0.0.0.255 area 0 router rip redistribute ospf 10 metric 1 network 203.0.113.150 distribute-list 1 out ospf 10

RTC 路由表的输出如下：

RTF#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 203.0.113.150 255.255.255.192 is subnetted, 4 subnets C 203.0.113.150 is directly connected, Serial1 C 203.0.113.64 is directly connected, Ethernet0 R 203.0.113.151 [120/1] via 203.0.113.152, 00:00:19, Serial1 O 203.0.113.151 [110/20] via 203.0.113.68, 00:21:41, Ethernet0

将默认路由注入 OSPF

可以强制自治系统边界路由器 (ASBR) 生成到 OSPF 域中的默认路由。只要将路由重新分发到 OSPF 域中，路由器就会成为 ASBR。

但是在默认情况下，ASBR 不生成到 OSPF 路由域中的默认路由。

要让OSPF生成默认路由，请使用：

default-information originate [always] [metric metric-value] [metric-type type-value] [route-map map-name]

注意：此命令必须位于一行。

有两种方式可以生成默认路由。第一种是在域中通告 0.0.0.0，但仅当 ASBR 本身已具有一个默认路由时才这样做。第二种是无论 ASBR 是否具有默认路由都通告 0.0.0.0。后者可以使用关键字进行设 always置。

使用关键字 always 时请小心。如果您的路由器在域内通告一个默认路由 (0.0.0.0)，而其本身没有默认路由或到达目的地的路径，则路由功能会中断。

度量和度量类型是分配给默认路由的成本和类型（E1 或 E2）。路由映射指定生成默认路由需要满足的一组条件。

假设 RTE 将默认路由 0.0.0.0 注入 RIP。RTC 最后选用的网关为 203.0.113.152。在用命令配置RTC之前，RTC不会将默认值传播到 default-information originate RTA。

RTC#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 203.0.113.152 to network 0.0.0.0 203.0.113.150 255.255.255.192 is subnetted, 4 subnets C 203.0.113.150 is directly connected, Serial1 C 203.0.113.64 is directly connected, Ethernet0 R 203.0.113.151 [120/1] via 203.0.113.152, 00:00:17, Serial1 O 203.0.113.151 [110/20] via 203.0.113.68, 2d23, Ethernet0 R* 0.0.0.0 0.0.0.0 [120/1] via 203.0.113.152, 00:00:17, Serial1 [120/1] via 203.0.113.68, 00:00:32, Ethernet0 RTC# interface Ethernet0 ip address 203.0.113.67 255.255.255.192 interface Serial1 ip address 203.0.113.151 255.255.255.192 router ospf 10 redistribute rip metric 10 subnets network 203.0.113.150 0.0.0.255 area 0 default-information originate metric 10 router rip redistribute ospf 10 metric 2 passive-interface Ethernet0 network 203.0.113.150 RTA#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 203.0.113.67 to network 0.0.0.0 203.0.113.150 255.255.255.192 is subnetted, 4 subnets O 203.0.113.150 [110/74] via 203.0.113.67, 2d23, Ethernet0 C 203.0.113.64 is directly connected, Ethernet0 O E2 203.0.113.151 [110/10] via 203.0.113.67, 2d23, Ethernet0 C 203.0.113.151 is directly connected, Ethernet1 O*E2 0.0.0.0 0.0.0.0 [110/10] via 203.0.113.67, 00:00:17, Ethernet0

请注意，RTA已获取0.0.0.0作为度量为10的外部路由。最后选用网关按预期设置为203.0.113.67。

OSPF 设计提示

对于区域中的路由器数量、每个分段的邻居数量或构建网络的最佳方法这些方面，OSPF RFC (1583) 没有指定任何指导。

OSPF 网络设计有多种不同的方法。重要的是要记住任何协议在压力下都可能失败。

不要对协议吹毛求疵，而要使用协议获得最佳行为。

每个区域的路由器数

每个区域的最大路由器数量取决于多种因素：

- 您的区域类型是什么？

- 您在该区域具有哪种CPU功率？

- 哪种介质？

- OSPF 是否在 NBMA 模式下运行？

- 您的 NBMA 网络是否属于网状结构？

- 网络中是否有大量外部 LSA？

- 是否有其它区域的详细汇总？

因此，很难指定每个区域的最大路由器数量。请咨询您当地的销售或系统工程师以获取特定网络设计帮助。

邻居数

连接到同一 LAN 的路由器数也很重要。每个 LAN 都有与所有其他路由器生成邻接的 DR 和 BDR。

LAN 上存在的邻居越少，DR 或 BDR 必须生成的邻接数就越小。这取决于您的路由器的功率。

您可以随时更改OSPF优先级以选择您的DR。避免在多个网段上使用与DR相同的路由器。

如果 DR 选择基于最高 RID，则一个路由器可能意外地成为所连接到的所有分段的 DR。在其他路由器空闲时，该路由器却需要进行额外的工作。

每个 ABR 的区域编号

ABR为其服务的所有区域保留数据库的副本。例如，如果某台路由器连接到五个区域，则它必须维护一个包含五个不同数据库的列表。

每个 ABR 的区域数量取决于许多因素，包括区域类型（正常、末节、NSSA）、ABR CPU 功率、每个区域的路由数量以及每个区域的外部路由数量。

因此，不能建议每个ABR的特定区域数。当您始终可以在其它路由器上分布区域时，不宜过载ABR。

下图显示了两种 ABR 情况之间的区别：一个 ABR 包含五个不同数据库（包括 area 0），两个 ABR 各包含三个数据库。

这些只是指导准则。每个 ABR 配置的区域越多，其性能就越低。在某些情况下，较低性能是可以容忍的。

全网状与部分网状

低带宽和过多链路状态（与帧中继或 X.25 等非广播多路访问 (NBMA) 云相关联）的组合向来是个难题

经证明，部分网状拓扑比全网状拓扑表现更好。经过仔细布局的点对点或点对多点网络比必须处理 DR 问题的多点网络要好得多。

内存问题

计算出特定 OSPF 配置所需的内存并不容易。当太多外部路由注入 OSPF 域时，通常会发生内存问题。

与具有 4 台路由器并将 33,000 个外部路入注入 OSPF 的骨干网区域相比，具有 40 台路由器和一个到外界的默认路由的骨干网区域具有较少的内存问题。

通过良好的 OSPF 设计也可以节省内存。在区域边界路由器处执行汇总和使用末节区域可以进一步减少交换路由的数量。

OSPF使用的总内存是路由表(show ip route summary)中使用的内存和链路状态数据库中使用的内存的总和。

这些数字是根据经验得出的估算值。路由表中的每个条目大约消耗 200 到 280 个字节，外加每条额外路径消耗的 44 个字节。

每个 LSA 消耗 100 字节的开销加上实际链路状态通告的大小，可能也有 60 到 100 字节（在路由器链路中取决于路由器上的接口数量）。

这些都必须计入其他进程和 Cisco IOS® 本身使用的内存中。要了解确切的编号，请在启用show memory 和不启用OSPF的情况下运行。

两种情况下所使用的处理器内存之差就是答案（请保留配置的备份副本）。

通常，小于500K字节的路由表可以容纳2到4 MB RAM；如果从Internet注入了完整路由，则大于500K的大型网络需要8到16 MB，或32到64 MB。

摘要

RFC 1583 中定义的 OSPF 协议是一种功能强大的开放式协议，允许多个供应商网络与 TCP/IP 协议系列进行通信。

OSPF 的优势包括快速收敛、VLSM、身份验证、层次结构分段、路由汇总和汇聚，这些都是处理大型复杂网络所需的特性。

附录 A：链路状态数据库同步

如上图所示，同一网段上的路由器在成功形成邻接关系之前会经历一系列状态。邻居和 DR 选择通过 Hello 协议进行。

当路由器在其邻居发来的 Hello 数据包中看到自己时，其状态会转换为“2-Way（双向）”。此时会在多路访问分段上进行 DR 和 BDR 选择。

如果两台路由器中的任何一个是 DR 或 BDR，或者它们通过点对点或虚拟链路连接，则路由器会继续与邻居形成邻接关系。

在 Exstart（准启动）状态下，两个邻居形成主/辅助关系，在初始序列号上达成一致。该序号用于检测旧的或重复的链路状态通告 (LSA)。

在 Exchange（交换）状态下，交换数据库描述数据包 (DD)。这些是采用链路状态标头形式的缩写链路状态通告。标头提供足够的信息来识别链路。

主节点发送 DD 数据包，然后通过辅助节点的 DD 数据包对其进行确认。泛洪过程会使用所有处于交换状态或更高状态的邻接关系。

这些邻接关系完全能够传输和接收所有类型的 OSPF 路由协议数据包。

在 Load（加载）状态下，链路状态请求数据包被发送到邻居，以请求已发现但尚未收到的最新通告。每个路由器都生成保持其邻接处于最新状态所必需的 LSA 列表。

会维护一个转发列表，以确保每个 LSA 都得到确认。若要为邻接指定链路状态通告转发之间的秒数，可以使用下面的命令：

ip ospf retransmit-interval seconds

会发送链路状态更新数据包以响应请求数据包。链路状态更新数据包在所有邻接关系上泛洪。

在 Full 状态下，邻居路由器之间完全邻接。公共区域的数据库是相邻路由器之间的完全匹配。

每个 LSA 都有一个 age 字段，当该字段包含在数据库中或在整个区域泛洪时，该字段会定期递增。当某个 LSA 达到 Maxage 时，如果该 LSA 不在任何邻居转发列表中，则该字段会从数据库进行刷新。

链路状态通告

链路状态通告分为五种类型。路由器链路 (RL) 由所有路由器生成。这些链路描述特定区域里路由器接口的状态。

这些链路仅在路由器区域内泛洪。网络链路(NL)由特定网段的DR生成；这些表示连接到该网段的路由器。

汇总链路 (SL) 是区域间链路（类型 3）；这些链路列出了其他区域内的网络，但仍属于自治系统。

汇总链路由 ABR 从主干注入其他区域，并从其他区域注入主干。这些链路用于区域之间的汇聚。

其他类型的汇总链路是 ASBR 汇总链路。这些是指向 ASBR 的类型 4 链路。这是为了确保所有路由器都知道退出自治系统的方式。

最后一种类型是类型 5 外部链路 (EL)，这些链路由 ASBR 注入域。

上图说明了不同的链路类型。RTA 生成一条到区域 1 中的路由器链路 (RL)，还生成一条网络链路 (NL)，因为它恰巧是该特定分段上的 DR。

RTB 是 ABR，它会生成到 area 1 和 area 0 的 RL。RTB 还会生成到 area 1 和 area 0 的汇总链路。这些链路是在两个区域之间交换的网络列表。

ASBR 汇总链路也由 RTB 注入 area 1。这表示存在 RTD，即自治系统边界路由器 (ASBR)。

同样，RTC 是另一个 ABR，它会为 area 0 和 area 2 生成 RL，并生成进入 area 2 的 SL (3)（因为它不通告任何 ASBR），以及进入 area 0 的 SL (3,4) 以通告 RTD 。

RTD 为区域 2 生成 RL，并为通过 BGP 了解的外部路由生成 EL。外部路由器在整个域内泛洪。

下表是关于链路状态通告的摘要。

LS类型

通告说明

1

路由器链路通告由各路由器为它们各自所属的区域生成。它们描述通往区域的路由器链路的状态。这些通告仅在特定区域内泛洪。

2

网络链路通告。由指定路由器生成。它们描述连接到特定网络的路由器集合。在包含该网络的区域内泛洪。

3 或 4

汇总链路通告。由区域边界路由器生成。它们描述区域间（区域之间）路由。类型 3 描述通往网络的路由，也用于汇聚路由。第4类描述到ASBR的路由。

5

AS 外部链路通告。由 ASBR 发起。它们描述到 AS 外部目标的路由。在除末节区域外的所有区域泛洪。

如果详细查看OSPF数据库，则show ip ospf database detail会有不同的关键字， Link-Data Link-ID和 Link-state ID。这些术语之所以不一致，是因为每个术语的值取决于链路状态类型和链路类型。

我们将述评这些专业术语，并从路由器的角度提供有关 OSPF 数据库的详细示例。

Link-State ID 基本上定义取决于 LS 类型的链路状态标识。

路由器链路由发出通告的路由器的路由器ID(RID)标识。

网络链路通过 DR 的相对 IP 地址进行标识。这样做十分有意义，因为网络链路由指定路由器发起。

汇总链路（类型 3）通过其指向的目的地的 IP 网络编号进行标识。

ASBR 汇总链路（汇总链路类型 4）通过 ASBR 的 RID 进行标识。

外部链路通过其指向的外部目的地的 IP 网络编号进行标识。下表总结了以下信息：

LS 类型

链路状态 ID（在引用路由器时的数据库概括视图中，称为链路 ID）

1

源路由器 ID (RID)。

2

网络指定路由器的IP接口地址。

3

目的网络号。

4

所描述的 AS 边界路由器的路由器 ID。

5

外部网络编号。

可用的不同链路：

末节网络链路：此术语与末节区域无关。末节网段是仅连接一个路由器的网段。

连接一个路由器的以太网或令牌环网段被视为末节网络链路。环回接口也视为使用 255.255.255.255 掩码（主机路由）、到末节网络的链路。

点对点链路：这些链路可以是物理或逻辑（子接口）点对点串行链路连接。这些链路可以是编号（在链路上配置 IP 地址）或不编号的。

中转链路：这些接口连接到的网络接有多个路由器，因此称为中转。

虚拟链路：这些是连接与主干没有物理连接的区域的逻辑链路。虚拟链路视为编号的点对点链路。

link-ID 是链路本身的标识。这对于每种链路类型都是不同的。

中转链路通过该链路上 DR 的 IP 地址进行标识。

编号的点对点链路通过点对点链路上邻居路由器的 RID 进行标识。

虚拟链路与点对点链路相同。

末节网络链路通过末节网络接口的 IP 地址进行标识。下表总结了以下信息：

链路类型

Link ID（这适用于单个链路）

点对点

邻居路由器 ID

到中转网络的链路

DR 的接口地址

到末节网络的链路（在环回掩码为 255.255.255.255 的情况下）

网络/子网编号

虚拟链路

邻居路由器 ID

链路数据是链路的 IP 地址（除了链路数据是网络掩码的末节网络）。

链路类型

链路数据

末节网络

网络掩码

其他网络（仅适用于路由器链路）

路由器 - 关联的 IP 接口地址

最后，通告路由器是发送了 LSA 的路由器的 RID。

OSPF 数据库示例

根据此网络图、配置和 IP 路由表，以下是用来了解 OSPF 数据库的几种不同方法。

RTA# interface Loopback0 ip address 203.0.113.41 255.255.255.255 interface Ethernet0 ip address 203.0.113.68 255.255.255.192 interface Ethernet1 ip address 203.0.113.151 255.255.255.192 router ospf 10 network 203.0.113.100 0.0.255.255 area 0 RTA#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 203.0.113.67 to network 0.0.0.0 203.0.113.128 255.255.255.192 is subnetted, 1 subnets O E2 203.0.113.1288 [110/10] via 203.0.113.67, 00:00:50, Ethernet0 203.0.113.30 255.255.255.255 is subnetted, 1 subnets C 203.0.113.41 is directly connected, Loopback0 203.0.113.150 255.255.255.192 is subnetted, 3 subnets O IA 203.0.113.150 [110/74] via 203.0.113.67, 00:00:50, Ethernet0 C 203.0.113.64 is directly connected, Ethernet0 C 203.0.113.151 is directly connected, Ethernet1 O*E2 0.0.0.0 0.0.0.0 [110/10] via 203.0.113.67, 00:00:50, Ethernet0 RTE# ip subnet-zero interface Ethernet0 ip address 203.0.113.16 255.255.255.192 interface Serial0 ip address 203.0.113.152 255.255.255.192 router ospf 10 redistribute rip metric 10 subnets network 203.0.113.150 0.0.0.63 area 1 default-information originate metric 10 router rip network 203.0.113.128 ip route 0.0.0.0 0.0.0.0 Ethernet0 RTE#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 0.0.0.0 to network 0.0.0.0 203.0.113.128 255.255.255.192 is subnetted, 1 subnets C 203.0.113.1288 is directly connected, Ethernet0 203.0.113.30 is variably subnetted, 2 subnets, 2 masks O IA 203.0.113.41 255.255.255.255 [110/75] via 203.0.113.151, 00:16:31, Serial0 203.0.113.150 255.255.255.192 is subnetted, 3 subnets C 203.0.113.150 is directly connected, Serial0 O IA 203.0.113.64 [110/74] via 203.0.113.151, 00:16:31, Serial0 O IA 203.0.113.151 [110/84] via 203.0.113.151, 00:16:31, Serial0 S* 0.0.0.0 0.0.0.0 is directly connected, Ethernet0 RTC# ip subnet-zero interface Ethernet0 ip address 203.0.113.67 255.255.255.192 interface Serial1 ip address 203.0.113.151 255.255.255.192 router ospf 10 network 203.0.113.64 0.0.0.63 area 0 network 203.0.113.150 0.0.0.63 area 1 RTF#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 203.0.113.152 to network 0.0.0.0 203.0.113.128 255.255.255.192 is subnetted, 1 subnets O E2 203.0.113.1288 [110/10] via 203.0.113.152, 04:49:05, Serial1 203.0.113.30 255.255.255.255 is subnetted, 1 subnets O 203.0.113.41 [110/11] via 203.0.113.68, 04:49:06, Ethernet0 203.0.113.150 255.255.255.192 is subnetted, 3 subnets C 203.0.113.150 is directly connected, Serial1 C 203.0.113.64 is directly connected, Ethernet0 O 203.0.113.151 [110/20] via 203.0.113.68, 04:49:06, Ethernet0 O*E2 0.0.0.0 0.0.0.0 [110/10] via 203.0.113.152, 04:49:06, Serial1

数据库常规视图

RTC#show ip ospf database OSPF Router with ID (203.0.113.67) (Process ID 10) Router Link States (Area 1) Link ID ADV Router Age Seq# Checksum Link count 203.0.113.67 203.0.113.67 48 0x80000008 0xB112 2 203.0.113.16 203.0.113.16 212 0x80000006 0x3F44 2 Summary Net Link States (Area 1) Link ID ADV Router Age Seq# Checksum 203.0.113.41 203.0.113.67 602 0x80000002 0x90AA 203.0.113.64 203.0.113.67 620 0x800000E9 0x3E3C 203.0.113.151 203.0.113.67 638 0x800000E5 0xA54E Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 203.0.113.41 203.0.113.41 179 0x80000029 0x9ADA 3 203.0.113.67 203.0.113.67 675 0x800001E2 0xDD23 1 Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 203.0.113.68 203.0.113.41 334 0x80000001 0xB6B5 Summary Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 203.0.113.150 203.0.113.67 792 0x80000002 0xAEBD Summary ASB Link States (Area 0) Link ID ADV Router Age Seq# Checksum 203.0.113.16 203.0.113.67 579 0x80000001 0xF9AF AS External Link States Link ID ADV Router Age Seq# Checksum Tag 0.0.0.0 203.0.113.16 1787 0x80000001 0x98CE 10 203.0.113.1288 203.0.113.16 5 0x80000002 0x93C4 0

这是整个 OSPF 数据库的概览。数据库按照区域列出。在本例中，我们查看作为 ABR 的 RTC 数据库。区域 1 和区域 0 的数据库都已列出。

区域 1 由路由器链路和汇总链路组成。不存在网络链路，因为 area 1 中的任何网段上都不存在 DR。area 1 中不存在汇总 ASBR 链路，因为唯一的 ASBR 恰好位于 area 0 中。

外部链路不属于任何特定区域，因为它们会泛洪。请注意，所有链路都是从某一区域中的所有路由器聚集的累积链路。

请重点关注 area 0 中的数据库。此处指示的链路ID实际上是链路状态ID。这是整个路由器而不是特定链路的表示形式。这似乎有些模糊。

请记住，此概括性链路 ID（实际上是链路状态 ID）代表整个路由器，而不仅仅是一条链路。

路由器链路

Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 203.0.113.41 203.0.113.41 179 0x80000029 0x9ADA 3 203.0.113.67 203.0.113.67 675 0x800001E2 0xDD23 1

从路由器链路开始。为 203.0.113.41 和 203.0.113.67 列出了两个条目，这些是区域 0 中的两个路由器的 RID。还指出了区域 0 中每个路由器的链路数。RTA 有三条到区域 0 的链路，RTC 有一条链路。RTC 路由器链路的详细视图如下：

RTC#show ip ospf database router 203.0.113.67  OSPF Router with ID (203.0.113.67) (Process ID 10) Router Link States (Area 1) LS age: 1169 Options: (No TOS-capability) LS Type: Router Links Link State ID: 203.0.113.67 Advertising Router: 203.0.113.67 LS Seq Number: 80000008 Checksum: 0xB112 Length: 48 Area Border Router Number of Links: 2 Link connected to: another Router (point-to-point) (Link ID) Neighbor Router ID: 203.0.113.16 (Link Data) Router Interface address: 203.0.113.151 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 203.0.113.150 (Link Data) Network Mask: 255.255.255.192 Number of TOS metrics: 0 TOS 0 Metrics: 64

这里需要说明的一点是，OSPF 为每个点对点接口生成一个额外末节链路。如果看到链路计数大于物理接口数，请不要疑惑。

Router Link States (Area 0) LS age: 1227 Options: (No TOS-capability) LS Type: Router Links Link State ID: 203.0.113.67 Advertising Router: 203.0.113.67 LS Seq Number: 80000003 Checksum: 0xA041 Length: 36 Area Border Router  Number of Links: 1 Link connected to: a Transit Network (Link ID) Designated Router address: 203.0.113.68 (Link Data) Router Interface address: 203.0.113.67 Number of TOS metrics: 0 TOS 0 Metrics: 10

请注意，链路 ID 等于所连接 DR 的 IP 地址（不是 RID）；在本例中是 203.0.113.68。链路数据是RTC IP地址。

网络链路

Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 203.0.113.68 203.0.113.41 334 0x80000001 0xB6B5

列出了一条网络链路，以DR的接口IP地址（不是RID）表示，在本例中为203.0.113.68。此条目的详细视图如下：

RTC#show ip ospf database network OSPF Router with ID (203.0.113.67) (Process ID 10) Net Link States (Area 0) Routing Bit Set on this LSA LS age: 1549 Options: (No TOS-capability) LS Type: Network Links Link State ID: 203.0.113.68 (address of Designated Router) Advertising Router: 203.0.113.41 LS Seq Number: 80000002 Checksum: 0xB4B6 Length: 32 Network Mask: 255.255.255.192 Attached Router: 203.0.113.41 Attached Router: 203.0.113.67

请注意，网络链路列出了中转网络所连接路由器的 RID；本例中列出了 RTA 和 RTC 的 RID。

汇总链路

Summary Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 203.0.113.150 203.0.113.67 792 0x80000002 0xAEBD Area 0 has one summary link represented by the IP network address of the link 203.0.113.150. This link was injected by the ABR RTC from area 1 into area 0. A detailed view of this summary link, summary links for area 1 are not listed here: RTC#show ip ospf database summary (area 1 is not listed) Summary Net Link States (Area 0) LS age: 615 Options: (No TOS-capability) LS Type: Summary Links(Network) Link State ID: 203.0.113.150 (summary Network Number) Advertising Router: 203.0.113.67 LS Seq Number: 80000003 Checksum: 0xACBE Length: 28 Network Mask: 255.255.255.192 TOS: 0 Metric: 64

汇总 ASBR 链路

Summary ASB Link States (Area 0) Link ID ADV Router Age Seq# Checksum 203.0.113.16 203.0.113.67 579 0x80000001 0xF9AF

这指明了 ASBR 的身份。在本例中，ASBR 是由其 RID 203.0.113.16 表示的 RTE。将此条目通告到 area 0 的路由器是 RID 为 203.0.113.67 的 RTC。汇总 ASBR 条目的详细视图如下：

RTC#show ip ospf database asbr-summary OSPF Router with ID (203.0.113.67) (Process ID 10) Summary ASB Link States (Area 0) LS age: 802 Options: (No TOS-capability) LS Type: Summary Links(AS Boundary Router) Link State ID: 203.0.113.16 (AS Boundary Router address) Advertising Router: 203.0.113.67 LS Seq Number: 80000003 Checksum: 0xF5B1 Length: 28 Network Mask: 0.0.0.0 TOS: 0 Metric: 64

外部链路

AS External Link States Link ID ADV Router Age Seq# Checksum Tag 0.0.0.0 203.0.113.16 1787 0x80000001 0x98CE 10 203.0.113.1288 203.0.113.16 5 0x80000002 0x93C4 0

我们有两个外部链路，第一个是通过命令注入OSPF的0.0.0. default-information originate 0。

另一条是通过重分配注入 OSPF 的网络 203.0.113.128 8。

负责通告这些网络的路由器是 203.0.113.16（RTE 的 RID）。

以下是外部路由的详细视图：

RTC#show ip ospf database external OSPF Router with ID (203.0.113.67) (Process ID 10) AS External Link States Routing Bit Set on this LSA LS age: 208 Options: (No TOS-capability) LS Type: AS External Link Link State ID: 0.0.0.0 (External Network Number ) Advertising Router: 203.0.113.16 LS Seq Number: 80000002 Checksum: 0x96CF Length: 36 Network Mask: 0.0.0.0 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 10 Forward Address: 0.0.0.0 External Route Tag: 10 Routing Bit Set on this LSA LS age: 226 Options: (No TOS-capability) LS Type: AS External Link Link State ID: 203.0.113.1288 (External Network Number) Advertising Router: 203.0.113.16 LS Seq Number: 80000002 Checksum: 0x93C4 Length: 36 Network Mask: 255.255.255.192 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 10 Forward Address: 0.0.0.0 External Route Tag: 0

请注意转发地址。只要此地址为 0.0.0.0，就表示可通过通告路由器（在本示例中为 203. 250.16.130） 访问外部路由。

这就是 ABR 使用 ASBR 汇总链路将 ASBR 的身份注入其他区域的原因。

此转发地址并不总是 0.0.0.0。在某些情况下，此地址可以是同一分段上其他路由的 IP 地址。下图对这种情况进行了说明：

在这种情况下，RTB运行BGP和RTA，OSPF运行域其余部分。RTA不运行OSPF。RTB将BGP路由重分发到OSPF。

根据 OSPF，RTB 是通告外部路由的 ASBR。在本例中，转发地址设置为 172.16.0.11，而不是通告路由器 (0.0.0.0) RT B。

无需进行额外的跳跃。OSPF 域内的路由器必须通过 OSPF 到达转发地址，才能将外部路由放入 IP 路由表中。

如果通过某些其他协议到达转发地址或不可访问转发地址，则外部条目将位于数据库中，但不在 IP 路由表中。

如果 RTB 和 RTC 都是 ASBR（RTC 与 RTA 运行 BGP），则会出现另一种情况。在这种情况下，为了避免重复工作，两台路由器中有一台不会通告（刷新）外部路由。具有较高 RID 的路由器胜出。

完整数据库

这是供练习使用的整个数据库的列表。现在您能够查看并解释每个条目：

RTC#show ip ospf database router OSPF Router with ID (203.0.113.67) (Process ID 10) Router Link States (Area 1) LS age: 926 Options: (No TOS-capability) LS Type: Router Links Link State ID: 203.0.113.67 Advertising Router: 203.0.113.67 LS Seq Number: 80000035 Checksum: 0x573F Length: 48 Area Border Router Number of Links: 2 Link connected to: another Router (point-to-point) (Link ID) Neighbor Router ID: 203.0.113.16 (Link Data) Router Interface address: 203.0.113.151 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 203.0.113.150 (Link Data) Network Mask: 255.255.255.192 Number of TOS metrics: 0 TOS 0 Metrics: 64 Routing Bit Set on this LSA LS age: 958 Options: (No TOS-capability) LS Type: Router Links Link State ID: 203.0.113.16 Advertising Router: 203.0.113.16 LS Seq Number: 80000038 Checksum: 0xDA76 Length: 48 AS Boundary Router Number of Links: 2 Link connected to: another Router (point-to-point) (Link ID) Neighbor Router ID: 203.0.113.67 (Link Data) Router Interface address: 203.0.113.152 Number of TOS metrics: 0 TOS 0 Metrics: 64 Link connected to: a Stub Network (Link ID) Network/subnet number: 203.0.113.150 (Link Data) Network Mask: 255.255.255.192 Number of TOS metrics: 0 TOS 0 Metrics: 64 Router Link States (Area 0) Routing Bit Set on this LSA LS age: 1107 Options: (No TOS-capability) LS Type: Router Links Link State ID: 203.0.113.41 Advertising Router: 203.0.113.41 LS Seq Number: 8000002A Checksum: 0xC0B0 Length: 60 AS Boundary Router Number of Links: 3 Link connected to: a Stub Network (Link ID) Network/subnet number: 203.0.113.41 (Link Data) Network Mask: 255.255.255.255 Number of TOS metrics: 0 TOS 0 Metrics: 1 Link connected to: a Stub Network (Link ID) Network/subnet number: 203.0.113.151 (Link Data) Network Mask: 255.255.255.192 Number of TOS metrics: 0 TOS 0 Metrics: 10 Link connected to: a Transit Network (Link ID) Designated Router address: 203.0.113.68 (Link Data) Router Interface address: 203.0.113.68 Number of TOS metrics: 0 TOS 0 Metrics: 10 LS age: 1575 Options: (No TOS-capability) LS Type: Router Links Link State ID: 203.0.113.67 Advertising Router: 203.0.113.67 LS Seq Number: 80000028 Checksum: 0x5666 Length: 36 Area Border Router Number of Links: 1 Link connected to: a Transit Network (Link ID) Designated Router address: 203.0.113.68 (Link Data) Router Interface address: 203.0.113.67 Number of TOS metrics: 0 TOS 0 Metrics: 10 RTC#show ip ospf database network OSPF Router with ID (203.0.113.67) (Process ID 10) Net Link States (Area 0) Routing Bit Set on this LSA LS age: 1725 Options: (No TOS-capability) LS Type: Network Links Link State ID: 203.0.113.68 (address of Designated Router) Advertising Router: 203.0.113.41 LS Seq Number: 80000026 Checksum: 0x6CDA Length: 32 Network Mask: 255.255.255.192 Attached Router: 203.0.113.41 Attached Router: 203.0.113.67 RTC#show ip ospf database summary OSPF Router with ID (203.0.113.67) (Process ID 10) Summary Net Link States (Area 1) LS age: 8 Options: (No TOS-capability) LS Type: Summary Links(Network) Link State ID: 203.0.113.41 (summary Network Number) Advertising Router: 203.0.113.67 LS Seq Number: 80000029 Checksum: 0x42D1 Length: 28 Network Mask: 255.255.255.255 TOS: 0 Metric: 11 LS age: 26 Options: (No TOS-capability) LS Type: Summary Links(Network) Link State ID: 203.0.113.64 (summary Network Number) Advertising Router: 203.0.113.67 LS Seq Number: 80000030 Checksum: 0xB182 Length: 28 Network Mask: 255.255.255.192 TOS: 0 Metric: 10 LS age: 47 Options: (No TOS-capability) LS Type: Summary Links(Network) Link State ID: 203.0.113.151 (summary Network Number) Advertising Router: 203.0.113.67 LS Seq Number: 80000029 Checksum: 0x1F91 Length: 28 Network Mask: 255.255.255.192 TOS: 0 Metric: 20 Summary Net Link States (Area 0) LS age: 66 Options: (No TOS-capability) LS Type: Summary Links(Network) Link State ID: 203.0.113.150 (summary Network Number) Advertising Router: 203.0.113.67 LS Seq Number: 80000025 Checksum: 0x68E0 Length: 28 Network Mask: 255.255.255.192 TOS: 0 Metric: 64 RTC#show ip ospf asbr-summary OSPF Router with ID (203.0.113.67) (Process ID 10) Summary ASB Link States (Area 0) LS age: 576 Options: (No TOS-capability) LS Type: Summary Links(AS Boundary Router) Link State ID: 203.0.113.16 (AS Boundary Router address) Advertising Router: 203.0.113.67 LS Seq Number: 80000024 Checksum: 0xB3D2 Length: 28 Network Mask: 0.0.0.0 TOS: 0 Metric: 64 RTC#show ip ospf database external OSPF Router with ID (203.0.113.67) (Process ID 10) AS External Link States Routing Bit Set on this LSA LS age: 305 Options: (No TOS-capability) LS Type: AS External Link Link State ID: 0.0.0.0 (External Network Number) Advertising Router: 203.0.113.16 LS Seq Number: 80000001 Checksum: 0x98CE Length: 36 Network Mask: 0.0.0.0 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 10 Forward Address: 0.0.0.0 External Route Tag: 10 Routing Bit Set on this LSA LS age: 653 Options: (No TOS-capability) LS Type: AS External Link Link State ID: 203.0.113.1288 (External Network Number) Advertising Router: 203.0.113.16 LS Seq Number: 80000024 Checksum: 0x4FE6 Length: 36 Network Mask: 255.255.255.192 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 10 Forward Address: 0.0.0.0 External Route Tag: 0

附录 B：OSPF 和 IP 组播地址

OSPF 使用 IP 多播交换 Hello 数据包和链路状态更新。IP 组播地址的实施使用 D 类地址。D 类地址的范围是从 224.0.0.0 到 239.255.255.255。

为 OSPF 保留了一些特殊的 IP 组播地址：

- 224.0.0.5：所有 OSPF 路由器都必须能够传输和侦听此地址。

- 224.0.0.6：所有 DR 和 BDR 路由器必须能够传输和侦听此地址。

IP 组播地址和 MAC 地址之间的映射有以下规则：

对于支持多播的多路访问网络，IP 地址的低位 23 位用作 MAC 多播地址 01-005E-00-00- 00 的低位。例如：

- 224.0.0.5 将映射到 01-00-5E-00-00-05

- 224.0.0.6将映射到01-00-5E-00-00-06

OSPF在令牌环网络上使用广播。

附录C：可变长子网掩码(VLSM)

这是一个二进制/十进制转换表：

0000

0001

0010

0011

0100

0101

0110

0111

0

0000

16

0000

32

0000

48

0000

64

0000

80

000

96

0000

112

0000

1

0001

17

0001

33

0001

49

0001

65

0001

81

0001

97

0001

113

0001

2

0010

18

0010

34

0010

50

0010

66

0010

82

0010

98

0010

114

0010

3

0011

19

0011

35

0011

51

0011

67

0011

83

0011

99

0011

115

0011

4

0100

20

01点

36

0100

52

0100

68

0100

84

0100

100

0100

116

0100

5

0101

21

0101

37

0101

53

0101

69

0101

85

0101

101

0101

117

0101

6

0110

22

0110

38

0110

54

0110

70

0110

86

0110

102

0110

118

0110

7

0111

23

0111

39

0111

55

0111

71

0111

87

0111

103

0111

119

0111

8

1000

24

1000

40

1000

56

1000

72

1000

88

1000

104

1000

120

1000

9

1001

25

1001

41

1001

57

1001

73

1001

89

1001

105

1001

121

1001

10

1010

26

1010

42

1010

58

1010

74

1010

90

1010

106

1010

122

1010

11

1011

27

1011

43

1011

59

1011

75

1011

91

1011

107

1011

123

1011

12

1100

28

1100

44

1100

60

1100

76

1100

92

1100

108

1100

124

1100

13

1101

29

1101

45

1101

61

1101

77

1101

93

1101

109

1101

125

1101

14

1110

30

1110

46

1110

62

1110

78

1110

94

1110

110

1110

126

1110

15

1111

31

1111

47

1111

63

1111

79

1111

95

1111

111

1111

127

1111

1000

1001

1010

1011

1100

1101

1110

1111

128

0000

144

0000

160

0000

176

0000

192

0000

208

0000

224

000

240

0000

129

0001

145

0001

161

0001

177

0001

193

0001

209

0001

225

0001

241

0001

130

0010

146

0010

162

0010

178

0010

194

0010

210

0010

226

0010

242

0010

131

0011

147

0011

163

0011

179

0011

195

0011

211

0011

227

0011

243

0011

132

0100

148

0100

164

01点

180

0100

196

0100

212

0100

228

01点

244

0100

133

0101

149

0101

165

0101

181

0101

197

0101

213

0101

229

0101

245

0101

134

0110

150

0110

166

0110

182

0110

198

0110

214

0110

230

0110

246

0110

135

0111

151

0111

167

0111

183

0111

199

0111

215

0111

231

0111

247

0111

136

1000

152

1000

168

1000

184

1000

200

1000

216

1000

232

1000

248

1000

137

1001

153

1001

169

1001

185

1001

201

1001

217

1001

233

1001

249

1001

138

1010

154

1010

170

1010

186

1010

202

1010

218

1010

234

1010

250

1010

139

1011

155

1011

171

1011

187

1011

203

1011

219

1011

235

1011

251

1011

140

1100

156

1100

172

1100

188

1100

204

1100

220

1100

236

1100

252

1100

141

1101

157

1101

173

1101

189

1101

205

1101

221

1101

237

1101

253

1101

142

1110

158

1110

174

1110

190

1110

206

1110

222

1110

238

1110

254

1110

143

1111

159

1111

175

1111

191

1111

207

1111

223

1111

239

1111

255

1111

可变长子网掩码的理念是更为了灵活地将主网划分为多个子网，并在每个子网中保持足够数量的主机。

如果不使用 VLSM，则一个子网掩码只能应用于主网络。这在指定了所需子网数时，会限制主机数。

如果选择的掩码使您拥有足够的子网，则无法在每个子网中分配足够的主机。对于主机也是如此；如果掩码允许足够多的主机，则无法提供足够多的子网空间。

例如，假设为您分配到了一个 C 类网络 192.168.0.0，您需要将该网络划分为三个子网，其中一个子网中有 100 台主机，其余子网有 50 台主机。

忽略两端限制 0 和 255，理论上您有 256 个地址 (192.168.0.0 - 192.168.0.255) 可用。如果不使用 VLSM，则这是不可能实现的。

有少数几个子网掩码可供使用；请注意，掩码必须从左侧开始有若干个连续的 1，而其余位全部为 0。

-252 (1111 1100) The address space is divided into 64. -248 (1111 1000) The address space is divided into 32. -240 (1111 0000) The address space is divided into 16. -224 (1110 0000) The address space is divided into 8. -192 (1100 0000) The address space is divided into 4. -128 (1000 0000) The address space is divided into 2.

如果没有 VLSM，可以选择使用掩码 255.255.255.128，并将地址划分为 2 个子网，每个子网分配 128 个主机。或使用 255.255.255.192，并将空间划分为 4 个子网，每个子网分配 64 个主机。

这无法满足要求。如果使用多个掩码，则您可以使用掩码 128，并使用掩码 192 对地址的第二块进一步进行子网划分。

下表显示如何划分地址空间：

为每个掩码分配 IP 地址时请务必谨慎。为路由器或主机分配 IP 地址后，您就用完了该分段的整个子网。

例如，如果将 192.168.0.10 255.255.255.128 分配给 E2，则 E2 将使用 192.168.0.0 和 192.168.0.127 之间的整个地址范围。

同样，如果将 192.168.0.160 255.255.255.128 分配给 E2，则 E2 网段将使用 192.168.0.128 和 192.168.0.255 之间的整个地址范围。

以下示例说明了路由器如何解析这些地址。请记住，每当您使用不同于自然掩码的掩码时（例如创建子网），如果 IP 地址和掩码的组合结果导致子网零，则路由器会发出警告。

在路由 ip subnet-zero 器上使用命令可解决此问题。

RTA# ip subnet-zero interface Ethernet2 ip address 192.168.0.10 255.255.255.128 interface Ethernet3 ip address 192.168.0.160 255.255.255.192 interface Ethernet4 ip address 192.168.0.226 255.255.255.192 RTA#show ip route connected 192.168.0.0 is variably subnetted, 3 subnets, 2 masks C 192.168.0.0 255.255.255.128 is directly connected, Ethernet2 C 192.168.0.128 255.255.255.192 is directly connected, Ethernet3 C 192.168.0.192 255.255.255.192 is directly connected, Ethernet4

相关信息

- Cisco IOS® IP 路由：OSPF 命令参考

- OSPF 和 MTU

- 由于MTU不匹配，OSPF邻居停滞在exstart和exchange状态

- OSPF 支持页

- OSPF：常见问题解答

- 技术支持和文档 - Cisco Systems