第78篇:IS-IS 路由泄露——Level-2 向 Level-1 注入

关键词

IS-IS、路由泄露、Route Leaking、L2→L1、区域间路由


一、为什么需要路由泄露?

1.1 L1 路由器的问题

在第 72 篇中我们学到:L1 路由器只知道自己区域的路由,去其他区域时只能通过默认路由(指向最近的 L1/L2 路由器)。

    区域 49.0001               区域 49.0002
L1 RouterA 172.16.1.0 L1 RouterC 172.16.2.0
│ │
L1 ────┴──── L1/L2 ──── L2 ─────┴──── L1
RouterB RouterD

问题

  • RouterA(L1)要访问 172.16.2.0(区域 2 的网段)
  • RouterA 只知道默认路由 → 发给 RouterB(最近的 L1/L2)
  • 如果 RouterB 到 172.16.2.0 有两条 L2 路径,RouterB 可以选择最优路径
  • 但如果 RouterA 不知道这些路由细节,可能造成次优路径

二、路由泄露的解决方案

2.1 什么是路由泄露

路由泄露(Route Leaking) 是指将 L2 的路由选择性地注入到 L1 区域中,让 L1 路由器能感知其他区域的具体路由,做出更优的转发决策。

路由泄露后:

区域 49.0001 的 L1 路由器(RouterA)的路由表:
  172.16.1.0/24  OSPF ... 直连
  172.16.2.0/24  IS-IS L1  → 下一跳 RouterB  ← 泄露进来的!
  0.0.0.0/0      IS-IS L1  → 下一跳 RouterB  ← 默认路由

2.2 路由泄露的优缺点

优点 缺点
L1 路由器能做出更优的选路决策 L1 LSDB 变大(更多 LSP)
减少经过 L1/L2 路由器的流量 泄露过多路由可能增加内存负担
支持精细的流量工程 配置复杂度增加

三、路由泄露配置

3.1 基本配置

# 在 L1/L2 路由器上配置路由泄露
isis 1
 import-route isis level-2 into level-1    # 将 L2 路由泄露到 L1

3.2 使用 Route-Policy 控制泄露

# 使用 Route-Policy 只泄露特定路由
route-policy LEAK_TO_L1 permit node 10
 if-match ip-prefix ALLOW_LEAK

isis 1
 import-route isis level-2 into level-1 route-policy LEAK_TO_L1

ip ip-prefix ALLOW_LEAK permit 172.16.0.0 16

3.3 控制泄露的 Metric

# 泄露时调整 Metric
route-policy LEAK_WITH_COST permit node 10
 apply cost 100                    # 给泄露的路由指定 Cost

isis 1
 import-route isis level-2 into level-1 route-policy LEAK_WITH_COST

四、默认路由 vs 路由泄露

对比项 只有默认路由 同时有路由泄露
LSDB 大小 很小 稍大
L1 选路 只能选最近 L1/L2 可以选择最优 L1/L2
次优路径风险
配置复杂度
适用场景 小型分支 大型区域

结论:要获得最优性能,应该同时保留默认路由+执行路由泄露。默认路由作为兜底,泄露的路由提供精确选路。


五、路由泄露与次优路径

5.1 没有路由泄露的场景

               区域 49.0001
172.16.0.0 ────────┤ Cost=10 Cost=5 └──L1────┘ RouterX L1/L2-A L1/L2-B

RouterX(L1)访问 172.16.0.0: 没有路由泄露 → 走默认路由 默认路由指向 L1/L2-A(优先选择) 实际最佳路径是走 L1/L2-B(Cost=5 < Cost=10) → 次优路径!

5.2 有路由泄露的场景

路由泄露后,RouterX 的路由表:

172.16.0.0/16  IS-IS L1  Cost=10  via L1/L2-A
172.16.0.0/16  IS-IS L1  Cost=5   via L1/L2-B  ← 优选此路径

→ RouterX 选择 L1/L2-B,路径最优 ✅

六、路由泄露与 L1/L2 的默认路由

6.1 L1/L2 路由器产生默认路由的条件

L1/L2 路由器会自动向 L1 区域发布一条默认路由(ATT bit 机制):

L2 路由器的 LSP 中有一个 ATT(Attach)bit:
  ATT=1 → L1 路由器知道存在 L2 骨干,产生默认路由
  ATT=0 → L1 路由器不产生默认路由

6.2 ATT bit 的控制

# 禁止 L1/L2 路由器设置 ATT bit(不自产生默认路由)
isis 1
 attached-bit advertise never     # 不宣告 ATT bit

七、路由泄露的高级应用

7.1 选择性泄露

# 只泄露指定网段的路由
route-policy FILTER_LEAK permit node 10
 if-match ip-prefix IMPORTANT_NETS

route-policy FILTER_LEAK deny node 20   # 其余路由不泄露

isis 1
 import-route isis level-2 into level-1 route-policy FILTER_LEAK

7.2 双向路由泄露(不推荐)

# 将 L1 路由泄露到 L2(默认 L2 已经知道 L1 路由,一般不需要)
isis 1
 import-route isis level-1 into level-2

注意:L2 路由默认已经知道所有 L1 区域的路由(通过 L1/L2 路由器的 L2 LSP 宣告),所以 L1→L2 的泄露通常不需要。


八、总结

知识点 核心要点
为什么需要路由泄露 L1 路由器只知道本地区域路由,去其他区域用默认路由
配置命令 import-route isis level-2 into level-1
路由策略 配合 Route-Policy 选择性泄露
ATT bit L1/L2 路由器的 ATT bit=1,L1 产生默认路由
默认路由 vs 泄露 两者并存,默认路由兜底,泄露路由提供精确选路
次优路径 无泄露时 L1 可能选非最优 L1/L2 路由器

九、思考

  1. 为什么说没有路由泄露时,L1 路由器到其他区域可能存在次优路径问题?
  2. 路由泄露的配置命令是什么?如何配合 Route-Policy 只泄露特定路由?
  3. ATT bit 的作用是什么?如何控制 ATT bit 的发布?
  4. 路由泄露会增加 L1 路由器的 LSDB 大小吗?这有什么权衡?
  5. 在什么场景下应该使用路由泄露,什么场景下只用默认路由就够了?

下篇预告:第79篇《IS-IS 开销类型——narrow 与 wide 模式》——理解 IS-IS 的两种度量方式及其演进。