Skip to content

0. 课件来源

FA(Forwarding Address,转发地址)是 Type 5 和 Type 7 LSA 中一个极易被忽视但影响深远的字段。它决定了 ASE 路由的真正"下一跳"和"内部 cost",理解 FA 是掌握外部路由选路的关键。


1. FA 的本质

FA 回答一个问题:"外部路由的真正出口在哪里?"

text
默认情况:
  FA = 0.0.0.0  → 数据包先到 ASBR,再由 ASBR 转发出去

特殊情况(条件触发):
  FA ≠ 0.0.0.0  → 数据包直接发给 FA 地址(绕过 ASBR!)

💡 FA 对选路的影响

FA 值内部 cost下一跳
0.0.0.0我到 ASBR 的 OSPF cost我到 ASBR 的下一跳
非 0我到 FA 地址的 OSPF cost我到 FA 地址的下一跳

2. FA 的生成规则

2.1 常规区域(Regular Area)

引入路由类型默认 FA例外(同时满足三条件→FA=外部路由的下一跳)
引入直连路由0.0.0.0三条件同时满足 → FA = 下一跳
引入外部动态路由0.0.0.0三条件同时满足 → FA = 下一跳

2.2 NSSA 区域

引入路由类型默认 FA例外(同时满足三条件→FA=外部路由的下一跳)
引入直连路由Loopback 地址(无 Loopback 则物理口 IP)三条件同时满足 → FA = 下一跳
引入外部动态路由Loopback 地址(无 Loopback 则物理口 IP)三条件同时满足 → FA = 下一跳

2.3 "三条件"详解

当以下三个条件同时满足时,FA = 外部路由的原始下一跳(而非 0.0.0.0 或 Loopback 地址):

#条件说明
1外部路由的出接口使能了 OSPF该接口参与 OSPF 进程
2出接口的 OSPF 网络类型为非 P2P/非 P2MP即 Broadcast 或 NBMA
3出接口没有被静默(silent-interface)接口正常发送 Hello 和 LSA
text
示例:AR1 通过 RIP 学到 6.6.6.0/24(出接口 GE0/0/0,10.1.15.0/24 网段)

若 GE0/0/0 使能 OSPF、网络类型 Broadcast、未被静默:
  → 6.6.6.0/24 的 Type 5 LSA 中 FA = 10.1.15.6(RIP 的下一跳)

其他设备收到此 T5:
  内部 cost = 到 10.1.15.6 的 cost(不是到 AR1 的 cost!)
  下一跳   = 到 10.1.15.6 的下一跳

3. FA 对选路的深度影响

3.1 FA = 0.0.0.0(经典计算)

text
ASE 路由计算 = T5 + [T4] + T1/2

与 ASBR 同区域:T5(leaf)+ T1/2(到 ASBR 的拓扑)
  内部 cost = 我到 ASBR 的 cost
  下一跳   = 我到 ASBR 的下一跳

与 ASBR 不同区域:T5 + T4(ASBR 位置)+ T1/2
  内部 cost = 我到 ASBR 的 cost(T4.cost + T1/2.cost)
  下一跳   = 递归到 ASBR 的下一跳

3.2 FA ≠ 0.0.0.0(FA 直通)

text
ASE 路由计算 = T5(FA=非0) → 直接查 FA 地址的 OSPF 路由

内部 cost = FA 地址在 OSPF 路由表中的 cost
下一跳   = FA 地址在 OSPF 路由表中的下一跳

⚠️ FA 可达性——关键限制

如果 FA 地址在路由表中不可达(未被 OSPF 学到、或被过滤掉),则对应的 ASE 外部路由也计算不出来——即便 T5 LSA 本身已收到!

text
# 模拟 FA 不可达的场景
AR4:
acl 2000
 rule deny source 10.1.15.0 0     # 过滤 FA 地址所在网段
→ 所有 FA=10.1.15.x 的 ASE 路由全部丢失

4. NSSA 7 转 5 中的 FA 机制

NSSA 区域的 ABR 在做 7 转 5 时,默认继承 Type 7 的 FA 地址到 Type 5。

4.1 为什么要继承 FA?

如果没有 FA,多个 ABR 都会各自做 7 转 5 → 产生多条 Type 5 → LSDB 膨胀。

