1、OSPF 版本 2/第二稿第 1 页/总 134 页目录1 绪论1.1 协议概述1.2 常用术语的定义1.3 连接状态路由技术的简要历史1.4 本文档的结构1.5 感谢2 连接状态数据库:组织和计算2.1 路由器和网络的表示方法2.1.1 非广播网络的表示方法2.1.2 一个连接状态数据库的示例2.2 最短路径树2.3 使用外部路由信息2.4 等值多路径3 将自制系统划分为区域3.1 自制系统的骨干区域3.2 区域间路由3.3 路由器的分类3.4 一个简单区域配置3.5 IP 子网化支持3.6 支持存根区域3.7 区域的划分4 功能摘要4.1 区域间路由4.2 自制系统外部路由4.3 路由协议
2、包4.4 基本实现的需求4.5 OSPF 可选项5 协议数据结构6 区域数据结构7 形成邻接7.1 Hello 协议7.2 数据库同步7.3 指定路由器7.4 备份指定路由器7.5 邻接图8 协议包处理8.1 发送协议包8.2 接收协议包9 接口数据结构9.1 接口状态9.2 引起接口状态改变的事件9.3 接口状态机9.4 选举指定路由器9.5 发送 Hello 包9.5.1 在 NBMA 网络上发送 Hello 包10 邻居数据结构10.1 邻居状态10.2 引起邻居状态改变的事件RFC 2328第 2 页/总 134 页10.3 邻居状态机10.4 是否形成邻接10.5 接收到 Hello
3、 包10.6 接收到数据库描述包10.7 接收到连接状态请求包10.8 发送数据库描述包10.9 发送连接状态请求包10.10 示例11 路由表结构11.1 查找路由表11.2 路由表示例,无区域11.3 路由表示例,有区域12 连接状态宣告(LSA)12.1 LSA 头部12.1.1 连接状态时限12.1.2 选项12.1.3 连接状态类型12.1.4 连接状态标识12.1.5 宣告路由器12.1.6 连接状态序号12.1.7 连接状态校验和12.2 连接状态数据库12.3 TOS 表现12.4 生成 LSA12.4.1 Router-LSA12.4.1.1 描述点对点接口12.4.1.2
4、描述广播和 NBMA 接口12.4.1.3 描述虚拟通道12.4.1.4 描述点对多点接口12.4.1.5 Router-LSA 示例12.4.2 Network-LSA12.4.2.1 Network-LSA 示例12.4.3 Summary-LSA12.4.3.1 向存根区域生成 Summary-LSA12.4.3.2 Summary-LSA 示例12.4.4 AS-external-LSA12.4.4.1 AS-external-LSA 示例13 洪泛过程13.1 判定较新的 LSA13.2 将 LSA 加入数据库13.3 洪泛过程的下一步操作13.4 接收自生成的 LSA13.5 发送
5、连接状态确认包(LSAck 包)13.6 重传 LSA13.7 接收连接状态确认包(LSAck 包)14 老化连接状态数据库14.1 提前老化 LSA15 虚拟通道16 计算路由表16.1 计算一个区域的最短路径树OSPF 版本 2/第二稿第 3 页/总 134 页16.1.1 计算下一跳16.2 计算区域间路径16.3 查看传输区域的 Summary-LSA16.4 计算 AS 外部路径16.4.1 外部路径参数16.5 增量更新Summary-LSA16.6 增量更新AS-external-LSA16.7 路由表改变引起的事件16.8 等值多路径脚注引用A OSPF 数据格式A.1 OSP
6、F 包的封装A.2 选项域A.3 OSPF 包格式A.3.1 OSPF 包头A.3.2 Hello 包A.3.3 数据库描述包(DD 包)A.3.4 连接状态请求包(LSR 包)A.3.5 连接状态更新包(LSU 包)A.3.6 连接状态确认包(LSAck 包)A.4 LSA 格式A.4.1 LSA 头部A.4.2 Router-LSAA.4.3 Network-LSAA.4.4 Summary-LSAA.4.5 AS-external-LSAB 结构常量C 可配置变量C.1 全局参数C.2 区域参数C.3 路由器接口参数C.4 虚拟通道参数C.5 NBMA 网络参数C.6 点对多点网络参数C
7、.7 主机路径参数D 验证D.1 空验证D.2 简单口令验证D.3 密码验证D.4 信息生成D.4.1 生成空验证D.4.2 生成简单口令验证D.4.3 生成密码验证D.5 信息校验D.5.1 校验空验证D.5.2 校验简单口令验证D.5.3 校验密码验证E 设定 LS 标识的一种算法F 多接口接入同一网络/子网RFC 2328第 4 页/总 134 页G 与 RFC 2178 的不同G.1 洪泛过程的修改G.2 外部路径优先级的改变G.3 解决不完整的虚拟下一跳G.4 路由表查找安全性考虑作者的地址完整的版权声明OSPF 版本 2/第二稿第 5 页/总 134 页1. 绪论本文档描述了开放最
8、短路径优先/Open Shortest Path First(OSPF )TCP/IP 网际路由协议。OSPF 是一种典型的内部网关协议/Interior Gateway Protocol(IGP) 。这意味着其路由信息是描述属于同一个自制系统/Autonomous System(AS)中的路由器。OSPF 协议是基于连接状态或被称为 SPF 的技术,这与传统 TCP/IP 网际路由协议所使用的 Bellman-Ford 技术不同。OSPF 协议是由 Internet Engineering Task Force 的 OSPF 工作组所开发的,特别为 TCP/IP 网络而设计,包括明确的支持
9、CIDR 和标记来源于外部的路由信息。 OSPF 也提供了对路由更新的验证,并在发送/接收更新时使用 IP 多播。此外,还作了很多的工作使得协议仅用很少的路由流量就可以快速地响应拓扑改变。1.1. 协议概述OSPF 仅通过在 IP 包头中的目标地址来转发 IP 包。IP 包在 AS 中被转发,而没有被其他协议再次封装。OSPF 是一种动态路由协议,它可以快速地探知 AS 中拓扑的改变(例如路由器接口的失效),并在一段时间的收敛后计算出无环路的新路径。收敛的时间很短且只使用很小的路由流量。在连接状态路由协议中,每台路由器都维持着一个数据库以描述 AS 的拓扑结构。这个数据库被称为连接状态数据库,
10、所有参与的路由器都有着同样的数据库。数据库中的各项说明了特定路由器自身的状态(如该路由器的可用接口和可以到达的邻居) 。该路由器通过洪泛/flooding 将其自身的状态传送到整个 AS 中。所有的路由器同步地运行完全相同的算法。根据连接状态数据库,每台路由器构建出一棵以其自身为树根的最短路径树。最短路径树给出了到达 AS 中各个目标的路径,路由信息的起源在树中表现为树叶。当有多条等值的路径到达同一目标时,数据流量将在这些路径上平均分摊。路径的距离值表现为一个无量纲数。OSPF 允许将一些网络组合到一起。这样的组被称为区域/area 。区域对 AS 中的其他部分隐藏其内部的拓扑结构,信息的隐藏
11、极大地减少了路由流量。同时,区域内的路由仅由区域自身的拓扑来决定,这可使区域抵御错误的路由信息。区域通常是一个子网化了的 IP 网络。OSPF 允许灵活的配置 IP 子网。由 OSPF 发布的每条路径都包含目标和掩码。同一个 IP 网络的两个子网可以有不同的大小(即不同的掩码) ,这常被称为变长子网/variable length subnetting。数据包按照最佳匹配(最长匹配)来转发。主机路径被看作掩码为“全 1”(0xffffffff)的子网来处理。OSPF 协议中所有的信息交换都经过验证。这意味着,在 AS 中只有被信任的路由器才能参与路由。有多种验证方法可以被选择。事实上,可以为每
12、个 IP 子网选用不同的验证方法。来源于外部的路由信息(如路由器从诸如 BGP引用 23的外部网关协议中得到的路径)向整个AS 内部宣告。外部数据与 OSPF 协议的连接状态数据相对独立。每条外部路径可以由所宣告的路由器作出标记,在自制系统边界路由器(ASBR)之间传递额外的信息。RFC 2328第 6 页/总 134 页1.2. 常用术语的定义本节定义了贯穿本文的,在 OSPF 协议中有特定含义的术语。对 IP 协议不熟悉的读者可使用引用 13作为 IP 协议的绪论。路由器/Router:一种三层 IP 包的交换设备。在早期的 IP 文献中被称为网关 /gateway。自制系统/Autono
13、mous System:一组使用相同路由协议交换路由信息的路由器,缩写为 AS。内部网关协议/Interior Gateway Protocol:被一个 AS 内的路由器所使用的路由协议,缩写为 IGP。每个 AS 使用单一的 IGP,不同的AS 会使用不同的 IGP。路由器标识/Router ID:一个 32 位的数字,用以识别每台运行 OSPF 协议的路由器。在一个 AS 中,这个数字可以唯一地表示出一台路由器。网络/Network:在本备忘录中,会表示 IP 网络 /子网/超网。一个物理网络上可能设置有多个网络/子网号,我们把它们按照独立的网络来对待。物理点对点/point-to-poi
14、nt 网络是个例外无论在上面设置了多少网络/子网号(如果有的话) ,都将其看作是一个网络。网络掩码/Network mask:一个 32 位的数字,表示 IP 地址的范围来说明这是一个 IP 网络/子网/ 超网。本文以 16 进制来表示网络掩码。如将 C 类 IP 地址的网络掩码显示为 0xffffff00,这一掩码在其他文献中经常被表示为 255.255.255.0。点对点网络/Point-to-point networks:仅仅连接一对路由器的网络。56k 的串行线路是一个点对点网络的例子。广播网络/Broadcast networks:支持多台(大于两台)路由器接入的网络,同时有能力发送
15、一条信息就能到所有接入的路由器(广播) 。网络上邻居路由器可以通过 OSPF 的 Hello 协议来动态发现。如果可能,OSPF协议将进一步使用多播。广播网络上的每一对路由器都被认为可以直接通讯。以太网/ethernet 是一个广播网络的例子。非广播网络/Non-broadcast networks:支持多台(大于两台)路由器接入的网络,但没有广播能力。网络上的邻居路由器通过OSPF 的 Hello 协议来维持。但由于缺乏广播能力,需要一些配置信息的帮助来发现邻居。在非广播网络上,OSPF 协议的数据通常需要被轮流发送到每一台邻居路由器上。X.25 公用数据网/Public Data Netw
16、ork(PDN )是一个非广播网络的例子。在非广播网络上运行的 OSPF 有两种模式。第一种被称为非广播多路接入/non-broadcast OSPF 版本 2/第二稿第 7 页/总 134 页multi-access(NBMA) ,模拟 OSPF 在广播网络上的操作;第二种被称为点对多点 /Point-to-MultiPoint,将非广播网络看作是一系列点对点的连接。非广播网络被作为 NBMA 网络还是点对多点网络,取决于 OSPF 在该网络上所配置的运行模式。接口/Interface:是指路由器与所接入的网络之间的一个连接。接口通过下层协议和路由协议获取与其相关的状态信息。指向网络的接口只
17、和单一的 IP 地址及掩码相关(除非是无编号的点对点网络) 。接口有时也被称为连接/link。邻居路由器/Neighboring routers:在同一网络中都有接口的两台路由器。邻居关系是由 OSPF 的 Hello 协议来维持,并通常依靠 Hello 协议来动态发现。邻接/Adjacency:用以在所选择的邻居路由器之间交换路由信息的关系。不是每对邻居路由器都会成为邻接。连接状态宣告/Link state advertisement:描述路由器或网络自身状态的数据单元。对路由器来说,这包含它的接口和邻接状态。每一项连接状态宣告都被洪泛到整个路由域中。所有路由器和网络连接状态宣告的集合形成了
18、协议的连接状态数据库。在本备忘录中,连接状态宣告被缩写为 LSA。Hello 协议 /Hello Protocol:在 OSPF 协议中,用于建立和维持邻居关系的部分。在广播网络中还被用于动态发现邻居路由器。洪泛/Flooding:在 OSPF 协议中,用于 OSPF 路由器之间发送及同步连接状态数据库的部分。指定路由器/Designated Router:在每个接入了至少两台路由器的广播和 NBMA 网络中都有一台作为指定路由器。指定路由器生成 Network-LSA 并在运行协议时完成其他特定职责。指定路由器通过 Hello 协议选举。(译注:本文后边将缩写为 DR)指定路由器的概念减少了
19、广播和 NBMA 网络上所需要的邻接数量。同时也减少了路由协议所需要的流量及连接数据库的大小。下层协议/Lower-level protocols:为 IP 及 OSPF 协议提供服务的下层网络接入协议。如为 X.25 PDN 服务的 X.25 packet and frame level;以及为以太网服务的以太网数据链路层。1.3. 连接状态路由技术的简要历史OSPF 是一种连接状态路由协议。此类协议在其他文献中也被称为基于 SPF 或基于分布数据库/distributed-database 的协议。本节简要地介绍连接状态技术发展过程中影响 OSPF 协议的部分。RFC 2328第 8 页/
20、总 134 页第一种连接状态路由协议是为 ARPANET 网络开发的。该协议在引用 3中被描述。它成为其他连接状态协议的起点。所谓 ARPANET 网络环境,就是指通过同步串行线路连接的单一厂商的包交换网络,设计简单且只实现基本的协议。对此协议的修改在引用 4中被提出。修改包括增加路由协议的容错性,其中之一的手段就是在LSA 中添加了校验和(用于发现数据库错误) 。该文还提及在连接状态协议中要减少路由流量。这通过将产生 LSA 的间隔增加相当长时间来实现。连接状态算法同时也被 ISO 的 IS-IS 路由协议所使用。该协议在引用 2中被描述。该协议工作在广播网络上时,通过为每个网络选举 DR,
21、来减少数据及路由流量。由 DR 产生表示该网络的LSA。IETF 的 OSPF 工作组长期以来从事 OSPF 协议的开发工作。增强了指定路由器的概念以减少对路由流量的需求;还进一步使用多播能力来减少路由带宽;开发出区域路由而允许信息的隐藏/保护/汇聚;最后,修改算法以专为 TCP/IP 服务。1.4. 本文档的结构本文档开始的三章大致介绍了协议的功能,第 4-16 章介绍了协议内容的细节,在附录中列出了包格式、协议常量和可配置变量的清单。在文档中出现的诸如 HelloInterval 的标注是协议所需要的参数,包括可配置的和不可配置的。结构化常量在附录 B 中汇总,可配置变量在附录 C 中汇总
22、。为了使描述更为精确,本文档定义了协议所需要的数据结构。对本协议的实现必须支持所描述的功能,但不必使用和本备忘录完全一致的数据结构。1.5. 感谢作者感谢 Ran Atkinson、Fred Baker、Jeffrey Burgan、Rob Coltun、Dino Farinacci、Vince Fuller、 Phanindra Jujjavarapu、Milo Medin、Tom Pusateri、Kannan Varadhan、Zhaohui Zhang和其他 OSPF 工作组成员对本项目的建议和支持。OSPF 点对多点/Point-to-MultiPoint 接口是基于 Fred Ba
23、ker 的工作。OSPF 密码验证选项是由 Fred Baker 和 Ran Atkinson 开发的。另外,本文译者感谢 tigerfish、chenghit、cisco800 、4099 和其他 ITPUB 论坛成员的鼓励和支持。最后还要特别感谢我的女儿,她正是出生在我翻译本文的这段日子里。她让我知道,这世界上除了网络还有很多其他的东西。OSPF 版本 2/第二稿第 9 页/总 134 页2. 连接状态数据库:组织和计算下面的章节描述 OSPF 连接状态数据库的结构,以及如何从数据库来计算路由器的路由表。2.1. 路由器和网络的表示方法在 AS 内的连接状态数据库直接表现为一张图表。图表的
24、行、列用来表示路由器和网络。当两台路由器通过物理点对点网络接入时,图表上的标记就连接这两台路由器。当路由器在某个网络有接口时,图表标记就连接该路由器和这个网络。网络分传输/transit 网络和存根/stub 网络。传输网络可以传送既不是由本网络产生、也不是到达本网络的数据流量。传输网络在图表中有输入、输出两个标记,而存根网络只有输入标记。网络中各节点在图表上的邻居关系取决于网络的类型(点对点、广播、NBMA 或点对多点) ,以及连接到该网络的路由器数量。图 1a 描述了三种情况:方框表示路由器,纵横线表示网络。路由器名由字母 RT 开头、网络名由字母 N 开头、路由器的接口名由字母 I 开头
25、。两台路由器之间的直接连线表示点对点网络。左边的图表示网络和路由器的连接,右边的表显示结果。*FROM* |RT1|RT2|+-+Ia +-+ * -|RT1|-|RT2| T RT1| | X |+-+ Ib+-+ O RT2| X | |* Ia| | X |* Ib| X | |物理点对点网络*FROM*+-+ *|RT7| * |RT7| N3|+-+ T -| O RT7| | |+-+ * N3| X | |N3 *存根网络*FROM*+-+ +-+|RT3| |RT4| |RT3|RT4|RT5|RT6|N2 |+-+ +-+ * -| N2 | * RT3| | | | | X
26、 |+-+ T RT4| | | | | X | | O RT5| | | | | X |+-+ +-+ * RT6| | | | | X |RT5| |RT6| * N2| X | X | X | X | |+-+ +-+广播网络或 NBMA 网络图 1a:网络表的构成图表的行、列用来表示路由器和网络。当且仅当 A 列 B 行上有 “X”记号时,表示A、B 两项之间有连接。RFC 2328第 10 页/总 134 页图 1a 的最上部分显示了两台通过点对点线路连接的路由器。在连接状态数据库表的结果中,两个路由器项通过一对标记相互直接连接,每个标记表示一个方向。点对点接口不必设定 IP 地址。
27、如果设定了 IP 地址,每台路由器就宣告对端路由器的接口地址为一个存根连接。如果在点对点网络上设定了 IP 子网,每台路由器就宣告这个子网为存根连接,而不是宣告对端路由器的接口地址。图 1a 的中间显示了只接入一台路由器的网络(即存根网络) 。这时,连接状态数据库中表现为存根连接后的网络。当广播网络上接入了多台路由器后,连接状态数据库表现为这些路由器与网络的双向连接。如图1a 的底部表示。每个在表中的网络(传输和存根)都有 IP 地址以及相关联的网络掩码,掩码说明了在网络上的节点数量。直接连接到路由器的主机(称为主机路径) ,表现为存根网络。主机路径的网络掩码始终为 0xffffffff,表示
28、只有一个节点。2.1.1. 非广播网络的表示方法正如前面所述,OSPF 在非广播网络上有两种运行方式:NBMA 和点对多点。运行的方式决定了Hello 协议及洪泛在非广播网络上的工作方法,以及该网络在连接状态数据库中的表示方法。在 NBMA 模式下,OSPF 模拟在广播网络上的操作,并选举 DR 为该网络来生成 Network-LSA。正如图 1a 中显示的那样,NBMA 网络和广播网络的图表表示是一致的。不论从连接状态数据库的大小,还是从路由协议所需的流量,NBMA 模式都是在非广播网络上运行OSPF 最有效的方式。但这需要一个很重要的限制:所有接入 NBMA 网络的路由器都能够直接通讯。这
29、一限制适合某些非广播网络,如使用 SVC 的 ATM 子网;但在另一些非广播网络上就不适合,如仅使用 PVC 的帧中继网络。可以将这种网络分为几个逻辑上的子网,使每个子网中的路由器都能够直接通讯,并在每个子网上按 NBMA 模式运行(见引用 15 ) 。但是这需要更多些的管理,且容易配置错误。在此类网络上使用点对多点模式更好。在点对多点模式中,OSPF 将非广播网络里,每个路由器之间的连接都看作是点对点的连接。不在网络中选举 DR,也不为该网络产生 Network-LSA。事实上,连接状态数据库的图表中并没有表示点对多点网络的项。*FROM*+-+ +-+|RT3| |RT4| |RT3|RT
30、4|RT5|RT6|+-+ +-+ * -I3| N2 |I4 * RT3| | X | X | X |+-+ T RT4| X | | | X |I5| |I6 O RT5| X | | | X |+-+ +-+ * RT6| X | X | X | |RT5| |RT6| * I3| X | | | |+-+ +-+ I4| | X | | |I5| | | X | |I6| | | | X |图 1b:点对多点网络的网络表构成OSPF 版本 2/第二稿第 11 页/总 134 页除了 RT4 与 RT5 外,其他的路由器之间都可以通过 N2 直接通讯。I3 到 I6 表示路由器的 IP
31、接口地址。图 1b 说明了点对多点网络在连接状态数据库中的表现。图的左边一半给出了一个点对多点网络。并假设除了 RT4 与 RT5 外,其他的路由器之间都可以直接通讯。I3 到 I6 表示路由器在该网络上的 IP 接口地址。在图表中,能够通过点对多点网络而直接通讯的路由器使用双向标记连接;此外每台路由器都有一个表示自身 IP 接口地址的存根连接(对照图 1a 中真正点对点连接中的表示) 。在某些非广播网络上,使用点对多点模式和诸如逆向 ARP(见引用 14 )的数据链路层协议,可以在没有广播支持的情况下自动发现 OSPF 邻居。2.1.2. 一个连接状态数据库的示例+| 3+-+ N12 N1
32、4N1|-|RT1| 1 N13 /| +-+ 8 |8/8+ _ |/ 1+-+8 8+-+6* N3 *-|RT4|-|RT5|-+_/ +-+ +-+ |+ / | |7 | 3+-+ / | | |N2|-|RT2|/1 |1 |6 | +-+ +-+8 6+-+ |+ |RT3|-|RT6| |+-+ +-+ |2 Ia|7 | | |+-+ | |N4 | | |N11 | |+-+ | | | | N12|3 | |6 2/+-+ | +-+/|RT9| | |RT7|-N15+-+ | +-+ 9|1 + | |1_|_ | Ib|5 _|_/ 1+-+2 | 3+-+1 /
33、* N9 *-|RT11|-|-|RT10|-* N6 *_/ +-+ | +-+ _/| | |1 + |1+-+ 10+-+ N8 +-+|H1|-|RT12| |RT8|+-+SLIP +-+ +-+|2 |4| |+-+ +-+N10 N7图 2:一个简单的自制系统RFC 2328第 12 页/总 134 页图 2 显示了一个简单的 AS 示意图。标有 H1 的方框表示一台主机通过 SLIP 与路由器 RT12 连接,路由器 RT12 因此宣告主机路径。路由器之间的连线表示物理点对点网络,唯一设定了接口地址的点对点网络用以连接路由器 RT6 和 RT10。路由器 RT5 和 RT7 通
34、过 BGP 与其他 AS 连接,这些路由器各自从 BGP 得到一系列的路径。每个路由器输出接口都有数值与其关联,这些值由系统管理员设定。值越小,该接口就越会被用来转发数据流量。来源于外部的路由数据也有值与其关联(如从 BGP 得到的路径) 。图 2 表示的示意图所产生的结果在图 3 中描述。对应路由器输出接口的数值被填写在连接中。没有标明数值的连接填入 0。注意,从网络到路由器的连接,其数值虽然总是 0,但却有重要意义。还要注意,来源于外部的路由数据,在表中表现为存根。连接状态数据库是由产生于路由器的 LSA 集合而成。结合图表,每一个单独的 LSA 表示一个相邻的路由器或传输网络。图 4 显
35、示了这些 LSA。路由器 RT12 与两个广播网络各有一个接口连接,还与另一主机通过 SLIP 连接。网络 N9(译注:本小节中的 N9,原文均为 N6,但相信为笔误)是一个广播网络并有 3 台路由器接入,从网络 N9 到接入路由器的数值都是 0。网络 N9 的 LSA 是由接入到该网络上的一台路由器来生成的,该路由器就是在网络上选举出的 DR。*FROM*|RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|1 |2 |3 |4 |5 |6 |7 |8 |9 |10|11|12|N3|N6|N8|N9|- -RT1| | | | | | | | | | | | |0 |
36、| | |RT2| | | | | | | | | | | | |0 | | | |RT3| | | | | |6 | | | | | | |0 | | | |RT4| | | | |8 | | | | | | | |0 | | | |RT5| | | |8 | |6 |6 | | | | | | | | | |RT6| | |8 | |7 | | | | |5 | | | | | | |RT7| | | | |6 | | | | | | | | |0 | | |* RT8| | | | | | | | | | | | | |0 | | |* RT9| | | | | | | | | | |
37、| | | | |0 |T RT10| | | | | |7 | | | | | | | |0 |0 | |O RT11| | | | | | | | | | | | | | |0 |0 |* RT12| | | | | | | | | | | | | | | |0 |* N1|3 | | | | | | | | | | | | | | | |N2| |3 | | | | | | | | | | | | | | |N3|1 |1 |1 |1 | | | | | | | | | | | | |N4| | |2 | | | | | | | | | | | | | |N6| | | | | | |1
38、 |1 | |1 | | | | | | |N7| | | | | | | |4 | | | | | | | | |N8| | | | | | | | | |3 |2 | | | | | |N9| | | | | | | | |1 | |1 |1 | | | | |N10| | | | | | | | | | | |2 | | | | |N11| | | | | | | | |3 | | | | | | | |N12| | | | |8 | |2 | | | | | | | | | |N13| | | | |8 | | | | | | | | | | | |N14| | | | |8 | |
39、| | | | | | | | | |N15| | | | | | |9 | | | | | | | | | |H1| | | | | | | | | | | |10| | | | |图 3:连接图结果OSPF 版本 2/第二稿第 13 页/总 134 页*FROM* *FROM*|RT12|N9|N10|H1| |RT9|RT11|RT12|N9|* - * -* RT12| | | | | * RT9| | | |0 |T N9|1 | | | | T RT11| | | |0 |O N10|2 | | | | O RT12| | | |0 |* H1|10 | | | | * N9| |
40、 | | |* *RT12 的路由器 LSA N9 的网络 LSA图 4:单独的连接状态构成2.2. 最短路径树当不在 OSPF 中配置区域的时候,AS 中每一台路由器都有着相同的连接状态数据库,并使用相同的图表表示。每台路由器根据图表,构建出一棵以其自身为树根的最短路径树,并生成路由表。显然,最短路径树是由路由器来计算的。例子中路由器 RT6 的最短路径树在图 5 中描述。RT6(起点)RT5 o-o-o Ib/| 6 | 78/8|8 | / | 6| o | o | 7N12 o N14 | N13 2 | N4 o-o RT3 / 51/ RT10 o-o Ia/ |RT4 o-o N
41、3 3| 1/| | N6 RT7/ | N8 o o-o/ | | | /|RT2 o o RT1 | | 2/ |9/ | | |RT8 / |/3 |3 RT11 o o o o/ | | | N12 N15N2 o o N1 1| |4| |N9 o o N7/|/ |N11 RT9 / |RT12o-o-o o-o H13 | 10|2|o N10图 5:路由器 RT6 的最短路径树没有列出数值的连接标记,其数值为 0(网络到路由器的连接) 。路由器使用外部信息到达网络 N12-N15,这在第 2.3 节中描述。RFC 2328第 14 页/总 134 页最短路径树给出了到达任何目标
42、网络或主机的完整路径。虽然在转发过程中,只使用通向目标的下一跳。注意,也同时计算到达任何路由器的最佳路径。为了处理外部数据,我们标注了到达这些宣告外部路由的路由器的下一跳和距离值。路由器 RT6 计算后的路由表在表 2 中描述。注意,各有一条路径到达有编号点对点网络的两端(本例中是路由器 RT6 与 RT10 之间的串行线) 。在图 5 中,从路由器到属于其他 AS 的网络(如 N12)的连接使用虚线(译注:实际图中没有分别)。在下一节中考虑,如何使用外部信息。目标 下一跳 距离_N1 RT3 10N2 RT3 10N3 RT3 7N4 RT3 8Ib * 7Ia RT10 12N6 RT10
43、 8N7 RT10 12N8 RT10 10N9 RT10 11N10 RT10 13N11 RT10 14H1 RT10 21_RT5 RT5 6RT7 RT10 8表 2:路由器 RT6 路由表,本地路由部分2.3. 使用外部路由信息当产生最短路径树后,开始解释外部路由信息。外部路由信息可以是由其他诸如 BGP 的路由协议所产生的,或是被静态配置的(静态路由) 。默认路径也可以被看作是 AS 外部路由信息的一部分。外部路由信息将不作修改地在整个 AS 中被洪泛。本例中, AS 中的所有路由器都知道 RT7 有两条外部路径,其距离分别为 2 和 9。OSPF 支持两种类型的外部距离。类型 1
44、 被解释为与 OSPF 接口值(也就是连接状态中的距离值)使用同样的计量单位。类型 2 使用在更大层次上,类型 2 的距离被认为大于任何 AS 内部的路径距离。在使用外部距离类型 2 时假设:在路由一个数据包时,其距离主要用于 AS 之间的路径,并消除了将外部距离转换为连接状态数值的必要。作为一个处理外部距离类型 1 的例子,假设图 2 中的 RT5 和 RT7 都宣告类型 1 的距离。对于路由器 RT6 来说,到达每一条被宣告的外部路径的距离值,等于所宣告的外部路径距离加上 RT6 到达宣告路由器的距离值。当有两台路由器宣告同一条外部路径时,RT6 选择总值最小的宣告路由器。并将到达该外部路径的下一跳设定为到达所选择宣告路由器的下一跳。在图 2 中,RT5 和 RT7 都宣告了外部路径:网络 N12。对 RT6 来说,会首选 RT7,因为从 RT7OSPF 版本 2/第二稿第 15 页/总 134 页到达 N12 的距离是 10(8+2) ,要比 RT5 的 14(6+8)小。表 3 显示了加上外部路由的路由表。目标 下一跳 距离_