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

OSPF 设计指南

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 27 日) | 反馈


目录


简介

RFC 2328 中定义的开放最短路径优先 (OSPF) 协议,是用于分配单个自控系统中的路由信息的内部网关协议。leavingcisco.com 本文介绍 OSPF 如何工作以及如何用于设计和构建大型复杂网络。

背景信息

开发 OSPF 协议是因为 Internet 社区中需要为 TCP/IP 协议族引入具备强大功能的非专有内部网关协议 (IGP)。关于创建 Internet 通用互操作 IGP 的讨论从 1988 年就开始了,但直到 1991 年才正式成形。当时,OSPF 工作组请求为了 Internet 草案标准的发展而考虑 OSPF。

OSPF 协议基于链路状态技术,不同于传统 Internet 路由协议(如 RIP)中使用的基于 Bellman-Ford 矢量的算法。OSPF 引入了一些新概念,如路由更新身份验证、可变长度子网掩码 (VLSM)、路由汇总等。

以下章节将讨论 OSPF 术语、算法以及该协议在当今的大型复杂网络设计方面的利弊。

OSPF 与 RIP

随着当今网络的快速成长和扩展,RIP 的局限性显得尤为突出。RIP 的以下一些限制在大型网络中可能会导致出现问题:

  • RIP 的跃点限制为 15 个。跨幅超过 15 个跃点(15 个路由器)的 RIP 网络是无法实现的。

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

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

  • RIP 的收敛速度慢于 OSPF。在大型网络中,收敛大约需要几分钟的时间。RIP 路由器会经历一段抑制和垃圾回收时期,并缓慢地使最近未接收的信息超时。这在大型环境中并不合适,并且可能导致路由不一致。

  • RIP 没有网络延迟和链路成本的概念。路由决策基于跃点计数。与目标之间的跃点计数最少的路径始终是首选路径,即使较长的路径具有更佳的聚合链路带宽和较少的延迟也是如此。

  • RIP 网络是平面网络。没有区域或边界的概念。随着无类路由的引入以及聚合和汇总的智能使用,RIP 网络似乎已经落伍。

名为 RIP2 的新版 RIP 中引入了一些增强功能。RIP2 解决了 VLSM、身份验证和多播路由更新的问题。RIP2 并没有对 RIP(现在称为 RIP 1)实现重大改进,因为它仍然具有跃点计数和收敛缓慢方面的限制,而这两方面对当今的大型网络非常重要。

另一方面,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 作为树的根并计算每个目标的最小成本。

/image/gif/paws/7039/spf1.gif

以上是以 RTA 为视角的网络视图。请注意成本计算中的箭头方向。例如,当计算到网络 192.213.11.0 的成本时,不涉及从 RTB 接口到网络 128.213.0.0 的成本。RTA 可以通过 RTB 到达 192.213.11.0,成本为 15 (10+5)。RTA 也可以通过 RTC 以 20 (10+10) 的成本或通过 RTB 以 20 (10+5+5) 的成本到达 222.211.10.0。如果到同一个目标存在成本相等的路径,则 Cisco 的 OSPF 实现将会最多跟踪到同一目标的六个下一跃点。

在路由器生成最短路径树之后,将开始相应地生成路由表。到达直接连接网络的度量(成本)为 0,到达其他网络的成本在树中进行计算。

区域与边界路由器

如前面所述,OSPF 使用泛洪在路由器之间交互链路状态更新。路由信息的所有更改都泛洪给网络中的所有路由器。引入区域是为了给链路状态更新的急剧增长设置边界。路由器上的泛洪和 Dijkstra 算法计算限制为针对区域内的更改。区域之内的所有路由器都有确切的链路状态数据库。属于多个区域的路由器以及将这些区域连接到骨干网区域的路由器称为区域边界路由器 (ABR)。因此,ABR 必须维护描述骨干网区域和所连接的其他区域的信息。

/image/gif/paws/7039/spf2.gif

区域特定于接口。所有接口都在同一个区域之内的路由器称为内部路由器 (IR)。接口在多个区域内的路由器称为区域边界路由器 (ABR)。在 OSPF 和其他路由协议(IGRP、EIGRP、IS-IS、RIP、BGP、Static)或其他 OSPF 路由进程实例之间用作网关(重分配)的路由器称为自治系统边界路由器 (ASBR)。所有路由器都可以是 ABR 或 ASBR。

链路状态数据包

存在不同类型的链路状态数据包,通常可在 OSPF 数据库(附录 A)中看到这些数据包。下图显示了不同的类型:

spf3.gif

如上所示,路由器链路是属于特定区域的路由器上接口的状态指示。每个路由器都将为其所有接口生成路由器链路。汇总链路由 ABR 生成;这便是网络可达性信息在区域之间的散发方式。通常,所有信息都会注入骨干网(区域 0),骨干网又将这些信息传递给其他区域。ABR 也要负责传播 ASBR 可达性。这便是路由器了解如何到达其他 AS 中的外部路由的方式。

网络链路由分段上的指定路由器 (DR) 生成(DR 将在稍后讨论)。此信息表示连接到特定多路访问分段(如以太网、令牌环和 FDDI(也称为 NBMA))的所有路由器。

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

在路由器上启用 OSPF

在路由器上启用 OSPF 涉及配置模式中的以下两个步骤:

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

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

OSPF process-id 是路由器的本地数值。该数据不必匹配其他路由器上的 process-id。可以在同一路由器上运行多个 OSPF 进程,但不建议这样做,因为这样会创建多个数据库实例,从而增加额外的路由器开销。

该 network 命令是将接口分配给特定区域的一种方法。掩码用作快捷方式,可以帮助使用一行配置行放置同一区域内的接口列表。掩码包含通配符位,其中 0 是匹配,1 是“忽略”位,例如 0.0.255.255 指示网络编号的前两个字节匹配。

区域 ID 是要使接口所处的区域编号。区域 ID 可以是介于 0 和 4294967295 之间的整数,或者可以采用类似于 IP 地址 A.B.C.D 的形式。

示例如下:

/image/gif/paws/7039/spf4.gif

RTA#
interface Ethernet0
ip address 192.213.11.1 255.255.255.0

interface Ethernet1
ip address 192.213.12.2 255.255.255.0

interface Ethernet2
ip address 128.213.1.1 255.255.255.0

router ospf 100
network 192.213.0.0 0.0.255.255 area 0.0.0.0
network 128.213.1.1 0.0.0.0 area 23

第一条 network 语句将 E0 和 E1 放置在同一区域 0.0.0.0 内,第二条 network 语句将 E2 放置在区域 23 内。请注意掩码 0.0.0.0,这指示 IP 地址需完全匹配。如果难以算出掩码,则这是将接口放入特定区域的简便方法。

OSPF 身份验证

可以对 OSPF 数据包进行身份验证,从而使路由器可以基于预定义的口令加入路由域。默认情况下,路由器使用空身份验证,这意味着不对网络上的路由交换进行身份验证。还有其他两种身份验证方法:简单口令身份验证和消息概要身份验证 (MD-5)。

简单口令身份验证

简单口令身份验证允许为每个区域配置一个口令(密钥)。同一区域中要加入路由域的路由器必须使用相同的密钥进行配置。此方法的缺点是容易受到被动攻击。任何使用链路分析器的人都很容易从线路中获得口令。若要启用口令身份验证,请使用以下命令:

示例如下:

interface Ethernet0
ip address 10.10.10.10 255.255.255.0
ip ospf authentication-key mypassword

router ospf 10
network 10.10.0.0 0.0.255.255 area 0
area 0 authentication

消息概要身份验证

消息概要身份验证是加密身份验证。密钥(口令)和密钥 ID 在每个路由器上进行配置。路由器使用基于 OSPF 数据包、密钥和密钥 ID 的算法生成附加到数据包的“消息概要”。与简单身份验证不同,此身份验证不会在线路上交换密钥。每个 OSPF 数据包还包含非递减序号,以防止受到重播攻击。

此方法还允许在密钥间进行不间断转换。这对于希望更改 OSPF 口令而不影响通信的管理员很有帮助。如果使用新密钥配置了某个接口,则路由器将发送同一个数据包的多个副本,每个副本使用不同的密钥进行身份验证。路由器检测到其所有邻居都采用新密钥之后,便会停止发送重复的数据包。以下是用于消息概要身份验证的命令:

示例如下:

interface Ethernet0
ip address 10.10.10.10 255.255.255.0
ip ospf message-digest-key 10 md5 mypassword

router ospf 10
network 10.10.0.0 0.0.255.255 area 0
area 0 authentication message-digest 

骨干网与区域 0

当涉及多个区域时,OSPF 具有特殊限制。如果配置了多个区域,则这些区域中必须有一个是区域 0。此区域称为骨干网。当设计网络时,从区域 0 开始然后扩展到其他区域是很好的做法。

骨干网必须位于所有其他区域的中心,即所有区域都必须在物理上连接到骨干网。接下来便是 OSPF 要求所有区域都将路由信息注入骨干网,骨干网又将这些信息散发到其他区域。下图显示 OSPF 网络中的信息流:

/image/gif/paws/7039/spf5.gif

在上图中,所有区域都直接连接到骨干网。有一种比较少见的情况是引入了新区域,但该区域不能直接物理访问骨干网,这时将必须配置虚拟链路。虚拟链路将在下一部分中讨论。请注意不同类型的路由信息。从区域内生成的路由(目标属于该区域)称为区域内路由。这些路由在 IP 路由表中通常由字母 O 表示。从其他区域发起的路由称为区域间或汇总路由。这些路由在 IP 路由表中的符号为 O IA。从其他路由协议(或不同的 OSPF 进程)发起并且通过重分配注入 OSPF 的路由称为外部路由。这些路由在 IP 路由表中由 O E2 或 O E1 表示。到同一个目标的多个路由的优先顺序如下:区域内、区域间、外部 E1、外部 E2。外部类型 E1 和 E2 将在稍后进行说明。

