第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 - 不必要路由

十、思考

  1. 路由重分发的本质是什么?什么场景下需要用到?
  2. OSPF 到 BGP 的引入配置命令是什么?如何控制只引入特定网段?
  3. BGP 到 OSPF 的引入会产生什么类型的 LSA?
  4. 双向引入的主要风险是什么?
  5. 在重分发中,为什么不建议使用默认度量值?

下篇预告:第100篇《路由重分发环路的防制——Tag 与 Filter-Policy》——终结第二章的最后一篇,掌握防环的终极武器。