把 BGP 路由引入 OSPF
在边界设备上把 BGP 路由引入 OSPF,可以让内部路由器以外部路由(Type 5 LSA)的形式到达外网。Cisco 上用 redistribute bgp <AS> subnets 实现,subnets 关键字决定是否引入子网;引入的路由成为 OSPF 外部路由,其代价按 metric 与 metric-type 计算,与 OSPF 内部路径的代价体系分开。
基本信息
| 基本命令 | router ospf 下 redistribute bgp <AS> subnets metric <值> metric-type <1|2> |
|---|---|
| subnets 作用 | 不加时只引入有类网络,子网路由不会被引入 |
| E1 与 E2 | E1 累加内部路径代价,E2 使用固定外部代价(默认类型) |
| 防环手段 | 配 route-map 打 tag,反向重分发时按 tag 拒绝 |
| 华为对应 | ospf 视图下 import-route bgp,可配 route-policy 过滤 |
典型使用场景
- 企业出口把互联网路由引入内部 IGP,让内网设备有默认或明细可达性
- 只引入汇总路由而非全表,避免 LSA 洪泛与 SPF 计算压力
- 双点出口做冗余:两台边界设备都引入,用 metric 区分主备
- 与网管系统对接时把特定外部网段引入,便于监控探针可达
- 迁移期临时引入,稳定后逐步收敛为静态或默认路由
只引入汇总路由的配置
只引入汇总路由的配置
# 只把聚合后的前缀引入 OSPF,并打 tag 便于反向阻断
ip prefix-list PL-AGG-ONLY permit 10.0.0.0/8 le 16
!
route-map RM-BGP2OSPF permit 10
match ip address prefix-list PL-AGG-ONLY
set tag 65001
!
router ospf 1
redistribute bgp 65001 subnets route-map RM-BGP2OSPF metric 100 metric-type 2
!
show ip ospf database external | include 10\.
show ip route ospf | include E2外部路由类型对照
| 类型 | 代价计算 | 适用场景 |
|---|---|---|
| E1 | 外部代价 + 到 ASBR 的内部代价 | 希望按距离区分多个出口时使用 |
| E2(默认) | 仅使用配置的外部代价,忽略内部代价 | 常规引入,全网选择同一出口 |
| E2 加转发地址 | 保留原始下一跳,缩短路径 | 边界设备与外部网络直连时常见 |
防环与回灌检查
防环与回灌检查
# 反向重分发(OSPF 进 BGP)时拒绝带自身 tag 的路由,避免环路
route-map RM-OSPF2BGP deny 10
match tag 65001
route-map RM-OSPF2BGP permit 20
match ip address prefix-list PL-INTERNAL
!
router bgp 65001
redistribute ospf 1 route-map RM-OSPF2BGP
!
# 检查是否出现来回震荡
show ip ospf database external | include 65001
show ip bgp | include 10\.0\.0\.0把公网全表引入 IGP 是典型的设计错误:几十万条外部 LSA 会让所有 OSPF 设备的 LSDB 与 SPF 计算不堪重负。需要全表可达性时,改用 BGP 承载,或在边界设备上产生默认路由。