虚拟链路

虚拟链路用于两个目的:

  • 链接与骨干网之间没有物理连接的区域。

  • 在区域 0 发生中断时修补骨干网。

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

如前所述,区域 0 必须位于所有其他区域的中心。在不可能将某个区域物理连接到骨干网的某些少见情况下,可使用虚拟链路。虚拟链路将为断开连接的区域提供到骨干网的逻辑路径。虚拟链路必须在具有公共区域的两个 ABR 之间建立,其中一个 ABR 连接到骨干网。这在下面的示例中进行了演示:

/image/gif/paws/7039/spf6.gif

在本示例中,区域 1 没有与区域 0 之间没有直接物理连接。必须在 RTA 和 RTB 之间配置虚拟链路。区域 2 将用作中转区域,并且 RTB 是到区域 0 的入口点。这样,RTA 和区域 1 与骨干网之间便具有逻辑连接。若要配置虚拟链路,请对 RTA 和 RTB 使用 area <area-id> virtual-link <RID> 路由器 OSPF 子命令,其中“area-id”表示中转区域。在上图中,中转区域为区域 2。RID 是路由器 ID。OSPF 路由器 ID 通常是机箱上的最高 IP 地址或最高环回地址(如果存在)。路由器 ID 只在启动时或每次重新启动 OSPF 进程时进行计算。若要查找路由器 ID,请使用 show ip ospf interface 命令。假设 1.1.1.1 和 2.2.2.2 分别是 RTA 和 RTB 的 RID,这两个路由器的 OSPF 配置应是:

RTA#
router ospf 10
area 2 virtual-link 2.2.2.2


RTB#
router ospf 10
area 2 virtual-link 1.1.1.1

划分骨干网

OSPF 允许使用虚拟链路链接骨干网中不连续的部分。在某些情况下,需要将不同的区域 0 链接到一起。例如,如果某个公司试图使用公共区域 0 将两个独立的 OSPF 网络合并为一个网络,便会发生这种情况。在其他情况下,虚拟链路是作为冗余添加的,以防止由于某些路由器故障而导致将骨干网一分为二。无论出于何种原因,都可以在从各端连接到区域 0 且具有公共区域的独立 ABR 之间配置虚拟链路。这在下面的示例中进行了演示:

/image/gif/paws/7039/spf7.gif

在上图中,两个区域 0 通过虚拟链路链接在一起。如果不存在公共区域,则可以创建一个附加区域(如区域 3)作为中转区域。

如果对不同于骨干网的任意区域进行划分,则骨干网将不使用任何虚拟链路来处理划分。划分的区域的一部分将通过区域间路由(而不是区域内路由)与另一部分联系。

邻居

共享公共分段的路由器成为该分段上的邻居。邻居是通过 Hello 协议进行选择的。Hello 数据包使用 IP 多播(附录 B)定期从每个接口向外发送。当路由器发现其自己出现在邻居的 Hello 数据包中时,这些路由器立刻成为邻居。这样,就可保证进行双向通信。邻居协商仅使用于主地址。辅助地址可在接口上使用以下限制进行配置:这些地址必须与主地址属于同一个区域。

两个路由器必须就以下内容达成一致才能成为邻居:

  • 区域 ID:两个路由器具有一个公共分段;它们的接口必须属于该分段上的同一区域。当然,接口应属于同一子网,并且有相似的掩码。

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

  • Hello 间隔和 dead 间隔:OSPF 在每个分段上交换 Hello 数据包。这是路由器使用的一种保持连接形式,目的是为了确认路由器在分段上的存在以及在多路访问分段上选择指定路由器 (DR)。Hello 间隔以秒为单位指定路由器在 OSPF 接口上发送的 hello 数据包之间的时间长度。停顿间隔是在路由器的邻居宣布 OSPF 路由器停机前未接收到该路由器 Hello 数据包的秒数。

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

  • 末节区域标志:两个路由器还必须对 Hello 数据包中的末节区域标志达成一致才能成为邻居。末节区域将在后面的部分中讨论。请记住,定义末节区域将影响邻居选举过程。

邻接

邻接是建立邻居过程后的下一个步骤。邻接路由器是超出简单的 Hello 交换范围并且进行到数据库交换过程的路由器。为了使特定分段上的信息交换量减到最小,OSPF 在每个多路访问分段上选择一个路由器作为指定路由器 (DR),一个路由器作为备用指定路由器 (BDR)。BDR 选择作为 DR 停机时的备用机制。采用这种做法的目的是使路由器具有用于信息交换的中心联络点。不是每个路由器都与分段上的每个其他路由器交换更新,而是每个路由器都与 DR 和 BDR 交换更新。DR 和 BDR 再将信息中继给其他每个路由器。从数学的角度来看,这减少了从 O(n*n) 到 O(n) 的信息交换,其中 n 是多路访问分段上的路由器数量。下面的路由器模型演示了 DR 和 BDR:

/image/gif/paws/7039/spf8.gif

在上图中,所有路由器都共享一个公共多路访问分段。由于 Hello 数据包的交换,一个路由器选作 DR,另一个选作 BDR。分段上的每个路由器(已经成为邻居)都将尝试建立与 DR 和 BDR 的邻接。

DR 选择

DR 和 BDR 选择是通过 Hello 协议完成的。Hello 数据包通过 IP 多播数据包(附录 B)在每个分段上进行交换。分段上具有最高 OSPF 优先级的路由器将成为该分段的 DR。会为 BDR 重复相同的过程。如果优先级相同,则具有最高 RID 的路由器将胜出。接口 OSPF 优先级的默认值是一。请记住,DR 和 BDR 概念是针对每个多路访问分段的。在接口上设置 ospf 优先级是使用 ip ospf priority <value> 接口命令完成的。

优先级值为零指示接口将不会选作 DR 或 BDR。优先级为零的接口的状态将为 DROTHER。下图演示 DR 选择:

/image/gif/paws/7039/spf9.gif

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

构建邻接

在完成多个阶段之后,邻接构建过程会生效。成为邻接的路由器将具有确切的链路状态数据库。下面是一个接口在与另一个路由器形成邻接之前所经历的状态的简要汇总:

  • 下来:未从分段上的任何路由器接收到任何信息。

  • 尝试:在非广播多路访问网云(如帧中继和 X.25)上,此状态指示未从邻居接收到任何最新信息。应通过在减速论询间隔中发送 Hello 数据包,来尝试与邻居进行联络。

  • Init :接口检测到一个来自邻居的 Hello 数据包,但尚未建立双向通信。

  • Two-way:与邻居之间具有双向通信。路由器发现自己出现在来自邻居的 Hello 数据包中。在此阶段结束时,DR 和 BDR 选择将完成。在双向阶段结束时,路由器将决定是否继续构建邻接。决策基于其中一个路由器是否是 DR 或 BDR 或者链路是点对点还是虚拟链路。

  • Exstart :路由器尝试建立将在信息交换数据包中使用的初始序号。该序号确保路由器始终能够获得最新信息。一个路由器将成为主路由器,其他路由器将成为辅助路由器。主路由器将轮询辅助路由器来获取信息。

  • Exchange :路由器将通过发送数据库描述数据包来描述其整个链路状态数据库。在此状态中,数据包可以泛洪到在路由器上的其他接口。

  • 装载:在此状态中,路由器完成信息交换。路由器生成了链路状态请求列表和链路状态转发列表。看起来未完成或过时的所有信息都将放在请求列表中。发送的所有更新都将放入转发列表,直到得到确认。

  • 全双工:在此状态中,邻接完成。邻居路由器完全邻接。邻接路由器将有一个相似的链路状态数据库。

请看下面的示例:

/image/gif/paws/7039/spf10.gif

RTA、RTB、RTD 和 RTF 共享区域 0.0.0.0 中的一个公共分段 (E0)。下面是 RTA 和 RTF 的配置。RTB 和 RTD 应具有与 RTF 相似的配置,而且不会包含在其中。

RTA#
hostname RTA 


interface Loopback0
 ip address 203.250.13.41 255.255.255.0


interface Ethernet0
 ip address 203.250.14.1 255.255.255.0


router ospf 10
 network 203.250.13.41 0.0.0.0 area 1
 network 203.250.0.0 0.0.255.255 area 0.0.0.0


RTF#
hostname RTF
interface Ethernet0
 ip address 203.250.14.2 255.255.255.0


router ospf 10
 network 203.250.0.0 0.0.255.255 area 0.0.0.0 

上面的简单示例演示了调试 OSPF 网络时非常有用的几个命令。

此命令用于快速检查是否所有接口都属于它们应在的区域。OSPF network 命令的列出顺序是非常重要的。在 RTA 的配置中,如果“network 203.250.0.0 0.0.255.255 area 0.0.0.0”语句位于“network 203.250.13.41 0.0.0.0 area 1”语句之前,则所有接口都将位于区域 0 中,这是不正确的,因为环回位于区域 1 中。让我们看看 RTA、RTF、RTB 和 RTD 上的命令输出:

RTA#show ip ospf interface e0
Ethernet0 is up, line protocol is up 
  Internet Address 203.250.14.1 255.255.255.0, Area 0.0.0.0 
  Process ID 10, Router ID 203.250.13.41, Network Type BROADCAST, Cost: 
10
  Transmit Delay is 1 sec, State BDR, Priority 1
  Designated Router (ID) 203.250.15.1, Interface address 203.250.14.2
  Backup Designated router (ID) 203.250.13.41, Interface address 
203.250.14.1
  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.250.15.1  (Designated Router)
