我知道 BGP 和 IGP 交互的方式大致有两种:
1)将默认 0/0 路由分发到 IGP(例如 OSPF、IS-IS、RIP 等)
2) 将 BGP 学习到的路由注入内部网关协议。我了解到后者不推荐,因为它会给内部路由协议增加过多的开销,而内部路由协议并非为处理这种路由负担而设计的。
但是,在某些情况下,我找不到有效的替代解决方案。例如,考虑一个 AS“MY AS”多宿主到两个提供商:
- R1将我的 AS 与 AS1 连接起来
- R2将我的 AS 与 AS2 连接。
- R1过滤并拒绝某些目的地德由 AS1 宣布,例如基于 AS_PATH 属性,但它仍然接受其他互联网路由。
- R2接收相同的目的地德同上,但是 AS_PATH 不同,符合我的 AS 路由策略。
如果两者R1和R2仅向 IGP 注入默认 0/0 路由,并且不会重新分配任何 BGP 学习到的路由,想要到达外部目的地的内部路由器德(仅匹配 0/0 前缀)将遵循到达目的地 0/0 的最短路径,下一跳为R1或者R2。
假设R1和R2,如果数据包德转发至R1而不是R2?
我想到的唯一解决方案是将某些内容从 BGP 重新分配到 IGP。Cisco 设备中的正确命令是什么?有人有同样的疑问吗?
谢谢。
答案1
您应该通过 iBGP 连接 R1 和 R2(这不需要直接物理连接)。BGP 将在路由表中为每个目标网络安装最佳路由。由于路由源自 eBGP,因此路由上的 AD 将为 20,这通常比任何 IGP 或 iBGP AD 都要小得多(更受欢迎)。
然后,只需通过 IGP 将流量传送到其中一个 WAN 路由器,就会使流量从正确的 WAN 路由器发出,因为会从路由表中安装的 BGP 路由中选择最佳路径。