第99篇:路由重分发原理——OSPF 与 BGP 互引
关键词
路由重分发、路由引入、OSPF、BGP、Redistribution、互引、双向引入
一、什么是路由重分发
路由重分发(Route Redistribution) 是将一种路由协议学习到的路由引入到另一种路由协议中。
OSPF 域 BGP 域 | OSPF 路由 | ──ASBR──→ 引入 到 BGP ←─────── | BGP 路由 | | --- | --- | --- | | └──────┘ 引入 └──────┘ | | | 到 OSPF
二、常见的引入场景
| 场景 | 方向 | 说明 |
|---|---|---|
| OSPF → BGP | ASBR 将内部路由引入 BGP | 企业出口到运营商 |
| BGP → OSPF | ASBR 将外部路由引入 OSPF | 运营商路由进企业内网 |
| 静态 → OSPF | 将静态路由引入 OSPF | 特殊网段通告 |
| 直连 → BGP | 将直连网络引入 BGP | Loopback 等 |
三、OSPF 到 BGP 的引入
3.1 配置
# ASBR 上将 OSPF 路由引入 BGP
bgp 100
import-route ospf 1 # 将 OSPF 进程 1 的路由引入 BGP
import-route ospf 1 route-policy FILTER_OSPF # 使用策略控制
3.2 策略控制
# 只引入特定 OSPF 路由
route-policy FILTER_OSPF permit node 10
if-match ip-prefix INTERNAL
ip ip-prefix INTERNAL permit 10.0.0.0 8
3.3 BGP 属性设置
# 在引入时设置 BGP 属性
route-policy OSPF_TO_BGP permit node 10
if-match ip-prefix CRITICAL
apply med 50
apply community 100:10
apply tag 100
route-policy OSPF_TO_BGP permit node 20
apply med 100 # 默认 MED = 100
bgp 100
import-route ospf 1 route-policy OSPF_TO_BGP
四、BGP 到 OSPF 的引入
4.1 配置
# ASBR 上将 BGP 路由引入 OSPF
ospf 1
import-route bgp # 将 BGP 路由引入 OSPF(Type 5 LSA)
import-route bgp cost 50 type 1 # 设置 Cost 和类型
4.2 策略控制
route-policy BGP_TO_OSPF permit node 10
if-match ip-prefix ALLOW_EXTERNAL
apply cost 50
apply type type-1
ospf 1
import-route bgp route-policy BGP_TO_OSPF
4.3 Type 5 还是 Type 7
# 引入到普通区域 → Type 5 LSA
ospf 1
import-route bgp
# 引入到 NSSA 区域 → Type 7 LSA
ospf 1
[area 1]
nssa
import-route bgp # 生成 Type 7 LSA
五、双向引入
5.1 场景
企业内网 互联网
| OSPF 域 10.0.0.0/8 | ──OSPF──→ 引入 ←──BGP─── 引入 | BGP 域 0.0.0.0/0 |
|---|---|---|
5.2 双向引入配置
# ASBR 配置
bgp 100
import-route ospf 1 # OSPF → BGP(发布内网路由)
ospf 1
import-route bgp # BGP → OSPF(引入默认路由)
5.3 风险:路由环路
双向引入最大的风险是路由环路。
OSPF 路由引入 BGP
→ BGP 路由被另一台 ASBR 引入回 OSPF
→ OSPF 中出现了本应该只在 OSPF 内部的路由
→ 如果这条路由的 Cost 更优 → 环路!
解决:使用 Tag 防止环路(见第 100 篇)。
六、重分发的度量处理
6.1 默认度量
| 引入方向 | 默认度量 |
|---|---|
| OSPF → BGP | MED = 0(如果是 network 方式) |
| BGP → OSPF | Cost = 1(Type 2) |
| 静态 → OSPF | Cost = 1(Type 2) |
| RIP → OSPF | Cost = 20(Type 2) |
6.2 建议
永远不要使用默认度量,要显式指定:
ospf 1
import-route bgp cost 50 type 1 # 显式指定
bgp 100
import-route ospf 1 med 100 # 显式指定
七、互引的典型问题
7.1 次优路径
OSPF → BGP → 另一台 ASBR → 引入回 OSPF
→ 如果这条 BGP 路径 Cost 更小
→ 内部路由器选择 BGP 引入的路径而非 OSPF 内部路径
→ 次优路径!
7.2 路由反馈(环路)
OSPF 路由 X → 引入 BGP → 另一台 ASBR → 引入回 OSPF
→ OSPF 中出现了 X(来自 BGP)
→ 第一台 ASBR 可能选择 BGP 版本的 X
→ 环路!
八、最佳实践
# 1. 单向引入优先(尽量避免双向引入)
# 2. 必须双向时,使用 Tag 和 Route-Policy 防环
# 3. 显式设置度量值
# 4. 使用前缀列表控制范围
# 推荐方案:单向引入 + 默认路由
ospf 1
default-route-advertise always # 在 OSPF 中生成默认路由
bgp 100
import-route ospf 1 # 内网路由引入 BGP
九、总结
| 引入方向 | 配置 | 默认类型 | 风险 |
|---|---|---|---|
| OSPF → BGP | bgp import-route ospf |
- | BGP 表膨胀 |
| BGP → OSPF | ospf import-route bgp |
E2 | 环路 |
| 静态 → OSPF | ospf import-route static |
E2 | 策略管控 |
| 直连 → BGP | bgp import-route direct |
- | 不必要路由 |
十、思考
- 路由重分发的本质是什么?什么场景下需要用到?
- OSPF 到 BGP 的引入配置命令是什么?如何控制只引入特定网段?
- BGP 到 OSPF 的引入会产生什么类型的 LSA?
- 双向引入的主要风险是什么?
- 在重分发中,为什么不建议使用默认度量值?
下篇预告:第100篇《路由重分发环路的防制——Tag 与 Filter-Policy》——终结第二章的最后一篇,掌握防环的终极武器。