Skip to main content

16. Calculation of AS-external Routes (AS外部路由计算)

本章详细描述如何计算 AS 外部路由,这些路由由 AS-external-LSA (Type 5) 通告。这是 OSPF 路由计算的最后阶段。


章节概述 (Chapter Overview)

AS 外部路由

  • 源自其他 AS 的路由
  • 由 ASBR 通告
  • 使用 Type 5 LSA
  • 在整个 AS 内泛洪(除末梢区域)

16.1 AS 外部路由概述 (Overview)

外部路由来源

典型来源

  • BGP 路由
  • 静态路由
  • 其他 IGP(如 RIP、IS-IS)
  • 直连网络(重分布)

外部路由类型

Type 1 External (E1)

  • Metric 包含内部代价和外部代价
  • Metric = 到达 ASBR 的代价 + 外部 Metric
  • 可比较的完整路径代价

Type 2 External (E2) - 默认

  • Metric 仅为外部代价
  • 内部代价仅在外部代价相同时比较
  • 更常用

16.2 计算前提条件 (Prerequisites)

必须先完成的计算

顺序要求

  1. 区域内路由(SPF)
  2. 区域间路由(Summary-LSA)
  3. 到 ASBR 的路由(Type 4 LSA)
  4. 然后才能计算外部路由

到 ASBR 的路由

获取方式

  • 区域内路由(ASBR 在同一区域)
  • 区域间路由(通过 Type 4 Summary-LSA)
  • 如果无法到达 ASBR,跳过该 ASBR 的外部路由

16.3 处理 AS-external-LSA (Processing Type 5 LSAs)

步骤 1:基本验证

检查项

  • LSA 校验和正确
  • Advertising Router 可达(有路由)
  • 目的网络不在 LSA 生成的区域内

步骤 2:确定 ASBR 路由

查找到 ASBR 的路由

asbr_route = lookup_route(advertising_router)
if asbr_route == NULL:
跳过此 LSA(ASBR 不可达)

ASBR 路由类型

  • 区域内路由(最优)
  • 区域间路由(通过 Type 4)

16.4 计算外部路由代价 (Calculating Cost)

Type 1 External 计算

公式

总代价 = 到达 ASBR 的代价 + LSA 中的外部 Metric

比较

  • 直接比较总代价
  • 代价小的优先
  • 代价相同保留 ECMP

示例

ASBR 在距离 10 的位置
外部 Metric = 20
Type 1 总代价 = 10 + 20 = 30

Type 2 External 计算

主要代价:外部 Metric
次要代价:到达 ASBR 的代价

比较规则

  1. 首先比较外部 Metric
    • 外部 Metric 小的优先
  2. 外部 Metric 相同时
    • 比较到达 ASBR 的代价
    • 内部代价小的优先

示例

路径 A: 外部 Metric = 100, 内部代价 = 10
路径 B: 外部 Metric = 100, 内部代价 = 20
路径 C: 外部 Metric = 50, 内部代价 = 50

排序: C > A > B

16.5 转发地址处理 (Forwarding Address)

转发地址概念

Forwarding Address 字段

  • Type 5 LSA 中的可选字段
  • 指定实际的转发目的地
  • 可以是 0.0.0.0 或非零地址

处理规则

情况 1:Forwarding Address = 0.0.0.0

  • 流量转发到 ASBR(Advertising Router)
  • 使用到 ASBR 的路由

情况 2:Forwarding Address ≠ 0.0.0.0

  • 流量转发到 Forwarding Address
  • 必须有到 Forwarding Address 的区域内路由
  • 如果无区域内路由,跳过此 LSA

转发地址计算示例

Type 5 LSA:
Network: 192.0.2.0/24
Advertising Router: 10.0.0.1 (ASBR)
Forwarding Address: 10.1.1.1
Metric: 20

处理:
1. 查找到 10.1.1.1 的路由(必须是区域内路由)
2. 如果找到,使用该路由的下一跳
3. 如果未找到,忽略此 LSA

16.6 确定下一跳 (Determining Next Hop)

下一跳选择逻辑

流程图

Type 5 LSA

Forwarding Address == 0 ?
↓ No ↓ Yes
查找到 FA 的路由 查找到 ASBR 的路由
↓ ↓
使用 FA 路由的下一跳 使用 ASBR 路由的下一跳
↓ ↓
└────→ 外部路由下一跳 ←────┘

多下一跳(ECMP)

等价路径

  • 到 ASBR 或 FA 有多条等价路径
  • 保留所有等价下一跳
  • 外部路由继承这些下一跳

16.7 路由比较和选择 (Route Comparison)

与现有路由比较

查找现有路由

existing_route = lookup_route(destination)

比较规则

1. 优先级比较

  • 区域内路由 > 区域间路由 > Type 1 外部 > Type 2 外部
  • 外部路由不能覆盖区域内或区域间路由

2. 相同类型比较

