一文看懂BGP路由黑洞问题

本文主要介绍BGP路由黑洞问题的形成、原理以及解决方案,是BGP的重要内容。通过本文的阅读,您将会对BGP相关理论和知识有更加深入的理解。学习本文,您需要对BGP基础知识有一定的了解。如果您需要学习BGP基础理论知识或者比本文更加深入的BGP知识和实例配置,可以阅览我博客中的其他文章,相信您一定会有收获。

一、BGP路由黑洞问题背景

BGP,Broad Gateway Protocol,边界网关协议,采用了TCP连接的方式用于在AS之间传递路由信息。作为一个路由协议,如何防止出现路由环路问题是其设计者必须要考虑的问题之一,而正是BGP放环机制,产生了路由黑洞问题。
建立BGP传递路由的路由器被称为BGP对等体,而根据双方所处AS域是否为同一个可以将BGP对等体分为IBGP和EBGP。对于EBGP而言,当其收到一条路由时,它会检查该路由中路径属性中的AS_PATH值,如果发现含有自己AS号的AS_PATH,就代表自己已经从别的地方学习到这条路由,为了防止环路,那么它就不会将这条路由放入自己的路由表中。而对于IGP而言,为了防止AS内出现环路,IBGP设计了水平分割规则。该规则是指:从IBGP学习到的路由,无法传递给其他的IBGP。这样,就避免了IBGP环路的出现。
此外,由于BGP基于TCP建立,因此并不要求IBGP之间必须直线链接,只要IBGP路由器之间互相存在对方的路由,那么他就可以建立IBGP关系。这种模式,既使得BGP建立更加灵活,但是同时也使得在路由信息的传递与数据包的实际路线之间不完全吻合,即路由黑洞问题。

二、什么是路由黑洞问题

在上一章,我们介绍了IBGP水平分割规则和BGP关系建立过程的特点,也正是因为这两个原因,才导致了BGP路由黑洞问题。**所谓BGP路由黑洞问题,实际上就是BGP在路由传递过程中跨过中间路由器,从而导致了在数据包发送的时候中间的路由器无法收到路由信息,从而导致数据包转发失败的现象。**下面我用一张图来说明路由黑洞问题:
在这里插入图片描述
在上图中,用不同颜色的背景表示不同的AS域,黑线表示EBGP关系,白线表示IBGP关系,现在如果要实现AS200和AS300之间的通信,则必须要跨越AS100。建立如上的BGP关系,AS200的路由会传递给AR1,而AR1又会将AS200的路由传递给AR3,AR3又将其传递给AR5,AS300也会采取类似的行为传递给AS200。这样,AS200和AS300之间就有互相的路由了。但是这样AS200和AS300之间就能够正常通信了吗?有兴趣的同学可以实际做一下这个实验,发现AS200和AS300之间不能正常通信。究其原因,就在于AR2和AR6没有AS200和AS300的路由。BGP路由是在AR1和AR3之间直接进行传递的,因此并没有告知AR2和A6。这样一来,AS200和AS300之间就不能正常通信了。
**因此,BGP路由黑洞问题,是基于BGP协议路由传递特点产生的,在配置BGP相关内容时容易出现的数据包不通问题。**并不是BGP协议的内部缺陷,也是可以通过一些方法和手段来解决和克服的。

三、路由黑洞问题解决方案

如何解决BGP路由黑洞问题呢?既然路由黑洞问题的出现是由于R2和R6没有路由,因此我们直观的想法就是将AS200和AS300的路由传递给R2和R6。因此,就产生了第一种思路:
1、将BGP路由引入IGP
这是一种很直观的解决思路,但是IGP的路由表大小是有限制的,而BGP路由一般又有很多,因此这种办法虽然可以解决问题,但是不适合与实际情景。
2、建立IBGP关系
除了这种方法之外,还能够直接想到的就是R2和R6也建立IBGP邻居关系,这样R2和R6就能够有AS200 和AS300 的路由了。但是,这样做也会出现问题。如果R2和R6之间IBGP关系这样构建(在下图中,白线代表IBGP关系):
在这里插入图片描述
由于我们前面介绍的,BGP水平分割问题,R1会把AS200的路由传递给R2和R3,但是R2不会将从IBGPR1学习到的路由传递给R6。同理,R2也学习不到AS300的路由,因此,该建立方式还是不能解决问题。那么应该如何建立呢?
在这里插入图片描述
这种建立方式,就可以解决上述问题了,但是我们反过来看一下这种结局问题的方式,AS100只有4个路由器,但是IBGP对等体却足足建立了6条,如果AS100内路由器数量继续增多,那么就要建立更多的IBGP对等体,实现起来也比较困难。
3、BGP联邦和BGP反射器
为了简化上述方案的配置,BGP引入了联邦和反射器的配置概念,通过合理的配置BGP联邦和反射器,可以使得一些从IBGP学习到的路由传递给IBGP,这样,就可以由上述方案的第二种IBGP建立方式转换成第一种IBGP建立方式了,这样就可以节省下一部分路由了。
4、MPLS
除了上述解决方案之外,还可以用MPLS来解决路由黑洞问题,通过在AS100上运行MPLS,AS100内在转发AS200和AS300的流量时,会通过标签进行转发,这样就不用担心R2和R6的路由表上是否有AS200和AS300的路由了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118527569

  • 41
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值