BGP(边界网关协议)-----BGP路由黑洞及路由反射器与联盟

路由黑洞的场景

黑洞出现场景:

两台非直连路由器可以建立BGP邻居关系,传递BGP路由。如果中间路由器没有运行BGP协议,可能会出现路由黑洞。

在拓扑图中,R1和R2是EBGP邻居关系,R2和R4是IBGP邻居关系,R4和R5是EBGP邻居关系,R3没有运行BGP。

上述拓扑将产生路由黑洞:

R1将网络10.0.0.0/24宣告到BGP进程,传递给R2。R2传递给R4,R4传递给R5。在R5上访问10.0.0.1(10.0.0.0/24网段内任意主机)时:R5给R4,R4给R3,R3上没有学习到10.0.0.0/24的路由,由于目的地址不可达丢弃数据包。这种现象称为路由黑洞。

路由黑洞的原因

在配置BGP的时候,最容易遇到的问题就是路由黑洞,那么什么是路由黑洞?

简单地说,它会默默地将数据包丢弃,使数据包有去无回。我们知道传统的IP路由,它是通过逐跳查找路由信息,根据路由信息转发数据包,通俗地说就是当数据包到达路由设备的时候,路由设备首先查找路由表,然后根据路由信息转发数据包,当然,路由设备转发数据包的前提是存在下一跳路由。对BGP来说,由于存在IBGP水平分割规则,这是一种防止环路机制,所以在BGP的设计上有些设备就不会运行BGP。BGP是一种TCP的连接或者说是一种host-to-host的连接,可以跨越设备进行连接,所以路由传递是没有问题的,但是数据包的路由却是有问题的。通常我们会出现是IBGP邻居关系可以正常建立,也就是说控制平面看起来是正常的,但是数据平面确不可达,从而形成路由黑洞。

BGP对等体之间路由通告的原则,其中有一条是:从IBGP对等体设备获得的BGP路由,只发布给它的EBGP对等体。这时,当对等体非直连的时候,就会出现路由黑洞

由于BGP规定无论路由器是否启动BGP都要无条件地转发BGP消息和更新包,违背了"非IGP路由器阻断IGP域"的原则,因而辗转造成了BGP路由器"居然ping不通路由表中的条目"的现象,也就是所谓的路由黑洞。

因此黑洞原因可以总结如下:

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

解决路由黑洞的方法

1、把BGP 路由引入到 IGP

2、full mesh(全互联)

3、路由反射器(RR)

4、BGP 联邦

5、开启 BGP 同步

解决路由黑洞:把BGP 路由引入到 IGP

比如:上述黑洞实例中,R2上将BGP路由引入到IGP协议中,让R3通过IGP学习到10.0.0.0/24的路由。

这是一种很直观的解决思路,但是IGP的路由表大小是有限制的,而BGP路由一般又有很多,如果BGP路由数量比较多时,IGP协议可能承载不了这么多路由。
因此这种办法虽然可以解决问题,但是不适合与实际情景。

解决路由黑洞:full mesh(全互联)

IBGP邻居全联接,比如:上述黑洞实例中,让R2 R3 R4两两之间建立IBGP邻居关系,让R2把BGP路由同时也传递给R3。这种解决方案的缺点是AS中如果路由器数量比较多时,路由器上IBGP邻居关系的数量也会很多。

full mesh示意图:

解决路由黑洞:路由反射器(RR)


bgp反射路由器配置实例:

1、解决as内的IGP full mesh:Route Reflector

[global.config]as = 1001router-id = "172.25.0.7"[[neighbors]][neighbors.config]neighbor-address = "172.25.0.1"peer-as = 1001auth-password = "xxxxxx"[[neighbors]][neighbors.config]neighbor-address = "172.25.0.6"peer-as = 1001auth-password = "xxxxxx"[neighbors.route-reflector.config]route-reflector-client = trueroute-reflector-cluster-id = "172.25.0.137"[[neighbors]][neighbors.config]neighbor-address = "172.25.0.8"peer-as = 1001auth-password = "xxxxxx"[neighbors.route-reflector.config]route-reflector-client = trueroute-reflector-cluster-id = "172.25.0.137"