Loopback0 is up, line protocol is up 
  Internet Address 203.250.13.41 255.255.255.255, Area 1 
  Process ID 10, Router ID 203.250.13.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.250.14.2 255.255.255.0, Area 0.0.0.0
  Process ID 10, Router ID 203.250.15.1, Network Type BROADCAST, Cost: 10
  Transmit Delay is 1 sec, State DR, Priority 1 
  Designated Router (ID) 203.250.15.1, Interface address 203.250.14.2
  Backup Designated router (ID) 203.250.13.41, Interface address 
203.250.14.1
  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.250.13.41  (Backup Designated Router)


RTD#show ip ospf interface e0
Ethernet0 is up, line protocol is up 
  Internet Address 203.250.14.4 255.255.255.0, Area 0.0.0.0 
  Process ID 10, Router ID 192.208.10.174, Network Type BROADCAST, Cost: 
10
  Transmit Delay is 1 sec, State DROTHER, Priority 1 
  Designated Router (ID) 203.250.15.1, Interface address 203.250.14.2
  Backup Designated router (ID) 203.250.13.41, Interface address 
203.250.14.1
  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.250.15.1  (Designated Router)
    Adjacent with neighbor 203.250.13.41  (Backup Designated Router)


RTB#show ip ospf interface e0
Ethernet0 is up, line protocol is up 
  Internet Address 203.250.14.3 255.255.255.0, Area 0.0.0.0
  Process ID 10, Router ID 203.250.12.1, Network Type BROADCAST, Cost: 10
  Transmit Delay is 1 sec, State DROTHER, Priority 1 
  Designated Router (ID) 203.250.15.1, Interface address 203.250.14.2
  Backup Designated router (ID) 203.250.13.41, Interface address 
203.250.14.1
  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.250.15.1  (Designated Router)
    Adjacent with neighbor 203.250.13.41  (Backup Designated Router)

上述输出显示了非常重要的信息。让我们看看 RTA 的输出。Ethernet0 位于区域 0.0.0.0 中。进程 ID 是 10 (router ospf 10),路由器 ID 是 203.250.13.41。请记住,RID 是机箱或环回接口上的最高 IP 地址,在启动时或每次重新启动 OSPF 进程时进行计算。接口的状态是 BDR。因为所有路由器在 Ethernet 0 具有相同的 OSPF 优先级(默认值是 1),所以选择 RID 较高的 RTF 的接口作为 DR。同样地,选择 RTA 作为 BDR。RTD 和 RTB 不是 DR 也不是 BDR,其状态是 DROTHER。

另请注意邻居计数和邻接计数。RTD 有三个邻居,并与其中两个(DR 和 BDR)邻接。RTF 有三个邻居并与所有邻居邻接,因为它是 DR。

关于网络类型的信息非常重要,将确定接口的状态。在广播网络(如以太网)上,DR 和 BDR 的选择应与最终用户无关。由哪个路由器作为 DR 或 BDR 应无关紧要。但在其他情况下(例如帧中继和 X.25 此类的 NBMA 媒体),这对于 OSPF 的正常工作非常重要。幸运地是,随着点对点和点对多点子接口的引入,DR 选择不再成为问题。NBMA 上的 OSPF 将在下一部分中讨论。

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

让我们看看 RTD 的输出:

RTD#show ip ospf neighbor
  
Neighbor ID    Pri State         Dead Time  Address      Interface
 
203.250.12.1    1  2WAY/DROTHER  0:00:37   203.250.14.3  Ethernet0
203.250.15.1    1  FULL/DR       0:00:36   203.250.14.2  Ethernet0
203.250.13.41   1  FULL/BDR      0:00:34   203.250.14.1  Ethernet0

show ip ospf neighbor 命令显示特定分段上的所有邻居的状态。如果“Neighbor ID”不属于您查看的分段,请不要担心。在我们的例子中,203.250.12.1 和 203.250.15.1 不在 Ethernet0 上。这很“正常”,因为“Neighbor ID”实际上是可以是机箱上任意 IP 地址的 RID。RTD 和 RTB 仅仅是邻居,所以状态是 2WAY/DROTHER。RTD 与 RTA 和 RTF 邻接,状态是 FULL/DR 和 FULL/BDR。

点对点接口上的邻接

OSPF 将始终与点对点接口(如点对点串行线路)另一端上的邻居形成邻接。没有 DR 或 BDR 的概念。串行接口的状态为点对点。

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

当在非广播多路访问媒体(例如帧中继、X.25、ATM)上配置 OSPF 时,应特别谨慎。协议对待这些媒体的方式与对待任何其他广播媒体(例如以太网)类似。NBMA 网云通常采用星型拓扑进行构建。PVC 或 SVC 呈部分网状分布,并且物理拓扑不提供 OSPF 认为存在的多路访问。DR 的选择会成为问题,因为 DR 和 BDR 需要与网云上存在的所有路由器之间具有完全物理连接。此外,因为缺乏广播功能,所以 DR 和 BDR 需要具有连接到网云的所有其他路由器的静态列表。这是使用 neighbor ip-address [priority number] [poll-interval seconds] 命令实现的,其中“ip-address”和“priority”是分配给邻居的 IP 地址和 OSPF 优先级。会将优先级为 0 的邻居视为无资格进行 DR 选择。“轮询间隔”是 NBMA 接口在轮询(发送 Hello)到推测处于停顿状态的邻居之前等待的时间量。该 neighbor 命令适用于有可能成为 DR 或 BDR(接口优先级不等于 0)的路由器。下图显示了一个网络图,DR 选择在其中非常重要:

/image/gif/paws/7039/spf11.gif

在上图中,选择 RTA 到网云的接口作为 DR 非常重要。这是因为 RTA 是具有到其他路由器的完全连接的唯一路由器。DR 的选择可能会受到接口上 ospf 优先级设置的影响。不需要成为 DR 或 BDR 的路由器将具有优先级 0,其他路由器可能具有较低优先级。

neighbor 命令的用法不在本文档的讨论范围之内,因为随着引入了将接口网络类型设置为与底层物理媒体无关的任意类型这种新方法,该命令逐渐过时。这将在下一部分中进行说明。

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

在非广播网云上配置静态邻居并使特定路由器成为 DR 或 BDR 会比较复杂,可以使用不同的方法来避免这种复杂性。指定要使用的方法取决于是从头开始构建网络还是纠正现有设计。

点到点子接口

子接口是定义接口的逻辑方法。同一个物理接口可以被分离成多个逻辑接口,每个子接口被定义为点对点的接口。最初创建这种子接口是为了更好地处理 NBMA 上的水平拆分和基于路由协议的向量所导致的问题。

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

/image/gif/paws/7039/spf12.gif

在上图中的 RTA 上,我们可以将 Serial 0 拆分成两个点对点子接口 S0.1 和 S0.2。这样,OSPF 会将网云视为一组点对点链路而不是一个多路访问网络。点对点的唯一缺点是每个分段将属于不同的子网。因为一些管理员已经为整个网云分配了一个 IP 子网,所以这可能是无法接受的。

另一个解决方法是在网云上使用 IP 不编号的接口。对于基于串行线路的 IP 地址来管理广域网的一些管理员,这可能也是个问题。下面是 RTA 和 RTB 的一个典型配置:

RTA#

interface Serial 0
 no ip address
 encapsulation frame-relay

interface Serial0.1 point-to-point
 ip address 128.213.63.6 255.255.252.0
 frame-relay interface-dlci 20

interface Serial0.2 point-to-point
 ip address 128.213.64.6 255.255.252.0
 frame-relay interface-dlci 30

router ospf 10
network 128.213.0.0 0.0.255.255 area 1

RTB#

interface Serial 0
 no ip address
 encapsulation frame-relay

interface Serial0.1 point-to-point
 ip address 128.213.63.5 255.255.252.0
 frame-relay interface-dlci 40

interface Serial1
 ip address 123.212.1.1 255.255.255.0

router ospf 10
network 128.213.0.0 0.0.255.255 area 1
network 123.212.0.0 0.0.255.255 area 0

选择接口网络类型

用于设置 OSPF 接口网络类型的命令是:

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

点对多点接口

OSPF 点对多点接口定义为具有一个或多个邻居的编号点对点接口。此概念拓展了前面讨论的点对点概念。管理员不必须担心每个点对点链路具有多个子网。网云会配置为一个子网。对于不对网云上的 IP 寻址进行任何更改而转换到点对点概念的人员而言,这应该十分适用。此外,他们不必担心 DR 和 neighbor 语句。OSPF 点对多点通过交换附加链路状态更新来进行工作,这些更新包含许多描述与邻居路由器之间连接的信息元素。

spf13.gif

RTA#

interface Loopback0
 ip address 200.200.10.1 255.255.255.0

interface Serial0
 ip address 128.213.10.1 255.255.255.0
 encapsulation frame-relay
 ip ospf network point-to-multipoint

router ospf 10
network 128.213.0.0 0.0.255.255 area 1

RTB#

interface Serial0
 ip address 128.213.10.2 255.255.255.0
 encapsulation frame-relay
 ip ospf network point-to-multipoint

interface Serial1
 ip address 123.212.1.1 255.255.255.0

router ospf 10
network 128.213.0.0 0.0.255.255 area 1
network 123.212.0.0 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 128.213.10.1 255.255.255.0, Area 0
  Process ID 10, Router ID 200.200.10.1, 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 195.211.10.174
    Adjacent with neighbor 128.213.63.130

RTA#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
128.213.10.3      1   FULL/  -        0:01:35     128.213.10.3    Serial0
128.213.10.2      1   FULL/  -        0:01:44     128.213.10.2    Serial0

RTB#show ip ospf interface s0

Serial0 is up, line protocol is up
  Internet Address 128.213.10.2 255.255.255.0, Area 0
  Process ID 10, Router ID 128.213.10.2, 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 200.200.10.1

