11. 路由表结构 (The Routing Table Structure)
- 路由表结构 (The Routing Table Structure)
路由表数据结构包含将 IP 数据报文转发到其目的地所需的全部信息. 每个路由表条目描述到某个特定目的地的一组最佳路径. 转发 IP 数据报文时, 会查找为该报文 IP 目的地址提供最佳匹配的路由表条目. 匹配的路由表条目随后给出通往该报文目的地的下一跳. OSPF 还允许存在默认路由 (Destination ID = DefaultDestination, Address Mask = 0x00000000). 当默认路由存在时, 它匹配所有 IP 目的地, 尽管任何其他匹配条目都是更好的匹配. Section 11.1 进一步描述如何查找最匹配某个 IP 目的地的路由表条目.
每台路由器中只有一张路由表. Sections 11.2 和 11.3 描述了两个示例路由表. Section 16 讨论路由表的构建.
本节其余部分定义路由表条目中的字段. 第一组字段描述路由表条目的目的地.
Destination Type
Destination Type 是 "network" 或 "router". 实际转发 IP 数据流量时只使用 network 条目. router 路由表条目仅作为路由表构建过程中的中间步骤使用.
network 是 IP 地址范围, IP 数据流量可以转发到该范围. 这包括 IP networks (class A, B 或 C)、IP subnets、IP supernets 和单个 IP hosts. 默认路由也属于这一类别.
router 条目为 area border routers 和 AS boundary routers 保留. area border routers 的路由表条目在计算跨区域路由 (见 Section 16.2) 以及维护已配置虚链路 (见 Section 15) 时使用. AS boundary routers 的路由表条目在计算 AS 外部路由 (见 Section 16.4) 时使用.
Destination ID
目的地的标识符或名称. 这取决于 Destination Type. 对于网络, 标识符是其关联的 IP 地址. 对于路由器, 标识符是 OSPF Router ID.[9]
Address Mask
只为网络定义. 网络的 IP 地址及其地址掩码共同定义一段 IP 地址范围. 对 IP 子网来说, 地址掩码称为 subnet mask. 对主机路由来说, 掩码为 "全 1" (0xffffffff).
Optional Capabilities
当目的地是路由器时, 此字段指示目的路由器支持的可选 OSPF 能力. 本规范定义的唯一可选能力是处理 AS-external-LSAs 的能力. 有关 OSPF 可选能力的进一步讨论, 见 Section 4.5.
对某个目的地使用的路径集合可能会根据这些路径所属的 OSPF 区域而变化. 这意味着同一目的地可能存在多个路由表条目, 具体取决于下一个字段的值.
Area
此字段指示哪个区域的链路状态信息产生了该路由表条目的路径集合. 这称为该条目的关联区域. 对 AS external paths 集合, 此字段未定义. 对类型为 "router" 的目的地, 可能存在与多个区域分别关联的独立路径集合, 因而也有独立的路由表条目. 例如, 当两个 area border routers 共有多个区域时就会发生这种情况. 对类型为 "network" 的目的地, 只保留与最佳区域, 即提供首选路由的区域, 关联的路径集合.
路由表条目的其余部分描述到目的地的路径集合. 以下字段适用于整个路径集合. 换句话说, 路由表条目中包含的每条路径都具有相同的 path-type 和 cost (见下文).
Path-type
用于把流量路由到目的地的路径有四种可能类型, 这里按优先级从高到低列出: intra-area, inter-area, type 1 external 或 type 2 external. Intra-area paths 表示属于路由器所连接区域之一的目的地. Inter-area paths 是到其他 OSPF 区域中目的地的路径. 它们通过检查收到的 summary-LSAs 发现. AS external paths 是到 AS 外部目的地的路径. 它们通过检查收到的 AS-external-LSAs 检测.
Cost
到目的地路径的链路状态代价. 对除 type 2 external paths 之外的所有路径, 该字段描述整条路径的代价. 对 Type 2 external paths, 该字段描述路径中 AS 内部部分的代价. 该代价按路径组成链路的代价之和计算.
Type 2 cost
只对 type 2 external paths 有效. 对这些路径, 此字段指示路径外部部分的代价. 该代价由 AS boundary router 通告, 是总路径代价中最重要的部分. 例如, 无论两条路径内部组成部分的代价是多少, type 2 cost 为 5 的 type 2 external path 总是优先于 type 2 cost 为 10 的路径.
Link State Origin
仅对 intra-area paths 有效, 此字段指示直接引用目的地的 LSA (router-LSA 或 network-LSA). 例如, 如果目的地是 transit network, 则这是该 transit network 的 network-LSA. 如果目的地是 stub network, 则这是所连接路由器的 router-LSA. 该 LSA 在最短路径树计算期间发现 (见 Section 16.1). 多个 LSA 可能引用同一个目的地, 但平局决策方案总会把选择缩减为单个 LSA. OSPF 协议本身不使用 Link State Origin 字段, 但 OSPF 的 Multicast routing extensions (MOSPF) 中的路由表计算会使用它.
当到某个目的地存在多条 path-type 和 cost 相同的路径, 在其他地方称为 "equal-cost" paths, 它们存储在同一个路由表条目中. 每条 "equal-cost" path 由以下字段区分:
Next hop
向目的地转发流量时使用的出向路由器接口. 在广播、Point-to-MultiPoint 和 NBMA 网络上, 下一跳还包括通往目的地路径上的下一台路由器的 IP 地址, 如果有的话.
Advertising router
仅对 inter-area 和 AS external paths 有效. 此字段指示通告 summary-LSA 或 AS-external-LSA 并导致该路径产生的路由器的 Router ID.
11.1. 路由表查找 (Routing table lookup)
收到 IP 数据报文时, OSPF 路由器会查找最匹配该报文目的地的路由表条目. 然后该路由表条目提供转发该报文时使用的出接口和下一跳路由器. 本节描述查找最佳匹配路由表条目的过程.
查找开始之前, 应为路由器的每个活动区域地址范围 (见 Section 3.5) 在路由表中插入 "discard" 路由表条目. 如果某个区域范围包含一个或多个可通过 intra-area paths 到达的网络, 则该区域范围被视为 "active". "discard" 条目的目的地是其关联活动区域地址范围所描述的地址集合, 每个 "discard" 条目的 path type 设置为 "inter-area".[10]
多个路由表条目可能匹配目的地址. 在这种情况下, "best match" 是提供最具体, 即最长, 匹配的路由表条目. 另一种说法是选择指定最窄 IP 地址范围的条目.[11] 例如, 地址/掩码对 (128.185.1.0, 0xffffff00) 的条目比地址/掩码对 (128.185.0.0, 0xffff0000) 的条目更具体. 默认路由是最不具体的匹配, 因为它匹配所有目的地. 注意, 对于任意单个路由表条目, 可能存在多条路径. 在这些情况下, Sections 16.1, 16.2 和 16.4 中的计算总是产生具有最高优先 path-type 的路径, 如 Section 11 所述.
如果没有匹配的路由表条目, 或最佳匹配路由表条目是上述 "discard" 路由表条目之一, 则该报文的 IP 目的地被视为不可达. 此时不应转发该报文, 而应丢弃该报文并向报文源返回 ICMP destination unreachable 消息.
11.2. 无区域时的示例路由表 (Sample routing table, without areas)
考虑 Figure 2 中所示的 Autonomous System. 未配置 OSPF 区域. 每个出接口显示一个度量. Router RT6 的路由表计算按 Section 2.2 所述进行. 结果路由表见 Table 12. 目的类型缩写如下: Network 为 "N", Router 为 "R".
本例中没有多条等价代价最短路径的实例. 此外, 由于没有区域, 也没有 inter-area paths.
Routers RT5 和 RT7 是 AS boundary routers. 已经计算出到 Routers RT5 和 RT7 的 intra-area routes. 这允许计算到 RT5 和 RT7 所通告目的地的外部路由, 即 Networks N12, N13, N14 和 N15. 假定 RT5 和 RT7 产生的所有 AS-external-LSAs 都通告 type 1 external metrics. 这会导致计算出到目的地 N12-N15 的 type 1 external paths.
11.3. 有区域时的示例路由表 (Sample routing table, with areas)
再考虑前一个例子, 这次将其划分为 OSPF 区域. Figure 6 中给出了一个 OSPF 区域配置. 本区域配置下将描述 Router RT4 的路由表. Router RT4 连接到 Area 1, 并具有 backbone 连接. 这使 Router RT4 将 AS 看作 Figures 7 和 8 所示两张图的串接. 结果路由表显示在 Table 13 中.
同样, Routers RT5 和 RT7 是 AS boundary routers. Routers RT3, RT4, RT7, RT10 和 RT11 是 area border routers. 注意, area border router RT3 有两个路由条目, 因为它与 RT4 共有两个区域 (Area 1 和 backbone).
已经计算出到所有 area border routers 的 backbone paths. 这些路径用于确定 inter-area routes. 注意, 所有 inter-area routes 都与 backbone 关联; 当执行计算的路由器自身是 area border router 时, 情况总是如此. 路由信息在区域边界处被压缩. 在本例中, 我们假定 Area 3 被定义为使 networks N9-N11 和到 H1 的 host route
Type Dest Area Path Type Cost Next Adv.
Hop(s) Router(s)
____________________________________________________________
N N1 0 intra-area 10 RT3 *
N N2 0 intra-area 10 RT3 *
N N3 0 intra-area 7 RT3 *
N N4 0 intra-area 8 RT3 *
N Ib 0 intra-area 7 * *
N Ia 0 intra-area 12 RT10 *
N N6 0 intra-area 8 RT10 *
N N7 0 intra-area 12 RT10 *
N N8 0 intra-area 10 RT10 *
N N9 0 intra-area 11 RT10 *
N N10 0 intra-area 13 RT10 *
N N11 0 intra-area 14 RT10 *
N H1 0 intra-area 21 RT10 *
R RT5 0 intra-area 6 RT5 *
R RT7 0 intra-area 8 RT10 *
____________________________________________________________
N N12 * type 1 ext. 10 RT10 RT7
N N13 * type 1 ext. 14 RT5 RT5
N N14 * type 1 ext. 14 RT5 RT5
N N15 * type 1 ext. 17 RT10 RT7
Table 12: Router RT6 的路由表
(未配置区域).
在通告到 backbone 时 (由 Router RT11 通告) 都被压缩为单条路由. 注意, 该路由的代价是其各个组成部分代价集合中的最大值.
Routers RT10 和 RT11 之间配置了一条虚链路. 如果没有这条已配置虚链路, RT11 将无法把 networks N9-N11 和 Host H1 的路由通告到 backbone 中, Router RT4 的路由表中也不会有这些网络的条目.
在本例中, 到 Network N12 有两条等价代价路径. 不过, 它们都使用同一个下一跳 (Router RT5).
Router RT4 的路由表会因为在 Router RT4 和 Router RT3 之间配置额外的虚链路而改善, 即路由表中的某些路径会变短. 新虚链路本身将与 Table 13 中 area border router RT3 的第一个条目关联, 即通过 Area 1 的 intra-area path. 这会使虚链路的代价为 1. 添加这条虚链路所导致的路由表条目变化显示
Type Dest Area Path Type Cost Next Adv. Hops(s) Router(s)
N N1 1 intra-area 4 RT1 * N N2 1 intra-area 4 RT2 * N N3 1 intra-area 1 * * N N4 1 intra-area 3 RT3 * R RT3 1 intra-area 1 * *
N Ib 0 intra-area 22 RT5 * N Ia 0 intra-area 27 RT5 * R RT3 0 intra-area 21 RT5 * R RT5 0 intra-area 8 * * R RT7 0 intra-area 14 RT5 * R RT10 0 intra-area 22 RT5 * R RT11 0 intra-area 25 RT5 *
N N6 0 inter-area 15 RT5 RT7 N N7 0 inter-area 19 RT5 RT7 N N8 0 inter-area 18 RT5 RT7 N N9-N11,H1 0 inter-area 36 RT5 RT11
N N12 * type 1 ext. 16 RT5 RT5,RT7 N N13 * type 1 ext. 16 RT5 RT5 N N14 * type 1 ext. 16 RT5 RT5 N N15 * type 1 ext. 23 RT5 RT7
Table 13: 存在区域时 Router RT4 的路由表.
在 Table 14 中.