2、解决as间的BGP full mesh:Route Server

[global.config]as = 64512router-id = "192.168.255.1"[[neighbors]][neighbors.config]neighbor-address = "10.0.255.1"peer-as = 65001auth-password = "hoge1"[neighbors.transport.config]passive-mode = true[neighbors.route-server.config]route-server-client = true[[neighbors]][neighbors.config]neighbor-address = "10.0.255.2"peer-as = 65002auth-password = "hoge2"[neighbors.transport.config]passive-mode = true[neighbors.route-server.config]route-server-client = true

解决路由黑洞:BGP联盟

联盟出现的背景:

为保证IBGP对等体之间的连通性(也就是解决一个AS中的条目传递问题),需要在IBGP对等体之间建立全连接(Full-mesh)关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。利用联盟和路由反射可以解决这一问题。

BGP联盟可以将AS分割为多个子自治系统,从而让大型转接AS变得更具管理性。被分割的AS本身将成为联盟,而分割后的子自治系统则成为成员自治系统。联盟之外的AS将整个联盟视为一个AS,看不见成员自治系统。由于成员自治系统对外界来说是隐而不见的,因而成员自治系统可以使用公有或私有AS号(建议采用私有AS号)。

联盟可以极大的降低IBGP连接的数量。在联盟中,只需要在成员自治系统内进行IBGP的全连接,而成员自治系统间使用一种特殊的EBGP连接,我们称之为联盟EBGP。

联盟的特点:

1、在联盟内部将会保留联盟外部的next_hop属性。
2、通告给联盟内的路由的MED属性在整个联盟范围内保留。
3、Local Preference属性在整个联盟范围内保留,而不只是在通告的成员AS内。
4、在联盟内将成员的AS号加入AS_ PATH中,但不会将联盟内的AS号通告到联盟之外。5、在联盟中,AS_ PATH属性又添加了两种类型AS-CONFED-SEQUENCE、AS-CONFED-SET,默认联盟将成员的AS号以AS-CONFED-SEQUENCE的形式在AS_ PATH当中列出,如果在联盟内配置了聚合,AS号将以AS-CONFED-SET形式列出。
6、AS_ PATH中的联盟AS号用于避免环路,但是在联盟选择最短的AS_ PATH路径时不会比较联盟AS号。
7、联盟内相关的属性传出联盟时将会被自动删除,无需过滤子AS号等信息操作。
8、当联盟AS内有多个成员AS时,成员AS之间建议使用相同的IGP协议。



解决路由黑洞:开启 BGP 同步

BGP的同步规则不是路由黑洞的解决方法,却可以避免BGP路由黑洞。

BGP 同步:

BGP同步规则开启后,从IBGP收到一条路由后,
在IBGP路由加入路由表并发布给EBGP邻居之前,会先检查IGP路由表。
只有在IGP也知道这条IBGP路由时,它才会被加入到路由表,并发布给EBGP邻居。

比如:上述黑洞实例中,在R4开启BGP同步规则,当R4从IBGP邻居R2收到10.0.0.0/24的路由后,因为没有从IGP学到这条路由,所以不会把它加入到路由表,不会发送给R5。
也就避免了BGP路由黑洞。