RTB#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
200.200.10.1      1   FULL/  -        0:01:52     128.213.10.1    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

      200.200.10.0 255.255.255.255 is subnetted, 1 subnets
 O       200.200.10.1 [110/65] via 128.213.10.1,  Serial0
         128.213.0.0 is variably subnetted, 3 subnets, 2 masks
 O    128.213.10.3 255.255.255.255
            [110/128] via 128.213.10.1, 00:00:00, Serial0
 O    128.213.10.1 255.255.255.255
            [110/64] via 128.213.10.1, 00:00:00, Serial0
 C       128.213.10.0 255.255.255.0 is directly connected, Serial0
      123.0.0.0 255.255.255.0 is subnetted, 1 subnets
 C       123.212.1.0 is directly connected, Serial1

 RTC#show ip route

      200.200.10.0 255.255.255.255 is subnetted, 1 subnets
 O       200.200.10.1 [110/65] via 128.213.10.1, Serial1
      128.213.0.0 is variably subnetted, 4 subnets, 2 masks
 O       128.213.10.2 255.255.255.255 [110/128] via 128.213.10.1,Serial1
 O       128.213.10.1 255.255.255.255 [110/64] via 128.213.10.1, Serial1
 C       128.213.10.0 255.255.255.0 is directly connected, Serial1
      123.0.0.0 255.255.255.0 is subnetted, 1 subnets
 O       123.212.1.0 [110/192] via 128.213.10.1, 00:14:29, Serial1

请注意,在 RTC 的 IP 路由表中,网络 123.212.1.0 可通过下一跳 128.213.10.1 到达,但不能通过 128.213.10.2 到达,如同在共享相同子网的帧中继网云上通常所见。这是点对多点配置的一个优点,因为您不需对 RTC 使用静态映射就能到达下一跳 128.213.10.2。

广播接口

此方法是使用静态列出所有现有邻居的“neighbor”命令的一个解决方法。接口将在逻辑上设置为广播,其行为也如同路由器连接到 LAN 一样。DR 和 BDR 选择仍将进行,因此应该特别谨慎,以确保使用全网状拓扑或基于接口优先级的静态 DR 选择。将接口设置为广播的命令是:


ip ospf network broadcast

OSPF 与路由汇总

汇总是将多个路由合并到单个通告中的操作。这通常在区域边界路由器 (ABR) 的边界上完成。虽然汇总可以在任意两个区域间进行配置,但最好在骨干网的方向上进行汇总。这样骨干网就可接收所有聚合地址并将这些地址在汇总后注入其他区域。有两类汇总:

  • 区域间路由汇总

  • 外部路由汇总

区域间路由汇总

区域间路由汇总在 ABR 上完成,适用于从 AS 内部发起的路由。它无法通过重分配应用到注入 OSPF 的外部路由。若要利用汇总,区域中的网络编号应以连续方式分配,从而可将这些地址聚在一个范围内。若要指定地址范围,请在路由器配置模式中执行下面的任务:

area area-id range address mask

其中“area-id”是包含要汇总的网络的区域。“address”和“mask”将指定要汇总在一个范围中的一系列地址。下面是一个汇总示例:

/image/gif/paws/7039/spf14.gif

在上图中,RTB 将从 128.213.64.0 到 128.213.95.0 的一系列子网汇总到一个范围内:128.213.64.0 255.255.224.0。这是使用掩码 255.255.224.0 屏蔽 64 位的最左边 3 位来实现的。同样地,RTC 生成到汇总到骨干网中的汇总地址 128.213.96.0 255.255.224.0。请注意,此汇总成功是因为我们有两个不同的子网范围 64-95 和 96-127。

如果区域 1 和区域 2 之间的子网重叠,则难以进行汇总。骨干网将接收重叠的汇总范围,中间的路由器无法了解基于汇总地址发送通信的目标位置。

下面是 RTB 的相对配置:

RTB#
 router ospf 100
 area 1 range 128.213.64.0 255.255.224.0

在Cisco IOS�软件版本12.1(6)之前,在ABR推荐手工配置, summary-address的丢弃静态路由为了防止可能的路由环路。对于上面显示的汇总路由,您可以使用此命令:

ip route 128.213.64.0 255.255.224.0 null0

在 IOS 12.1(6) 和更高版本中,丢弃路由在默认情况下自动生成。如果因为任何理由而不想使用此丢弃路由,则可以在 router ospf 下配置下面的命令:

[no] discard-route internal

[no] discard-route external

关于汇总地址度量计算的说明:调用 RFC 1583,用于基于可用组件路径的最小度量来计算汇总路由的度量。leavingcisco.com

RFC 2178(现已由 RFC 2328 所取代)更改了用于计算汇总路由度量的指定方法,从而由具有最高(或最大)成本的汇总组件来确定汇总的成本。leavingcisco.com leavingcisco.com

在 IOS 12.0 之前,Cisco 与当时的 RFC 1583 兼容。leavingcisco.com 从 IOS 12.0 开始,Cisco 更改了 OSPF 的行为,以便与新标准 RFC 2328 兼容。leavingcisco.com 这种情况使得如果某一区域内的所有 ABR 未同时升级到新代码,则可能存在次优路由。为了解决这一潜在问题,Cisco IOS 的 OSPF 配置中添加了一条新命令,允许您选择性地禁用与 RFC 2328 的兼容性。leavingcisco.com 新配置命令位于 router ospf 之下,语法如下:

[no] compatible rfc1583 

默认设置与 RFC 1583 兼容。leavingcisco.com 此命令在以下 IOS 版本中可用:

  • 12.1(03)DC

  • 12.1(03)DB

  • 12.001(001.003) - 12.1 主线

  • 12.1(01.03)T - 12.1 T 系列

  • 12.000(010.004) - 12.0 主线

  • 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)SC

外部路由汇总

外部路由汇总特定于通过重分配注入 OSPF 的外部路由。此外,请确保所汇总的外部范围是连续的。对来自两个不同路由器的重叠范围进行汇总可能会导致将数据包发送到错误的目标。汇总通过下面的 router ospf 子命令来实现:


summary-address ip-address mask

此命令仅对在 OSPF 中进行重分配的 ASBR 有效。

/image/gif/paws/7039/spf15.gif

在上图中,RTA 和 RTD 通过重分配将外部路由注入 OSPF。RTA 注入范围为 128.213.64-95 的子网,RTD 注入范围为 128.213.96-127 的子网。若要在每个路由器上都将子网汇总到一个范围内,我们可以执行以下操作:

RTA#
 router ospf 100
 summary-address 128.213.64.0 255.255.224.0
 redistribute bgp 50 metric 1000 subnets

 RTD#
 router ospf 100
 summary-address 128.213.96.0 255.255.224.0
 redistribute bgp 20 metric 1000 subnets

这将导致 RTA 生成一个外部路由 128.213.64.0 255.255.224.0,并将导致 RTD 生成 128.213.96.0 255.255.224.0。

请注意,如果将 summary-address 命令用于 RTB,该命令将不起作用,因为 RTB 不在 OSPF 中进行重分配。

末节区域

OSPF 允许将某些区域配置为末节区域。外部网络(如从其他协议重分配到 OSPF 中的外部网络)不允许泛洪到末节区域中。从这些区域到外界的路由基于默认路由。配置末节区域会缩小某个区域内的拓扑数据库大小,并降低该区域内的路由器内存需求。

符合以下条件的区域可以作为末节区域:该区域存在单个出口点,或者到区域外部的路由不必采用最优路径。后一种说明仅仅指示对于具有多个出口点的末节区域,会有一个或多个边界路由器将默认路由注入该区域。到外界的路由可以采用次优路径到达目标,方法是通过与目标之间距离比其他出口点更远的出口点离开区域。

其他末节区域限制是末节区域不能用作虚拟链路的中转区域。此外,ASBR 不能处于末节区域内部。采取这些限制是因为末节区域主要配置为不进行外部路由,而以上任一种情况都会导致外部链路注入该区域。当然,骨干网不能配置为末节区域。

末节区域内的所有 OSPF 路由器都必须配置为末节路由器。这是因为只要某个区域配置为末节区域,属于该区域的所有接口都会开始交换 Hello 数据包,数据包中带有指示接口是末节接口的标志。实际上这只是 Hello 数据包中设置为 0 的一个位(E 位)。具有公共分段的所有路由器都必须就该标志达成一致。如果不这样,则这些路由器不会成为邻居,路由不会生效。

对末节区域的扩展称为“完全末节区域”。Cisco 通过向末节区域配置添加“no-summary”关键字对此进行指示。完全末节区域会阻止外部路由和汇总路由(区域间路由)进入该区域。这样,只有区域内路由和默认的 0.0.0.0 路由会注入该区域。

将区域配置为末节区域的命令是:


area <area-id> stub [no-summary]

将默认成本配置到区域中的命令是:


area area-id default-cost cost


如果成本不是使用上面的命令设置的,则 ABR 会将值为 1 的成本进行通告。

/image/gif/paws/7039/spf16.gif

假设区域 2 配置为末节区域。下面的示例会显示将区域 2 配置为末节区域之前和之后的 RTE 路由表。

RTC#

 interface Ethernet 0
  ip address 203.250.14.1 255.255.255.0

 interface Serial1
  ip address 203.250.15.1 255.255.255.252

 router ospf 10
  network 203.250.15.0 0.0.0.255 area 2
  network 203.250.14.0 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.250.15.0 255.255.255.252 is subnetted, 1 subnets
 C       203.250.15.0 is directly connected, Serial0
 O IA 203.250.14.0 [110/74] via 203.250.15.1, 00:06:31, Serial0
      128.213.0.0 is variably subnetted, 2 subnets, 2 masks
 O E2    128.213.64.0 255.255.192.0
            [110/10] via 203.250.15.1, 00:00:29, Serial0
 O IA    128.213.63.0 255.255.255.252
            [110/84] via 203.250.15.1, 00:03:57, Serial0
      131.108.0.0 255.255.255.240 is subnetted, 1 subnets
 O       131.108.79.208 [110/74] via 203.250.15.1, 00:00:10, Serial0

