跳到主要内容

1. 引言 (Introduction)

  1. 引言 (Introduction)

    本文档是 Open Shortest Path First (OSPF) TCP/IP internet 路由协议的规范. OSPF 被归类为 Interior Gateway Protocol (IGP). 这意味着它在属于同一个 Autonomous System 的路由器之间分发路由信息. OSPF 协议基于链路状态 (link-state) 或 SPF 技术. 这不同于传统 TCP/IP internet 路由协议所使用的 Bellman-Ford 基础.

    OSPF 协议由 Internet Engineering Task Force 的 OSPF 工作组开发. 它专门为 TCP/IP internet 环境设计, 包括对 CIDR 的显式支持, 以及对外部派生路由信息加标签. OSPF 还支持路由更新认证, 并在发送/接收更新时使用 IP 多播. 此外, 为了产生一种能快速响应拓扑变化、同时只产生少量路由协议流量的协议, 已经进行了大量工作.

    1.1. 协议概述 (Protocol overview)

    OSPF 仅根据 IP 报文头部中的目的 IP 地址来路由 IP 报文. IP 报文按 "as is" 方式转发, 在穿越 Autonomous System 时不会再封装到任何其他协议头部中. OSPF 是动态路由协议. 它能快速检测 AS 中的拓扑变化, 例如路由器接口故障, 并在一段收敛期后计算出新的无环路路由. 该收敛期很短, 且只涉及最少的路由流量.

    在链路状态路由协议中, 每台路由器都维护一个描述 Autonomous System 拓扑的数据库. 该数据库称为链路状态数据库 (link-state database). 每台参与路由器都拥有完全相同的数据库. 该数据库中的每个单独数据项都是某台路由器的本地状态, 例如路由器可用接口和可达邻居. 路由器通过泛洪 (flooding) 将其本地状态分发到整个 Autonomous System.

    所有路由器并行运行完全相同的算法. 每台路由器都根据链路状态数据库构建一棵以自身为根的最短路径树. 这棵最短路径树给出到 Autonomous System 中每个目的地的路由. 外部派生的路由信息作为叶节点出现在树上.

    当到某个目的地存在多条等价代价路由时, 流量会在它们之间均匀分配. 路由代价由一个无量纲的单一度量描述.

    OSPF 允许将网络集合分组. 这样的分组称为区域 (area). 一个区域的拓扑会对 Autonomous System 的其余部分隐藏. 这种信息隐藏可以显著减少路由流量. 此外, 区域内部的路由只由该区域自身的拓扑决定, 使该区域能够免受错误路由数据的影响. 区域是 IP 子网化网络的一种泛化.

    OSPF 支持灵活配置 IP 子网. OSPF 分发的每条路由都有目的地和掩码. 同一个 IP 网络号的两个不同子网可以具有不同大小, 即不同掩码. 这通常称为 variable length subnetting. 报文会被路由到最佳匹配, 也就是最长或最具体的匹配. 主机路由被视为掩码为 "全 1" (0xffffffff) 的子网.

    所有 OSPF 协议交换都经过认证. 这意味着只有受信任的路由器才能参与 Autonomous System 的路由. 可以使用多种认证方案; 实际上, 可以为每个 IP 子网配置独立的认证方案.

    外部派生的路由数据, 例如从 BGP 等 Exterior Gateway Protocol 学到的路由 (见 [Ref23]), 会在整个 Autonomous System 中通告. 这些外部派生数据与 OSPF 协议的链路状态数据分开保存. 每条外部路由还可由通告路由器加标签, 从而允许在 Autonomous System 边界上的路由器之间传递额外信息.

    1.2. 常用术语定义 (Definitions of commonly used terms)

    本节为在 OSPF 协议中具有特定含义并在全文使用的术语提供定义. 不熟悉 Internet Protocol Suite 的读者可参见 [Ref13], 其中介绍了 IP.


    Router
    第三层 Internet Protocol 分组交换机. 在许多早期 IP 文献中称为 gateway.

    Autonomous System
    一组通过共同路由协议交换路由信息的路由器. 缩写为 AS.

    Interior Gateway Protocol
    属于某个 Autonomous System 的路由器所使用的路由协议. 缩写为 IGP. 每个 Autonomous System 有一个 IGP. 不同 Autonomous Systems 可以运行不同 IGP.

    Router ID
    分配给每台运行 OSPF 协议的路由器的 32 位编号. 该编号在一个 Autonomous System 内唯一标识该路由器.

    Network
    在本备忘录中, 指 IP 网络/子网/超网. 一个物理网络可以被分配多个 IP 网络/子网号. 我们将它们视为独立网络. 点到点物理网络是例外, 无论为其分配了多少个 IP 网络/子网号, 或者根本没有分配, 都视为单个网络.

    Network mask
    一个 32 位编号, 指示位于单个 IP 网络/子网/超网上的 IP 地址范围. 本规范将网络掩码显示为十六进制数字.

    例如, class C IP 网络的网络掩码显示为 0xffffff00. 在其他文献中, 这种掩码通常显示为 255.255.255.0.

    Point-to-point networks
    连接单对路由器的网络. 56Kb 串行线路是点到点网络的一个例子.

    Broadcast networks
    支持多个, 即两个以上, 连接路由器的网络, 并且能够把单个物理消息寻址给所有连接的路由器 (广播). 在这些网络上, 使用 OSPF 的 Hello Protocol 动态发现相邻路由器. Hello Protocol 本身利用广播能力. 如果存在多播能力, OSPF 协议还会进一步使用它. 假定广播网络上的每对路由器都能够直接通信. Ethernet 是广播网络的一个例子.

    Non-broadcast networks
    支持多个, 即两个以上, 路由器但没有广播能力的网络. 在这些网络上, 使用 OSPF 的 Hello Protocol 维护相邻路由器. 但是, 由于缺乏广播能力, 可能需要某些配置信息来帮助发现邻居. 在非广播网络上, 通常会以多播方式发送的 OSPF 协议报文需要依次发送给每个相邻路由器. X.25 Public Data Network (PDN) 是非广播网络的一个例子.

    OSPF 在非广播网络上以两种模式之一运行. 第一种模式称为 non-broadcast multi-access 或 NBMA, 它模拟 OSPF 在广播网络上的运行. 第二种模式称为 Point-to-MultiPoint, 它把非广播网络视为点到点链路集合. 根据 OSPF 在网络上的运行模式, 非广播网络称为 NBMA networks 或 Point-to-MultiPoint networks.

    Interface
    路由器与其连接网络之一之间的连接. 接口具有与之关联的状态信息, 这些信息来自底层低层协议和路由协议本身. 连接到网络的接口具有一个与之关联的 IP 地址和掩码, 除非该网络是未编号点到点网络. 接口有时也称为 link.

    Neighboring routers
    具有到同一公共网络接口的两台路由器. 邻居关系由 OSPF 的 Hello Protocol 维护, 并且通常也由它动态发现.

    Adjacency
    为交换路由信息而在选定的相邻路由器之间形成的关系. 并非每一对相邻路由器都会成为邻接.

    Link state advertisement
    描述路由器或网络本地状态的数据单元. 对于路由器, 这包括路由器接口和邻接关系的状态. 每个 link state advertisement 都会在整个路由域内泛洪. 所有路由器和网络的链路状态通告集合构成协议的链路状态数据库. 在本备忘录全文中, link state advertisement 缩写为 LSA.

    Hello Protocol
    OSPF 协议中用于建立和维护邻居关系的部分. 在广播网络上, Hello Protocol 还可以动态发现相邻路由器.

    Flooding
    OSPF 协议中在 OSPF 路由器之间分发并同步链路状态数据库的部分.

    Designated Router
    每个至少连接两台路由器的广播网络和 NBMA 网络都有一个 Designated Router. Designated Router 为该网络生成 LSA, 并在协议运行中承担其他特殊职责. Designated Router 由 Hello Protocol 选举.

    Designated Router 概念减少了广播网络或 NBMA 网络上所需邻接关系的数量. 这继而减少了路由协议流量以及链路状态数据库的大小.

    Lower-level protocols
    为 Internet Protocol 以及进而为 OSPF 协议提供服务的底层网络接入协议. 示例包括 X.25 PDN 的 X.25 分组层和帧层, 以及 Ethernet 的数据链路层.

    1.3. 链路状态路由技术简史 (Brief history of link-state routing technology)

    OSPF 是链路状态路由协议. 在文献中, 这类协议也称为基于 SPF 的协议或分布式数据库协议. 本节简要描述对 OSPF 协议产生影响的链路状态技术发展.

    第一个链路状态路由协议是为 ARPANET 分组交换网络开发的. 该协议在 [Ref3] 中描述. 它构成了所有其他链路状态协议的起点. 同构的 ARPANET 环境, 即通过同步串行线路连接的单一厂商分组交换机, 简化了原始协议的设计和实现.

    [Ref4] 提出了对该协议的修改. 这些修改涉及通过多种方式提高路由协议的容错性, 其中包括向 LSA 添加校验和, 从而检测数据库损坏. 该论文还包含了降低链路状态协议中路由流量开销的方法. 这是通过引入一些机制实现的, 这些机制使 LSA 产生间隔能够增加一个数量级.

    也有人提出将链路状态算法用于 ISO IS-IS 路由协议. 该协议在 [Ref2] 中描述. 该协议包含在广播网络上运行时减少数据和路由流量的方法. 这是通过为每个广播网络选举 Designated Router 来完成的, 然后由该路由器为该网络产生 LSA.

    IETF 的 OSPF Working Group 在开发 OSPF 协议时扩展了这项工作. Designated Router 概念被大幅增强, 进一步减少所需路由流量. 多播能力被用于进一步降低路由带宽. 区域路由方案被开发出来, 以支持信息隐藏/保护/缩减. 最后, 这些算法经过调整, 以便在 TCP/IP internets 中高效运行.

    1.4. 本文档组织 (Organization of this document)

    本规范前三节概述协议的能力和功能. Sections 4-16 详细解释协议机制. 报文格式、协议常量和配置项在附录中规定.

    文中出现的 HelloInterval 等标签指协议常量. 它们可能可配置, 也可能不可配置. 架构常量汇总在 Appendix B. 可配置常量汇总在 Appendix C.

    协议的详细规范以数据结构形式呈现. 这样做是为了使说明更加精确. 协议实现必须支持所描述的功能, 但不需要使用本备忘录中出现的精确数据结构.

    1.5. 致谢 (Acknowledgments)

    作者感谢 Ran Atkinson, Fred Baker, Jeffrey Burgan, Rob Coltun, Dino Farinacci, Vince Fuller, Phanindra Jujjavarapu, Milo Medin, Tom Pusateri, Kannan Varadhan, Zhaohui Zhang 以及 OSPF Working Group 的其他成员, 感谢他们为本项目提供的想法和支持.

    OSPF Point-to-MultiPoint 接口基于 Fred Baker 所做的工作.

    OSPF Cryptographic Authentication 选项由 Fred Baker 和 Ran Atkinson 开发.