BGP 网络设计

BGP 网络拓扑发展演变
BGP 是运行边缘

bgp口字型拓扑_学习


路由传递方向,R1 将 1.1.1.1 路由通过 EBGP 丢给 R2,R2 和 R4 隔空通过 loopback 口建立的邻居,中间的 R3 是内部路由器,R4 再通过 EBGP 将路由传递给 R5。

环境描述:在 AS 245 内运行 OSPF ,但 R3 关闭 BGP,另外四个路由器开启 BGP。

R2 和 R4 建立IBGP 邻居:

R2:router bgp 245

neighbor 4.4.4.4 remote-as 245

neighbor 4.4.4.4 update-source loopback1

neighbor 4.4.4.4 netx-hope-self //如果边界设备不对其他内部 IBGP 邻居指这条命令,会导致外面学到的路由不会发送,或者发送的路由有问题。

部署完成后,在 R1 带源 ping R5 显示 ping 不通,但是在 R1、R2、R4、R5 上查看路由发现路由条目是完整的,理论上是可达的。问题出自中间设备 R3 上,虽然按照边界网关协议来讲,确实不希望内部设备参与 BGP 以减少内部路由压力,但是学到路由并不意味着一定能通。这里 R3 没有参与 BGP ,无法学习到外网 R1 和 R5 的路由条目,将这种问题称为路由黑洞。

路由黑洞,即路由条目可以隔空传递,但数据无法隔空传递。

BGP 边界路由配置重分发

为了解决路由黑洞问题,第一代解决方案是在 BGP 边界路由上跑路由重分发。

bgp口字型拓扑_R3_02


路由重分发内容可参考 路由重分发

重分发解决方案存在的问题:
1、会导致内部 OSPF 压力过大
2、策略部署繁琐
3、属性丢失 //BGP 里包含路径属性,当导入 OSPF 时,这些属性会丢失

BGP 路由同步:用在重分发解决方案中,解决路由黑洞问题。从 IBGP 邻居学到的路由,不能传递给外部 EBGP 邻居,直到 IGP 和 BGP 数据库同时具备此路由。

结合上面路由说明:R3 是通过路由重分发,从 R2 学习到 1.1.1.1 的 OE2 路由,并将其传递给 R4,同时 R2 和 R4 建立 BGP 关系,有一条隔空传递的 1.1.1.1 的 B 路由给 R4,最后 R4 会把这条路由传给 R5。因为这条通信路径中所有的设备都有 1.1.1.1 的路由,所以 R5 可以 ping 通 1.1.1.1 。

在这个传递过程中,因为 OSPF 和 BGP 建立邻居的速度是不一样的,会出现这样一种情况,在路由重分发的时候,R2 和 R4 先一步学到 BGP 的路由,并且把这条路由传递给了 R5,这样仍然会出现 ping 不通的黑洞问题。此时 R4 开启 BGP 同步机制,就可以解决该问题。

BGP 部分互联

因为重分发方案依然存在问题,所以现在已经不怎么使用了,没有了路由重分发,想让 R1 和 R5 ping 通,只能再次考虑让 R3 运行 BGP。