RTE 了解区域间路由 (O IA) 203.250.14.0 和 128.213.63.0,并了解区域内路由 (O) 131.108.79.208 和外部路由 (O E2) 128.213.64.0。

如果将区域 2 配置为末节区域,则需要执行以下操作:

RTC#

 interface Ethernet 0
  ip address 203.250.14.1 255.255.255.0

 interface Serial1
  ip address 203.250.15.1 255.255.255.252

 router ospf 10
  network 203.250.15.0 0.0.0.255 area 2
  network 203.250.14.0 0.0.0.255 area 0
  area 2 stub

 RTE#

 interface Serial1
  ip address 203.250.15.2 255.255.255.252
 router ospf 10
 network 203.250.15.0 0.0.0.255 area 2
  area 2 stub

请注意,在 RTE 上也配置了末节区域命令,否则 RTE 永远不会成为 RTC 的邻居。未设置默认成本,因此 RTC 会将 0.0.0.0 通告给 RTE,度量为 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.250.15.1 to network 0.0.0.0

      203.250.15.0 255.255.255.252 is subnetted, 1 subnets
 C       203.250.15.0 is directly connected, Serial0
 O IA 203.250.14.0 [110/74] via 203.250.15.1, 00:26:58, Serial0
      128.213.0.0 255.255.255.252 is subnetted, 1 subnets
 O IA    128.213.63.0 [110/84] via 203.250.15.1, 00:26:59, Serial0
      131.108.0.0 255.255.255.240 is subnetted, 1 subnets
 O       131.108.79.208 [110/74] via 203.250.15.1, 00:26:59, Serial0
 O*IA 0.0.0.0 0.0.0.0 [110/65] via 203.250.15.1, 00:26:59, Serial0

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

现在我们将区域 2 配置为完全末节,并将 0.0.0.0 的默认成本更改为 10。

RTC#

 interface Ethernet 0
  ip address 203.250.14.1 255.255.255.0

 interface Serial1
  ip address 203.250.15.1 255.255.255.252

 router ospf 10
  network 203.250.15.0 0.0.0.255 area 2
  network 203.250.14.0 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.250.15.0 255.255.255.252 is subnetted, 1 subnets
 C       203.250.15.0 is directly connected, Serial0
      131.108.0.0 255.255.255.240 is subnetted, 1 subnets
 O       131.108.79.208 [110/74] via 203.250.15.1, 00:31:27, Serial0
 O*IA 0.0.0.0 0.0.0.0 [110/74] via 203.250.15.1, 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”,则当从除 BGP 路由(这些路由获得值为 1 的度量)之外的所有协议重分配路由时,OSPF 将放入默认值 20。“metric-type”将在下一段落讨论。

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


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

将路由重分配到 OSPF 中时,如果未指定 subnet 关键字,则仅重分配没有进行子网划分的路由。

E1 与 E2 外部路由

外部路由分为两类:外部类型 1 和外部类型 2。二者之间的区别在于计算路由成本(度量)的方式。类型 2 路由的成本始终为外部成本,与到达该路由的内部成本无关。类型 1 成本是用于到达该路由的外部成本和内部成本之和。对于同一目标,类型 1 路由始终优先于类型 2 路由。这在下图中进行了演示:

/image/gif/paws/7039/spf17.gif

如上图所示,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。

/image/gif/paws/7039/spf18.gif

假设我们在 RTC 上添加了两个指向 E0 的静态路由:16.16.16.0 255.255.255.0(/24 记号指示从最左侧开始的 24 位掩码)和 128.213.0.0 255.255.0.0。下面显示在 RTC 上对 redistribute 命令使用不同参数时的不同行为:

RTC#
 interface Ethernet0
  ip address 203.250.14.2 255.255.255.0

 interface Serial1
  ip address 203.250.15.1 255.255.255.252

 router ospf 10
  redistribute static
  network 203.250.15.0 0.0.0.255 area 2
  network 203.250.14.0 0.0.0.255 area 0

 ip route 16.16.16.0 255.255.255.0 Ethernet0
 ip route 128.213.0.0 255.255.0.0 Ethernet0

 RTE#

 interface Serial0
  ip address 203.250.15.2 255.255.255.252

 router ospf 10
 network 203.250.15.0 0.0.0.255 area 2

下面是 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.250.15.0 255.255.255.252 is subnetted, 1 subnets
 C       203.250.15.0 is directly connected, Serial0
 O IA 203.250.14.0 [110/74] via 203.250.15.1, 00:02:31, Serial0
 O E2 128.213.0.0 [110/20] via 203.250.15.1, 00:02:32, Serial0

请注意,唯一显示的外部路由是 128.213.0.0,因为我们没有使用 subnet 关键字。请记住,如果未使用 subnet 关键字,则仅重分配没有进行子网划分的路由。在我们的例子中,16.16.16.0 是未进行子网划分的 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

      16.0.0.0 255.255.255.0 is subnetted, 1 subnets
 O E2    16.16.16.0 [110/50] via 203.250.15.1, 00:00:02, Serial0
      203.250.15.0 255.255.255.252 is subnetted, 1 subnets
 C       203.250.15.0 is directly connected, Serial0
 O IA 203.250.14.0 [110/74] via 203.250.15.1, 00:00:02, Serial0
 O E2 128.213.0.0 [110/50] via 203.250.15.1, 00:00:02, Serial0

请注意,现在显示了 16.16.16.0,并且到外部路由的成本是 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

      16.0.0.0 255.255.255.0 is subnetted, 1 subnets
 O E1    16.16.16.0 [110/114] via 203.250.15.1, 00:04:20, Serial0
      203.250.15.0 255.255.255.252 is subnetted, 1 subnets
 C       203.250.15.0 is directly connected, Serial0
 O IA 203.250.14.0 [110/74] via 203.250.15.1, 00:09:41, Serial0
 O E1 128.213.0.0 [110/114] via 203.250.15.1, 00:04:21, Serial0

请注意,类型更改为 E1,并且成本加上了内部成本 S0(值为 64),因而总成本为 64+50=114。

假设我们将路由映射添加到 RTC 配置,结果如下:

RTC#
 interface Ethernet0
  ip address 203.250.14.2 255.255.255.0

 interface Serial1
  ip address 203.250.15.1 255.255.255.252

 router ospf 10
 redistribute static metric 50 metric-type 1 subnets route-map STOPUPDATE
  network 203.250.15.0 0.0.0.255 area 2
  network 203.250.14.0 0.0.0.255 area 0

 ip route 16.16.16.0 255.255.255.0 Ethernet0
 ip route 128.213.0.0 255.255.0.0 Ethernet0

 access-list 1 permit 128.213.0.0 0.0.255.255

 route-map STOPUPDATE permit 10
  match ip address 1

上面的路由映射只允许将 128.213.0.0 重分配到 OSPF 中,并拒绝其余重分配。这就是 16.16.16.0 在 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.250.15.0 255.255.255.252 is subnetted, 1 subnets
 C       203.250.15.0 is directly connected, Serial0
 O IA 203.250.14.0 [110/74] via 203.250.15.1, 00:00:04, Serial0
 O E1 128.213.0.0 [110/114] via 203.250.15.1, 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 域中配置静态路由。下面的示例演示了此问题:

/image/gif/paws/7039/spf19.gif

在上图中,RTE 运行 OSPF 而 RTA 运行 RIP。RTC 完成这两个协议之间的重分配。问题是 C 类网络 203.250.15.0 是可变子网划分,该网络具有两个不同的掩码 255.255.255.252 和 255.255.255.192。让我们看看 RTE 和 RTA 的配置和路由表:

RTA#
 interface Ethernet0
  ip address 203.250.15.68 255.255.255.192
 router rip
  network 203.250.15.0
 RTC#
 interface Ethernet0
  ip address 203.250.15.67 255.255.255.192

 interface Serial1
  ip address 203.250.15.1 255.255.255.252
 router ospf 10
 redistribute rip metric 10 subnets
  network 203.250.15.0 0.0.0.255 area 0
 router rip
  redistribute ospf 10 metric 2
  network 203.250.15.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.250.15.0 is variably subnetted, 2 subnets, 2 masks
 C       203.250.15.0 255.255.255.252 is directly connected, Serial0
 O       203.250.15.64 255.255.255.192
            [110/74] via 203.250.15.1, 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.250.15.0 255.255.255.192 is subnetted, 1 subnets
 C       203.250.15.64 is directly connected, Ethernet0

请注意,RTE 已识别出 203.250.15.0 有两个子网,而 RTA 认为只有一个子网(在接口上配置的那个子网)。关于子网 203.250.15.0 255.255.255.252 的信息在 RIP 域中丢失。若要到达该子网,需要在 RTA 上配置静态路由:

RTA#
 interface Ethernet0
  ip address 203.250.15.68 255.255.255.192
 router rip
  network 203.250.15.0

ip route 203.250.15.0 255.255.255.0 203.250.15.67

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

相互重分配

在协议之间进行相互重分配时应非常小心,以可控方式进行。不正确的配置可能会导致潜在的路由信息循环。相互重分配的一种经验做法是不允许将从某个协议了解的信息注入回同一个协议。应在重分配路由器上应用被动接口和分布列表。使用如 OSPF 这样的链路状态协议过滤信息是一项复杂的工作。Distribute-list out 在 ASBR 上工作,用于将重分配的路由过滤到其他协议。Distribute-list in 在所有路由器上工作,用于阻止将路由放入路由表,但并不阻止传播链路状态数据包,下行路由器仍将具有这些路由。如果可以对其他协议应用过滤器以防止形成环路,则应尽量避免使用 OSPF 过滤。

