第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 路由器 |
九、思考
- 为什么说没有路由泄露时,L1 路由器到其他区域可能存在次优路径问题?
- 路由泄露的配置命令是什么?如何配合 Route-Policy 只泄露特定路由?
- ATT bit 的作用是什么?如何控制 ATT bit 的发布?
- 路由泄露会增加 L1 路由器的 LSDB 大小吗?这有什么权衡?
- 在什么场景下应该使用路由泄露,什么场景下只用默认路由就够了?
下篇预告:第79篇《IS-IS 开销类型——narrow 与 wide 模式》——理解 IS-IS 的两种度量方式及其演进。