有了 FA 后:默认只有 Router-ID 最大的 ABR 做 7 转 5(避免冗余 T5)。

4.2 控制 7 转 5 的 ABR

text
# 方法1:修改 Router-ID(大者优先)
router-id 10.0.0.1

# 方法2:指定 translator(推荐)
ospf 1
 area 2
  nssa translator-always      # 强制本 ABR 负责 7 转 5

4.3 抑制 FA 继承

text
# ABR 上将 Type 7 FA 清零后再转 Type 5
ospf 1
 area 2
  nssa suppress-forwarding-address

4.4 7 转 5 的前提

前提说明
Type 7 LSA 的 Options 中 NP 置位N=1(NSSA),P=1(Propagate=允许转换)
FA 地址存在Type 7 中 FA 非空

5. NSSA 区域路由引入的特殊控制

5.1 no-import-route

阻止本路由器向 NSSA 区域注入 Type 7 LSA:

text
ospf 1
 area 2
  nssa no-import-route    # 本地不产生 Type 7(过滤外部引入)

5.2 NSSA ABR 的双重身份

NSSA 区域的 ABR 同时可能也是 ASBR:

  • 它自己是 ABR(连接 Area 0 和 NSSA)
  • 如果它引入外部路由 → 向 NSSA 产生 Type 7(作为 ASBR)
  • 但它产生的 Type 7 中 NP 不置位 → 其他人不会把它转成 Type 5

6. 业务路由引入最佳实践

💡 业务网段该用 network 还是 import-route?

方式优点缺点
network域内路由,优先级高需静默(silent-interface),选路控制弱
import-route无需静默,可 route-policy 过滤/修改属性,ASE1>ASE2 灵活外部路由,优先级低

推荐:业务网段用 import-route + route-policy,选路控制更精细。


7. 易混淆点与考前速记

对比项结论
FA = 0.0.0.0内部 cost = 到 ASBR 的 cost;下一跳 = 到 ASBR 的下一跳
FA ≠ 0.0.0.0内部 cost = 到 FA 地址的 cost;下一跳 = 到 FA 的下一跳
常规区域默认 FA0.0.0.0
NSSA 默认 FALoopback 地址 > 物理口 IP(都是使能 OSPF 的接口)
三条件触发 FA=下一跳① 出接口使能 OSPF ② 网络类型非 P2P/P2MP ③ 接口未静默
FA 不可达ASE 路由计算不出来(即便收到 T5/T7)
7 转 5 FA 继承默认继承 Type 7 的 FA → 避免多 ABR 重复 7 转 5
7 转 5 选择Router-ID 大者优先 → 可配 translator-always 指定
抑制 FAnssa suppress-forwarding-address
NP 位N(NSSA)+ P(Propagate),P=1 才允许 7 转 5
no-import-route禁止本路由器向 NSSA 注入 T7
业务路由import-route 优于 network(选路灵活、无需静默)

考前速记 6 条

  1. FA 决定外部路由的"真下一跳":FA=0 走 ASBR,FA≠0 直走 FA
  2. 常规区域默认 FA=0;NSSA 默认 FA=Loopback 地址
  3. 三条件触发 FA=下一跳:出接口 ospf + 非 p2p/p2mp + 未静默
  4. FA 不可达 → ASE 路由不可达
  5. 7 转 5:Router-ID 大者优先,translator-always 可强制
  6. 业务路由用 import-route 而非 network(选路灵活、控制力强)

🤖 AI 伴学

想彻底理解 FA 机制?让 AI 用"快递直转"类比:

"请用快递中转站来类比 OSPF 的 FA 机制:默认情况下(FA=0.0.0.0),外部路由就像'国际快件',必须先送到 ASBR 这个'海关中转站'再分发——所有包裹都得先到 ASBR 走一圈。但如果满足三条件(出接口跑 OSPF、广播网络、未静默),FA 就非 0——相当于海关直接给了你一个'直提码(FA 地址)',包裹直接发到那个地址,不用经过海关了。NSSA 区域更智能:ABR 做 7 转 5 时默认继承 FA,只有 Router-ID 最大的 ABR 负责转换(像个片区总代理),避免每个人都转一份相同包裹。如果 FA 地址不通(被过滤了),就算收到取件通知(T5 LSA)也取不到货。"

真人撰写written by human