/image/gif/paws/7039/spf20.gif

为进行说明,假设 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.250.15.130 255.255.255.192
 
 interface Serial0
  ip address 203.250.15.2 255.255.255.192
 
 router rip
  network 203.250.15.0
 
 
RTC#
 interface Ethernet0
  ip address 203.250.15.67 255.255.255.192
 
 interface Serial1
  ip address 203.250.15.1 255.255.255.192
 
 router ospf 10
  redistribute rip metric 10 subnets
  network 203.250.15.0 0.0.0.255 area 0
 
 router rip
  redistribute ospf 10 metric 2
  passive-interface Ethernet0
  network 203.250.15.0
 



RTA#
interface Ethernet0
 ip address 203.250.15.68 255.255.255.192
 
router ospf 10
 redistribute rip metric 10 subnets
 network 203.250.15.0 0.0.0.255 area 0


router rip
 redistribute ospf 10 metric 1
 network 203.250.15.0


 
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.250.15.0 255.255.255.192 is subnetted, 4 subnets
 C       203.250.15.0 is directly connected, Serial1
 C       203.250.15.64 is directly connected, Ethernet0
 R       203.250.15.128 [120/1] via 203.250.15.68, 00:01:08, Ethernet0
                        [120/1] via 203.250.15.2, 00:00:11, Serial1
 O       203.250.15.192 [110/20] via 203.250.15.68, 00:21:41, Ethernet0

请注意,RTC 有两条可到达 203.250.15.128 子网的路径:Serial 1 和 Ethernet 0(E0 明显是错误路径)。出现这种情况是因为 RTC 通过 OSPF 提供到 RTA 的该入口,而 RTA 通过 RIP 将其传回(因为 RTA 无法通过 RIP 了解该入口)。此示例是由于不正确的配置可能导致的超小规模环路。在大型网络中,这种情况更加严重。

为了修复我们示例中的这种情况,您可以停止从 RTA 的 Ethernet 0 通过被动接口发送 RIP。如果以太网上的一些路由器是仅使用 RIP 的路由器,则此方法可能不适用。在这种情况下,您可以允许 RTC 在以太网上发送 RIP;这样,RTA 由于进行了水平拆分而不会将其在线路上发回(如果水平拆分关闭,则此方法可能对 NBMA 媒体不起作用)。水平拆分不允许将更新发送回从其了解这些更新的同一个接口(通过相同的协议)。另一种好方法是对 RTA 应用 distribute-list,以拒绝将通过 OSPF 了解的子网放回以太网上的 RIP。我们将使用后一种方法:

RTA#
  interface Ethernet0
  ip address 203.250.15.68 255.255.255.192
 
 router ospf 10
  redistribute rip metric 10 subnets
  network 203.250.15.0 0.0.0.255 area 0
 
 router rip
  redistribute ospf 10 metric 1
  network 203.250.15.0
  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.250.15.0 255.255.255.192 is subnetted, 4 subnets
 C       203.250.15.0 is directly connected, Serial1
 C       203.250.15.64 is directly connected, Ethernet0
 R       203.250.15.128 [120/1] via 203.250.15.2, 00:00:19, Serial1
 O       203.250.15.192 [110/20] via 203.250.15.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)。路由映射指定生成默认路由需要满足的一组条件。

/image/gif/paws/7039/spf21.gif

假设 RTE 将默认路由 0.0.0.0 注入 RIP。RTC 将具有最后选用网关 203.250.15.2。在使用 default-information originate 命令配置 RTC 之前,RTC 不会将默认路由传播到 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.250.15.2 to network 0.0.0.0
  
      203.250.15.0 255.255.255.192 is subnetted, 4 subnets
 C       203.250.15.0 is directly connected, Serial1
 C       203.250.15.64 is directly connected, Ethernet0
 R       203.250.15.128 [120/1] via 203.250.15.2, 00:00:17, Serial1
 O       203.250.15.192 [110/20] via 203.250.15.68, 2d23, Ethernet0
 R*   0.0.0.0 0.0.0.0 [120/1] via 203.250.15.2, 00:00:17, Serial1
             [120/1] via 203.250.15.68, 00:00:32, Ethernet0
 RTC#
 
 interface Ethernet0
  ip address 203.250.15.67 255.255.255.192
 
 interface Serial1
  ip address 203.250.15.1 255.255.255.192
 
 router ospf 10
  redistribute rip metric 10 subnets
  network 203.250.15.0 0.0.0.255 area 0
  default-information originate metric 10
 
 
 router rip
  redistribute ospf 10 metric 2
  passive-interface Ethernet0
  network 203.250.15.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.250.15.67 to network 0.0.0.0
  
      203.250.15.0 255.255.255.192 is subnetted, 4 subnets
 O       203.250.15.0 [110/74] via 203.250.15.67, 2d23, Ethernet0
 C       203.250.15.64 is directly connected, Ethernet0
 O E2    203.250.15.128 [110/10] via 203.250.15.67, 2d23, Ethernet0
 C       203.250.15.192 is directly connected, Ethernet1
 O*E2 0.0.0.0 0.0.0.0 [110/10] via 203.250.15.67, 00:00:17, Ethernet0

请注意,RTA 已了解 0.0.0.0 是度量为 10 的外部路由。最后选用网关按照预期设置为 203.250.15.67。

OSPF 设计提示

对于区域中的路由器数量、每个分段的邻居数量或构建网络的最佳方法这些方面,OSPF RFC (1583) 没有指定任何指导。不同的人可采用不同的方法设计 OSPF 网络。重要的是要记住任何协议在压力下都可能失败。不要对协议吹毛求疵,而要使用协议获得最佳行为。下面列出了要考虑的事项。

每个区域的路由器数

每个区域的最大路由器数取决于多种因素,包括以下几个:

  • 您的区域类型是什么?

  • 在该区域您的 CPU 电源是什么?

  • 媒体类型是什么?

  • 是否将以 NBMA 模式运行 OSPF?

  • 您的 NBMA 网络是否属于网状结构?

  • 网络中是否有大量外部 LSA?

  • 是否有其它区域的详细汇总?

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

邻居数

连接到同一 LAN 的路由器数也很重要。每个 LAN 都有与所有其他路由器生成邻接的 DR 和 BDR。LAN 上存在的邻居越少,DR 或 BDR 必须生成的邻接数就越小。这取决于您的路由器的功率。您可以随时更改 OSPF 优先级以选择 DR。此外如果可能,请尽量避免在多个分段上使用相同路由器作为 DR。如果 DR 选择基于最高 RID,则一个路由器可能意外地成为所连接到的所有分段的 DR。此路由器会执行额外的工作,而其他路由器却处于空闲状态。

spf22.gif

每个 ABR 的区域编号

ABR 将为其服务的所有区域保留数据库的副本。例如,如果某个路由器连接到五个区域,则该路由器将必须保留五个不同数据库的列表。每个 ABR 的区域数是取决于很多因素的数字,包括区域类型(正常、末节、NSSA),ABR CPU 功率、每个区域的路由数以及每个区域的外部路由数。因此,无法建议每个 ABR 具有特定数量的区域。当然,当您可以随时通过其他路由器扩张区域时,最好不要使 ABR 过载。下图显示一个拥有五个不同数据库(包括区域 0)的 ABR 与两个各自拥有三个数据库的 ABR 之间的区别。再次说明,这些仅仅是指导意见,每个 ABR 配置的区域越多,您获得的性能就越低。在某些情况下,较低性能是可以容忍的。

/image/gif/paws/7039/spf23.gif

全网状与部分网状

非广播多路访问 (NBMA) 网云(例如帧中继或 X.25)始终是个难题。带宽较低同时链路状态太多是形成各种问题的一种根源。经证明,部分网状拓扑比全网状拓扑表现更好。经过仔细布局的点对点或点对多点网络比必须处理 DR 问题的多点网络要好得多。

/image/gif/paws/7039/spf24.gif

内存问题

计算出特定 OSPF 配置所需的内存并不容易。当太多外部路由注入 OSPF 域时,通常会发生内存问题。与具有 4 台路由器并将 33,000 个外部路入注入 OSPF 的骨干网区域相比,具有 40 台路由器和一个到外界的默认路由的骨干网区域具有较少的内存问题。

使用好的 OSPF 设计也能节省内存。区域边界路由器上的汇总和末节区域的使用可以进一步使交换的路由数减到最小。

OSPF 使用的总内存是用于路由表的内存 (show ip route summary) 与用于链路状态数据库的内存的总和。下面的数字是根据经验得到的估计。路由表中的每一个条目占用大约 200 到 280 个字节,每个额外路径需再加上 44 个字节。每个 LSA 占用 100 个字节的开销加上实际链路状态通告的大小,可能还需另外 60 到 100 个字节(用于路由器链路,这取决于路由器上的接口数)。这应该加上其他进程和 IOS 本身使用的内存。如果确实想知道确切的数字,可以在打开或不打开 OSPF 的情况下执行 show memory。两种情况下所使用的处理器内存之差就是答案(请保留配置的备份副本)。

通常,小于 500K 字节的路由表需要 2 到 4 MB RAM;大于 500K 的大型网络可能需要 8 到 16 MB,如果从 Internet 注入所有路由,则可能需要 32 到 64 MB。

摘要

RFC 1583 中定义的 OSPF 协议提供具备强大功能的开放式协议,允许多个供应商网络使用 TCP/IP 协议族进行通信。OSPF 的优点有快速收敛、VLSM、身份验证、层次结构分段、路由汇总和聚合等,这些都是处理大型复杂网络所需要的。

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