【博客465】BGP(边界网关协议)-----BGP路由黑洞及路由反射器与联盟相关推荐

  1. BGP边界网关协议线路优势

    BGP线路,说到这个词相信大家都不陌生,但是说到具体的解释可能并不是非常的了解. 什么是BGP线路?边界网关协议(BGP)是运行于TCP上的一种自治系统(AS)的路由协议,是唯一能够妥善处理不相关路由 ...

  2. BGP——边界网关协议简介

    BGP简介 目录 BGP简介 BGP协议的关注点 BGP的数据包 BGP的状态机 BGP工作过程 BGP的路由黑洞 BGP的防环机制--水平分割 BGP的基本配置 BGP的路由聚合 BGP的路由反射器 ...

  3. 互联网协议 — BGP 边界网关协议 — Route(路由信息)

    目录 文章目录 目录 BGP Route(路由信息) BGP Msg Header BGP Msg Type Open Msg Update Msg Keepalive Msg Notificatio ...

  4. 互联网协议 — BGP 边界网关协议 — Overview

    目录 文章目录 目录 AS(自治系统)与 BGP 协议 BGP 协议的诞生与发展历程 基于 E-BGP 的大规模数据中心 AS(自治系统)与 BGP 协议 随着整个Internet 规模的扩大,动态路 ...

  5. 详细了解BGP—边界网关协议

    BGP 一.BGP基本概念 1.自治系统 2.BGP路由协议的特点 3.BGP分类 4.BGP工作原理 4.1.5种报文 4.2.BGP6种状态机 4.3.BGP对等体之间的9个交互原则 5.建立对等 ...

  6. BGP同步与路由黑洞,路由聚合

    BGP路由不优 BGP路由下一跳不可达 BGP同步 拓扑图 (AS 234之间直接 2 4建立BGP,EBGP之间采取直连 ) 下一跳属性: 将EBGP邻居学习路由传递给IBGP邻居时,下一跳不发生变 ...

  7. 互联网协议 — BGP 边界网关协议 — Router(路由器)

    目录 文章目录 目录 BGP Router 的角色类型 BGP Router 的状态机 BGP Router 的邻居关系建立 I-BGP 邻居关系的建立 I-BGP Router 的组网模式 Full ...

  8. 互联网协议 — BGP 边界网关协议 — BGP-LS

    目录 文章目录 目录 BGP-LS BGP-LS Route Msg Node Route Link Route Prefix Route BGP-LS 在 SR TE 中的应用 BGP-LS 的组网 ...

  9. (Ryan的Redis系列博客)1.开源协议

    前言 Redis是一款基于BSD协议的开源NoSQL.因此,第一篇文章,我们便来说说几种开源协议. 开源协议是什么? 这里讲的开源协议都是关于计算机软件的,计算机硬件或者其他产品的开源协议我是不懂的, ...

最新文章

  1. 团队项目第一阶段冲刺站立会议1(4月18日)
  2. 启动ubuntu什么时候按shift_找回消失的ubuntu启动选项
  3. Appium移动自动化框架
  4. 【理论】红黑树的实现原理
  5. java异常在哪一层捕获_当在一个方法的代码中抛出一个检测异常时,该异常或被方法中的 ( )结构 捕获,或者在方法的 ( ) 中声明_学小易找答案...
  6. centos -bash-4.1$ 不显示用户名路径
  7. VTK:Utilities之ShareCamera
  8. 10行代码AC——1016 部分A+B (15分)
  9. 分布式与人工智能课程(part12)--机器学习案例入门
  10. lessc_Less 命令行用法
  11. 【dfs】I Like Matrix!
  12. Java 8 Stream中间操作(方法)示例
  13. python图形化编程更改内部参数_python-参数化-(3)(替换数据)
  14. 下载丨53页PDF,云和恩墨技术通讯(2021年4月刊)
  15. 排序算法合集 python
  16. . 在第一代计算机时代 编程采用,在第一代计算机时代,编程采用什么语言
  17. tiledmap 图块属性_cocos2dx[3.4](25)——瓦片地图TiledMap
  18. css字体图标的使用
  19. linux中oracle中文乱码问题
  20. 行业研究的结构化分析方法:【PEST分析】实战案例

热门文章

  1. 我说CMMI2.0之过程管理
  2. 用HTML+CSS跟简单的js操作完成响应式星巴克首页
  3. C#关于List的线程安全问题(二)
  4. nCode:DesignLife案例教程十
  5. node.js毕业设计联影医疗器械管理系统小程序(源码+程序+LW+部署)
  6. ICMS也能用的CMS采集发布插件
  7. 由美团技术文章整理---spark性能优化基础篇--开发调优与资源参数调优
  8. QT Designer + VS Code + PyQt5 安装教程
  9. 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇) -----(四)ESP430G2 低功耗模式
  10. 爬虫如何解决反爬问题——顶象面积验证码破解