Type 1 vs Type 1

  • 比较总代价
  • 代价小的优先
  • 代价相同保留 ECMP

Type 2 vs Type 2

  • 比较外部 Metric
  • 外部 Metric 相同比较内部代价
  • 完全相同保留 ECMP

Type 1 vs Type 2

  • Type 1 总是优于 Type 2
  • 无论代价如何

16.8 外部路由标签 (External Route Tag)

路由标签用途

Route Tag 字段

  • 32 位整数
  • OSPF 协议不使用
  • 供外部应用使用

典型用途

  • 标识路由来源 AS
  • 实现路由策略
  • 防止路由环路(重分布场景)

标签传播

透明传播

  • OSPF 不修改 Route Tag
  • ABR 和 ASBR 透传
  • 可用于端到端策略

16.9 外部路由计算示例 (Calculation Example)

拓扑示例

AS 100 (OSPF)
|
R1 (ABR, cost to backbone = 10)
|
R2 (ASBR, cost from R1 = 5)
|
External Network: 203.0.113.0/24

Type 5 LSA 示例

LSA 内容

LS Type: AS-external-LSA (5)
Advertising Router: R2 (ASBR)
Network: 203.0.113.0/24
Metric Type: Type 2 (E=1)
Metric: 100
Forwarding Address: 0.0.0.0
Route Tag: 0

R1 的计算过程

步骤 1:查找到 ASBR 的路由

  • ASBR = R2
  • Cost to R2 = 5(区域内路由)

步骤 2:计算外部路由代价

  • 类型 = Type 2
  • 外部 Metric = 100
  • 内部代价 = 5

步骤 3:确定下一跳

  • Forwarding Address = 0.0.0.0
  • 下一跳 = 到 R2 的下一跳

步骤 4:安装路由

Route:
Destination: 203.0.113.0/24
Type: Type 2 External
Cost: 100 (外部) + 5 (内部)
Next-hop: R2
Route Tag: 0

16.10 特殊情况处理 (Special Cases)

默认路由

0.0.0.0/0

  • 可以通过 Type 5 LSA 通告
  • 作为默认网关
  • 优先级最低

主机路由

/32 路由

  • 可以通告主机路由
  • Network Mask = 255.255.255.255

超网路由

CIDR 聚合

  • 支持任意长度掩码
  • 支持 CIDR 超网

16.11 末梢区域处理 (Stub Area Handling)

末梢区域限制

Type 5 LSA 不进入末梢区域

  • 末梢区域不接受外部路由
  • ABR 不将 Type 5 LSA 泛洪到末梢区域

默认路由替代

ABR 通告默认路由

  • 使用 Type 3 Summary-LSA
  • 通告 0.0.0.0/0
  • 末梢区域路由器使用默认路由访问外部网络

16.12 NSSA 外部路由 (NSSA External Routes)

NSSA 特殊处理

Type 7 LSA (NSSA-external)

  • 在 NSSA 内部使用
  • 类似 Type 5,但仅在 NSSA 内传播
  • ABR 将 Type 7 转换为 Type 5

Type 7 到 Type 5 转换

转换规则

  • ABR 执行转换
  • 选择最优 Type 7(如果有多个 ABR)
  • P-bit 控制是否转换

技术要点总结 (Technical Summary)

关键概念

  1. 两种外部路由类型

    • Type 1: 可比较的总代价
    • Type 2: 外部代价优先(默认)
  2. 转发地址

    • 灵活的流量转发控制
    • 优化路由路径
    • 必须有区域内路由
  3. 路由优先级

    • 区域内 > 区域间 > E1 > E2
    • 确定性的路由选择

实现要点

计算顺序

  • 必须在区域内/区域间路由之后
  • 需要到 ASBR 的路由

转发地址处理

  • 正确的路由查找
  • 仅接受区域内路由
  • 下一跳正确计算

路由比较

  • 严格的优先级
  • 正确的代价比较
  • ECMP 支持

外部路由计算流程 (Calculation Flowchart)

开始处理 Type 5 LSA

验证 LSA 有效性

查找到 ASBR 的路由 → 未找到 → 跳过此 LSA
↓ 找到
Forwarding Address == 0 ?
↓ No ↓ Yes
查找到 FA 的区域内路由 使用 ASBR 路由
↓ ↓
未找到 → 跳过 找到路由
↓ ↓
└────→ 计算外部路由代价 ←────┘

Type 1: 总代价 = 内部 + 外部
Type 2: 主代价 = 外部, 次代价 = 内部

与现有路由比较

┌────────────┬────────────┬────────────┐
更优 相同 更差
↓ ↓ ↓
替换路由 添加ECMP 保留现有路由
↓ ↓ ↓
└────────→ 完成 ←────────┘

参考资料 (References)


注意 (Note):外部路由计算是 OSPF 路由计算的最后阶段。正确理解 Type 1 和 Type 2 的区别,以及转发地址的处理,对于正确实现 OSPF 至关重要。