/image/gif/paws/7039/spf25.gif

在上图中,同一分段上的路由器在形成成功的邻接之前经历了一系列状态。邻居和 DR 选择通过 Hello 协议进行。当路由器发现自己出现在其邻居的 Hello 数据包中时,状态会转换为“2-Way”。此时会在多路访问分段上进行 DR 和 BDR 选择。如果某个路由器及其某个邻居中有一个是 DR 或 BDR,或者它们通过点对点或虚拟链路连接,则这两个路由器会继续形成邻接。

Exstart 状态中,两个邻居形成主/从关系,对初始序号达成一致。该序号用于检测旧的或重复的链路状态通告 (LSA)。

Exchange 状态中,数据库描述数据包 (DD) 将进行交换。这些是采用链路状态标头形式的缩写链路状态通告。标头提供足够的信息来识别链路。主节点发送的 DD 数据包使用来自从节点的 DD 数据包进行确认。处于 exchange 状态或更高状态的所有邻接由泛洪过程使用。这些邻接完全能够传输和接收所有类型的 OSPF 路由协议数据包。

Loading 状态中,会向邻居发送链路状态请求数据包,请求已发现但尚未接收的最新通告。每个路由器都生成保持其邻接处于最新状态所必需的 LSA 列表。会维护一个转发列表,以确保每个 LSA 都得到确认。若要为邻接指定链路状态通告转发之间的秒数,可以使用下面的命令:


ip ospf retransmit-interval 
seconds

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

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

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

链路状态通告

/image/gif/paws/7039/spf26.gif

链路状态通告分为五种类型。路由器链路 (RL) 由所有路由器生成。这些链路描述特定区域里路由器接口的状态。这些链路只在路由器的区域里泛洪。网络链路 (NL) 由特定分段的 DR 生成;这些是连接到该分段的路由器的指示。汇总链路 (SL) 是区域间链路(类型 3);这些链路将列出其他区域中仍属于自治系统的网络。汇总链路由 ABR 从骨干网注入其他区域和从其他区域注入骨干网。这些链路用于区域之间的聚合。其他类型的汇总链路是 ASBR 汇总链路。这些是指向 ASBR 的类型 4 链路。这是为了确保所有路由器都知道退出自治系统的方式。最后一种类型是类型 5 外部链路 (EL),这些链路由 ASBR 注入域。

上图显示了不同的链路类型。RTA 生成一条到区域 1 中的路由器链路 (RL),还生成一条网络链路 (NL),因为它恰巧是该特定分段上的 DR。RTB 是 ABR,生成到区域 1 和区域 0 中的 RL。RTB 还生成到区域 1 和区域 0 中的汇总链路。这些链路是在两个区域之间交换的网络列表。RTB 还向区域 1 注入一条 ASBR 汇总链路。这表示存在 RTD,即自治系统边界路由器 (ASBR)。同样,RTC(另一个 ABR)为区域 0 和区域 2 生成 RL,生成到区域 2 中的 SL (3)(因为不宣布任何 ASBR),并生成到宣布 RTD 的区域 0 的 SL (3,4)。RTD 为区域 2 生成 RL,并为通过 BGP 了解的外部路由生成 EL。外部路由器将在整个域上泛洪。

下表是链路状态通告的汇总。

LS 类型 通告说明
1 路由器链路通告。由每台路由器为其所属的每个区域生成。它们描述路由器到该区域的链路的状态。这些通告仅在特定区域内泛洪。
2 网络链路通告。由指定路由器生成。它们描述连接到特定网络的路由器集合。在包含该网络的区域内泛洪。
3 或 4 汇总链路通告。由区域边界路由器生成。它们描述区域间(区域之间)路由。类型 3 描述到网络的路由,也用于聚合路由。类型 4 描述到 ASBR 的路由。
5 AS 外部链路通告。由 ASBR 发起。它们描述到 AS 外部目标的路由。在除末节区域外的所有区域泛洪。

如果使用 show ip ospf database detail 查看 OSPF 数据库的详细信息,则可以看到不同的关键字,如 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 数据库示例

spf27.gif

根据上面的网络图、以下配置和 IP 路由表,我们来了解一下理解 OSPF 数据库的不同方式。

RTA#
 interface Loopback0
  ip address 203.250.13.41 255.255.255.255

 interface Ethernet0
  ip address 203.250.15.68 255.255.255.192

 interface Ethernet1
  ip address 203.250.15.193 255.255.255.192

 router ospf 10
  network 203.250.0.0 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.250.15.67 to network 0.0.0.0

      203.250.16.0 255.255.255.192 is subnetted, 1 subnets
 O E2    203.250.16.128 [110/10] via 203.250.15.67, 00:00:50, Ethernet0
      203.250.13.0 255.255.255.255 is subnetted, 1 subnets
 C       203.250.13.41 is directly connected, Loopback0
      203.250.15.0 255.255.255.192 is subnetted, 3 subnets
 O IA    203.250.15.0 [110/74] via 203.250.15.67, 00:00:50, Ethernet0
 C       203.250.15.64 is directly connected, Ethernet0
 C       203.250.15.192 is directly connected, Ethernet1
 O*E2 0.0.0.0 0.0.0.0 [110/10] via 203.250.15.67, 00:00:50, Ethernet0

 RTE#
 ip subnet-zero

 interface Ethernet0
  ip address 203.250.16.130 255.255.255.192

 interface Serial0
  ip address 203.250.15.2 255.255.255.192

 router ospf 10
  redistribute rip metric 10 subnets
  network 203.250.15.0 0.0.0.63 area 1
  default-information originate metric 10

 router rip
  network 203.250.16.0

 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.250.16.0 255.255.255.192 is subnetted, 1 subnets
 C       203.250.16.128 is directly connected, Ethernet0
      203.250.13.0 is variably subnetted, 2 subnets, 2 masks
 O IA    203.250.13.41 255.255.255.255
            [110/75] via 203.250.15.1, 00:16:31, Serial0
      203.250.15.0 255.255.255.192 is subnetted, 3 subnets
 C       203.250.15.0 is directly connected, Serial0
 O IA    203.250.15.64 [110/74] via 203.250.15.1, 00:16:31, Serial0
 O IA    203.250.15.192 [110/84] via 203.250.15.1, 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.250.15.67 255.255.255.192

 interface Serial1
  ip address 203.250.15.1 255.255.255.192

 router ospf 10
  network 203.250.15.64 0.0.0.63 area 0
  network 203.250.15.0 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.250.15.2 to network 0.0.0.0

      203.250.16.0 255.255.255.192 is subnetted, 1 subnets
 O E2    203.250.16.128 [110/10] via 203.250.15.2, 04:49:05, Serial1
      203.250.13.0 255.255.255.255 is subnetted, 1 subnets
 O       203.250.13.41 [110/11] via 203.250.15.68, 04:49:06, Ethernet0
      203.250.15.0 255.255.255.192 is subnetted, 3 subnets
 C       203.250.15.0 is directly connected, Serial1
 C       203.250.15.64 is directly connected, Ethernet0
 O       203.250.15.192 [110/20] via 203.250.15.68, 04:49:06, Ethernet0
 O*E2 0.0.0.0 0.0.0.0 [110/10] via 203.250.15.2, 04:49:06, Serial1

数据库常规视图

RTC#show ip ospf database

       OSPF Router with ID (203.250.15.67) (Process ID 10)

                Router Link States (Area 1)

Link ID         ADV Router      Age    Seq#       Checksum Link count
203.250.15.67   203.250.15.67   48     0x80000008 0xB112   2
203.250.16.130  203.250.16.130  212    0x80000006 0x3F44   2

                Summary Net Link States (Area 1)

Link ID         ADV Router      Age    Seq#       Checksum
203.250.13.41   203.250.15.67   602    0x80000002 0x90AA
203.250.15.64   203.250.15.67   620    0x800000E9 0x3E3C
203.250.15.192  203.250.15.67   638    0x800000E5 0xA54E

                Router Link States (Area 0)

Link ID         ADV Router      Age    Seq#       Checksum Link count
203.250.13.41   203.250.13.41   179    0x80000029 0x9ADA   3
203.250.15.67   203.250.15.67   675    0x800001E2 0xDD23   1

                Net Link States (Area 0)

Link ID         ADV Router      Age    Seq#       Checksum
203.250.15.68   203.250.13.41   334    0x80000001 0xB6B5

                Summary Net Link States (Area 0)

Link ID         ADV Router      Age    Seq#       Checksum
203.250.15.0    203.250.15.67   792    0x80000002 0xAEBD

                Summary ASB Link States (Area 0)

Link ID         ADV Router      Age    Seq#       Checksum
203.250.16.130  203.250.15.67   579    0x80000001 0xF9AF

                AS External Link States

Link ID         ADV Router      Age    Seq#       Checksum Tag
0.0.0.0         203.250.16.130  1787   0x80000001 0x98CE   10
203.250.16.128  203.250.16.130  5      0x80000002 0x93C4   0

这是整个 OSPF 数据库的概览。数据库是根据区域列出的。在本例中,我们查看作为 ABR 的 RTC 的数据库。区域 1 和区域 0 的数据库都已列出。区域 1 由路由器链路和汇总链路组成。不存在网络链路,因为在区域 1 中的任何分段上都不存在 DR。区域 1 中不存在汇总 ASBR,因为唯一的 ASBR 恰巧在区域 0 中。外部链路不属于任何特定区域,因为这些链路在所有区域中泛洪。请注意,所有链路都是从某一区域中的所有路由器聚集的累积链路。

我们将主要关注区域 0 中的数据库。这里指示的 Link-ID 实际上是 Link-State ID。这是整个路由器而不是特定链路的表示形式。这有点混乱,但只要记住此高级 Link-ID(应为 Link-State ID)表示整个路由器而不只是一个链路。

路由器链路

Router Link States (Area 0)

 Link ID         ADV Router      Age    Seq#       Checksum Link count
 203.250.13.41   203.250.13.41   179    0x80000029 0x9ADA   3
 203.250.15.67   203.250.15.67   675    0x800001E2 0xDD23   1

我们将从路由器链路开始。为 203.250.13.41 和 203.250.15.67 列出了两个条目,这些是区域 0 中的两个路由器的 RID。还指出了区域 0 中每个路由器的链路数。RTA 有三条到区域 0 的链路,RTC 有一条链路。RTC 路由器链路的详细视图如下:

RTC#show ip ospf database router 203.250.15.67 

     OSPF Router with ID (203.250.15.67) (Process ID 10)

                Router Link States (Area 1)

  LS age: 1169
  Options: (No TOS-capability)
  LS Type: Router Links
  Link State ID: 203.250.15.67
  Advertising Router: 203.250.15.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) Neighboring Router ID: 203.250.16.130
     (Link Data) Router Interface address: 203.250.15.1
      Number of TOS metrics: 0
       TOS 0 Metrics: 64
 
    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 203.250.15.0
     (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.250.15.67
  Advertising Router: 203.250.15.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.250.15.68
     (Link Data) Router Interface address: 203.250.15.67
      Number of TOS metrics: 0
       TOS 0 Metrics: 10

请注意,Link ID 与所连接 DR 的 IP 地址(不是 RID)是相同的;在本例中是 203.250.15.68。链路数据是 RTC 自己的 IP 地址。

网络链路

Net Link States (Area 0)

Link ID         ADV Router      Age    Seq#       Checksum
203.250.15.68   203.250.13.41   334    0x80000001 0xB6B5

列出了一条网络链路,由 DR 的 IP 地址(不是 RID)指示,在本例中为 203.250.15.68。此条目的详细视图如下:

RTC#show ip ospf database network

       OSPF Router with ID (203.250.15.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.250.15.68 (address of Designated Router)
  Advertising Router: 203.250.13.41
  LS Seq Number: 80000002
  Checksum: 0xB4B6
  Length: 32
  Network Mask: 255.255.255.192

        Attached Router: 203.250.13.41
        Attached Router: 203.250.15.67

请注意,网络链路列出了连接到中转网络的路由器的 RID;在本例中,列出了 RTA 和 RTC 的 RID。

汇总链路

Summary Net Link States (Area 0)

Link ID         ADV Router      Age    Seq#       Checksum
203.250.15.0    203.250.15.67   792    0x80000002 0xAEBD
Area 0 has one summary link represented by the IP network address of the
link 203.250.15.0. This link was injected by the ABR RTC from area 1 into
area 0. A detailed view of this summary link follows, 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.250.15.0 (summary Network Number)
  Advertising Router: 203.250.15.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.250.16.130  203.250.15.67   579    0x80000001 0xF9AF

这指示哪个路由器 ASBR。在本例中,ASBR 是由其 RID 203.250.16.130 表示的 RTE。此条目到区域 0 中的通告路由器是 RID 为 203.250.15.67 的 RTC。汇总 ASBR 条目的详细视图如下:

RTC#show ip ospf database asbr-summary

        OSPF Router with ID (203.250.15.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.250.16.130 (AS Boundary Router address)
   Advertising Router: 203.250.15.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.250.16.130  1787   0x80000001 0x98CE   10
203.250.16.128  203.250.16.130  5      0x80000002 0x93C4   0

我们有两条外部链路,第一条是通过 default-information originate 命令注入 OSPF 的 0.0.0.0。另一条是通过重分配注入 OSPF 的网络 203.250.16.12 8。通告这些网络的路由器是 203.250.16.130(RTE 的 RID)。下面是外部路由的详细视图:

RTC#show ip ospf database external

        OSPF Router with ID (203.250.15.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.250.16.130
   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.250.16.128 (External Network Number)
   Advertising Router: 203.250.16.130
   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 地址。下图将演示此情况:

/image/gif/paws/7039/spf28.gif

在上面的情况中,RTB 对 RTA 运行 BGP,对域的其余部分运行 OSPF。RTA 不运行 OSPF。RTB 将 BGP 路由重分配到 OSPF 中。根据 OSPF,RTB 是 ASBR 通告外部路由。在本例中,转发地址设置为 125.211.1.1,而不是通告路由器 (0.0.0.0) RT B。这样做十分有意义,因为不需要进行额外跳跃。需要记住的重要一点是,为将外部路由放入 IP 路由表,OSPF 域中的路由器应能够通过 OSPF 到达转发地址。如果通过某些其他协议到达转发地址或不可访问转发地址,则外部条目将位于数据库中,但不在 IP 路由表中。

如果 RTB 和 RTC 都是 ASBR(RTC 也对 RTA 运行 BGP),则将引发另一种情况。在这种情况下,为了消除重复工作,两个路由器中的一个将不会通告(而将刷新)外部路由。具有较高 RID 的路由器将胜出。

完整数据库

最后,列出了完整数据库作为练习。现在您应该能够查看每一个条目并解释其执行的操作:

RTC#show ip ospf database router

         OSPF Router with ID (203.250.15.67) (Process ID 10)

                 Router Link States (Area 1)

   LS age: 926
   Options: (No TOS-capability)
   LS Type: Router Links
   Link State ID: 203.250.15.67
   Advertising Router: 203.250.15.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) Neighboring Router ID: 203.250.16.130
      (Link Data) Router Interface address: 203.250.15.1
       Number of TOS metrics: 0
        TOS 0 Metrics: 64

     Link connected to: a Stub Network
      (Link ID) Network/subnet number: 203.250.15.0
      (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.250.16.130
   Advertising Router: 203.250.16.130
   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) Neighboring Router ID: 203.250.15.67
      (Link Data) Router Interface address: 203.250.15.2
       Number of TOS metrics: 0
        TOS 0 Metrics: 64

     Link connected to: a Stub Network
      (Link ID) Network/subnet number: 203.250.15.0
      (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.250.13.41
   Advertising Router: 203.250.13.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.250.13.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.250.15.192
      (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.250.15.68
      (Link Data) Router Interface address: 203.250.15.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.250.15.67
   Advertising Router: 203.250.15.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.250.15.68
      (Link Data) Router Interface address: 203.250.15.67
       Number of TOS metrics: 0
        TOS 0 Metrics: 10
 
 RTC#show ip ospf database network

        OSPF Router with ID (203.250.15.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.250.15.68 (address of Designated Router)
   Advertising Router: 203.250.13.41
   LS Seq Number: 80000026
   Checksum: 0x6CDA
   Length: 32
   Network Mask: 255.255.255.192
         Attached Router: 203.250.13.41
         Attached Router: 203.250.15.67
  
 RTC#show ip ospf database summary

        OSPF Router with ID (203.250.15.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.250.13.41 (summary Network Number)
   Advertising Router: 203.250.15.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.250.15.64 (summary Network Number)
   Advertising Router: 203.250.15.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.250.15.192 (summary Network Number)
   Advertising Router: 203.250.15.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.250.15.0 (summary Network Number)
   Advertising Router: 203.250.15.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.250.15.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.250.16.130 (AS Boundary Router address)
   Advertising Router: 203.250.15.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.250.15.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.250.16.130
   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.250.16.128 (External Network Number)
   Advertising Router: 203.250.16.130
   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。

/image/gif/paws/7039/spf29.gif

为 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 0000 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 0100 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 0000 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 0100 180 0100 196 0100 212 0100 228 0100 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.214.11.0,并且您需要将该网络分成三个子网,一个子网中有 100 台主机,其余两个子网中各有 50 台主机。忽略两端限制 0 和 255,理论上您有 256 个地址 (192.214.11.0 - 192.214.11.255) 可用。如果不使用 VLSM,则这是不可能实现的。

/image/gif/paws/7039/spf30.gif

有几个子网掩码可以使用;请注意,掩码从左开始应为连续的几个 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,并且分开地址成与128的2子网主机其中每一或使用255.255.255.192并且分开空间成与64的4子网主机其中每一。这无法满足要求。如果使用多个掩码,则您可以使用掩码 128,并使用掩码 192 对地址的第二块进一步进行子网划分。此表显示如何相应地划分地址空间。

spf31.gif

现在,请小心地为每个掩码分配 IP 地址。为路由器或主机分配 IP 地址后,您就用完了该分段的整个子网。例如,如果为 E2 分配 192.214.11.10 255.255.255.128,E2 就占用了介于 192.214.11.0 和 192.214.11.127 之间的整个地址范围。同样地,如果为 E2 分配 192.214.11.160 255.255.255.128,E2 分段就占用了介于 192.214.11.128 和 192.214.11.255 之间的整个地址范围。

以下示例说明了路由器如何解析这些地址。请记住,每当使用不同于自然掩码的掩码时(例如,进行子网划分时),如果组合 IP 地址和掩码会导致零子网,则路由器会发出错误消息。若要解决此问题,请对路由器使用 ip subnet-zero 命令。

RTA#
 ip subnet-zero
 interface Ethernet2
  ip address 192.214.11.10 255.255.255.128
 interface Ethernet3
  ip address 192.214.11.160 255.255.255.192
 interface Ethernet4
  ip address 192.214.11.226 255.255.255.192

 RTA#show ip route connected
      192.214.11.0 is variably subnetted, 3 subnets, 2 masks
 C       192.214.11.0 255.255.255.128 is directly connected, Ethernet2
 C       192.214.11.128 255.255.255.192 is directly connected, Ethernet3
 C       192.214.11.192 255.255.255.192 is directly connected, Ethernet4

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 7039