BGP路由原理

  • 一、BGP路由属性介绍
  • 二、BGP对路由的处理流程
  • 三、BGP的路由选择策略
  • 四、BGP负载分担时的选路策略
  • 五、BGP的路由发布策略

一、BGP路由属性介绍

BGP路由属性是路由信息所携带的一套参数,它呢对特定的路由进行了进一步的描述,表达了每一条路由的各种特性。路由属性是BGP协议区分于其他协议的重要特征,BGP通过比较路由携带的属性来完成路由的选择、过滤和路由环路的避免。

BGP路由属性的特点:完成路由的选择、过滤和避免环路。

——————————————————————————————————————————————————
BGP每个属性都有特定的含义,具有不同的用途和灵活的应用,这些属性使得BGP功能十分强大。
所有的BGP路由属性都可以分为4大类。

公认必须遵循的(Well-known mandatory): 所有BGP路由器都可以识别且必须存在于Update消息中。如缺少这种属性,则路由信息就会出错。

公认任意(Well-known discretionary): 所有的BGP路由器都可以识别但不要求必须存在于Update消息中,可根据情况选择。

可选过渡(Optional transitive): 在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。

可选非过渡(Optional non-transitive): 如果BGP路由器不支持此属性,则相应的Update消息会被忽略,且不通告给其他对等体。

目前已定义的BGP属性已有16种,并且支持扩展到256种。。。。这次学完了若干年后,还不会玩BGP了吗。

列举常见的BGP路由属性及类别:(后面有详细的介绍)

Origin(起点属性),属于Well-known mandatory(公认必须遵循的)
AS_Path(AS路径属性),属于Well-known mandatory(公认必须遵循的)
Next_Hop(下一跳属性),属于Well-known mandatory(公认必须遵循的)

初始+经过AS的路径+下一跳,不用想,必须是公认遵循的。。。。

————————————————————————————————————————————————

Local_Pref(通告优先属性):属于Well-known discretionary(公认任意)
Atomic_Aggregate(通告聚合属性):属于Well-known discretionary(公认任意)

一个是用来通告路由的优先程度,一个是用来通告该路由是经过聚合的。
都可以识别,可根据情况选择。归属公认任意。

————————————————————————————————————————————————

Aggregator(可选传递属性):属于Optional transitive(可选过渡)
Community(路由标记属性):属于Optional transitive(可选过渡)
Multi_Exit_Disc(MED多出口标识符属性):属于Optional transitive(可选过渡)

Aggregator指明了路由信息何处出现丢失。Community用于简化路由策略的执行。MED用来判断进入该自治系统的最佳路由。可选过渡:在AS之间具有可传递性的属性,路由器可以不支持此属性,但仍然接收并转发。琢磨这三个都是在AS之间传递的属性。便于好记

————————————————————————————————————————————————
Originator_ID(防环属性):Optional non-transitivev(可选非过渡)
Cluster_List(防环属性):Optional non-transitivev(可选非过渡)

——————————————————————————————————————————————————

二、BGP对路由的处理流程

对于一个BGP路由器来说,其路由的来源主要有两种:从对等体接收和从IGP引入。
BGP发言者从对等体接收到的BGP路由后,其基本过程为:
接收路由过滤与属性设置>路由聚合>路由优选>路由安装>发布策略>发布路由过滤与属性设置。

1、接收路由过滤和属性设置是BGP发言者从对等体接收到路由后的第一步工作。BGP接收到路由后,根据所配置的接收策略对接收到的BGP路由进行匹配与过滤,并对其设置相关的属性。

发言者接收路由后,根据配置的策略对接收的路由进行过滤,并设置相关属性。

2、完成了接收策略的匹配后,如果需要的话,BGP发言者将对路由进行聚合,合并其中的具体路由,以此减少路由表规模。

发言者如有需要,对路由进行聚合。

3、完成具体合并后,BGP将对接收到的路由进行优选,对到达同一目的地址的多条BGP路由,BGP发言者只选择最佳路由给自己使用,并将此最佳的路由安装到IP路由表中,称为有效路由。

发言者完成聚合后,对收到的路由进行选优,安装到路由表。

4、在向BGP对等体发布路由的时候,BGP发言者需要依据一定的发布策略,对已经安装到自己IP路由表的部分有效路由进行发布。

发言者根据发布的策略,发布路由表的有效路由。

5、同时,BGP路由器需要执行发布路由过滤与属性设置,然后将通过过滤的BGP路由发送给自己的BGP对等体。

发言者发布有效路由的同时需要执行过滤和属性设置。

对于IGP路由,则需要先经过引入策略的过滤和属性设置,将IGP路由表中的有效路由引入到BGP路由表中,然后才能进行发布策略过滤与属性设置,并将过滤后的路由发送给自己的BGP对等体。

——————————————————————————————————————————————————

三、BGP的路由选择策略

当达到同一目地存在多条路由时,BGP将采取如下策略进行路由选择:

1、BGP优选Preference值较低的本地始发路由。这个优先级是IP路由表中各个协议路由的优先级值。值越小优先级越高。本地始发路由是指BGP通过import命令、Network命令引入的路由或通过Aggregate命令、summary automatic命令聚合生成的路由,是相对于BGP邻居接收的路由而言的。

还是那句话,还是和以前路由协议的优先值顺序类似。BGP不产生路由,所以都是引入路由。

2、如果不同协议的路由的Preference值相同,系统会按照这样的顺序优选一种协议路由,OSPF>IS-IS Level-1>IS-IS Level2>EBGP(包含BGP Aggregate)>Static>RIP>OSPF_ASE>IBGP。由于直连路由的优先级为0,所以在BGP本地始发路由中如果存在直连路由,那么GBP会优先选择直连路由。

3、首先丢弃下一跳(Next_Hop)不可达的路由。

4、无条件优选带Label的IPV4路由。

5、优选协议首选值最高的路由。

6、优选本地优先级最高的路由。

7、优选聚合路由。聚合路由高于非聚合路由。

8、优选AS路径最短的路由。

9、比较Origin属性,依次选择Origin类型为IGP、EGP及Incomplete的路由。

10、优选MED值最低路由。

11、优选EBGP学来的路由(EBGP路由优先级高于IBGP路由)。

12、优选AS内部IGP的Metric最低的路由。如果配置负载分担,并且有多条AS路径完全相同的外部路由,则根据配置的路由条数来选择多条路由进行负载分担。

13、优选Cluster_List最短的路由。

14、优选Originator_ID最小的路由。

15、优选Router ID最小的路由器发布的路由。

16、比较对等体的IP Address,优选从具有较小IP的对等体学来的路由。

——————————————————————————————————————————————————

四、BGP负载分担时的选路策略

在BGP中,由于协议的特殊,它产生的路由下一跳地址可能不是当前路由器直接连接的邻居,常见的一个原因是,IBGP之间发布路由信息时不改变下一跳。在这种情况下,为了能让报文正确的转发出去,路由器必须先找到一个直接可达的地址,然后通过这个地址到达路由表中指示的下一跳。在这个过程中,去往直接可达地址的路由被称为依赖路由,BGP路由依赖于这些路由指导报文转发,根据下一跳地址找到依赖路由的过程就是路由迭代。

这里举个路由迭代的例子便于理解上面的话术。

如图:AS100内运行的IGP协议为OSPF,AR1分别与AR2和AR3之间通过loopback0建立IGBP连接。AR2和AR3都从网络中接收到去往10.20.1.0/24的BGP路由。因为AR2的Router-ID较小,所以AR1将优先从AR2学到的去往10.20.1.0/24的路由,原始下一跳为2.2.2.2/32。
正常情况下,AR1会把去往10.20.1.0/24的BGP路由下一跳迭代到去往2.2.2.2/32的IGP路由上,迭代的出接口为G0/0/0,但是当AR2发生故障时,AR1会很快撤销去往2.2.2.2/32的IGP路由,而由于AR1要等到BGP保持时间定时器超时后才能感知到BGP路由的变化,所以在此之前,AR1仍然优选原始下一跳2.2.2.2/32的BGP路由。根据最长匹配原则,AR1会把去往10.20.10.0/24的BGP路由下一跳错误的迭代到去往2.2.2.0/24的直连路由上,迭代出接口为2.2.2.0/24的接口上,从而导致流量丢失。

为了避免上述情况,可以在AR1配置BGP按路由策略迭代下一跳,利用指定的路由策略对迭代结果路由进行限制。在上图,可通过路由策略将迭代结果路由限制为32位掩码的具体路由,不能通过该路由策略过滤的迭代结果将被标识为不可达,这样就能使AR1在AR2发生故障时,快速感知BGP路由的变化,进而重新选择正确的路由即原始下一跳为3.3.3.3/32的BGP路由,防止流量丢失。

BGP的负载分担与IGP的负载分担在实现方法上有所不同:

1、在IGP中,对到达同一目的地址的不同路由,IGP根据本身的路由算法计算路由的度量值(Metric),并在度量值相等的路由之间进行负载分担。

2、BGP由于本身并没有路由算法,不能根据一个明确的度量值决定是否对路由进行负载分担。但BGP有很多路由属性,这些属性在BGP选路策略中的优先顺序是不同的。对BGP负载分担的处理规则是加入到这些选路策略中的,即在所有高优先级路由属性相同的情况下,BGP根据所配置的最大负载分担的路由跳数进行负载分担。

3、BGP只对AS_Path属性完全相同的路由进行负载分担,BGP负载分担特性同样适用于联盟内部的自治系统之间。

——————————————————————————————————————————————————

五、BGP的路由发布策略

总结归纳下,在目前的实现种,BGP发布路由时采用如下策略,这些也是BGP设计者在设计BGP协议时的硬性规定。

1、存在多条有效路由时,BGP发言者只将最优路由发布给对等体。

2、BGP发言者只把自己使用的路由发布给对等体。

3、BGP发言者从EBGP获得路由会向它所有的BGP对等体发布(包括EBGP对等体和IBGP对等体)

4、BGP发言者从IBGP获得的路由不向它的IBGP对等体发布。

5、BGP发言者从IBGP获得的路由发布给它的EBGP对等体(在关闭BGP与IGP同步的情况下,IBGP路由被直接发布。在开启同步的情况下,该IBGP路由只有在IGP也发布了这条路由时才会被同步并发送给EBGP对等体。)

6、连接一旦建立,BGP发言者将会把自己所有的BGP路由发布给新对等体。

——————————————————————————————————————————————————

二、BGP的路由原理相关推荐

  1. 通过路由器或服务器实现多路由多网络接入网路传输提速详细实现(附源码),五万字搞懂双路由、旁路由、分布式路由、CN2线路、IPLC线路、BGP线路的原理和实现

    通过路由器或服务器实现多路由多网络接入网路传输提速详细实现(附源码),搞懂双路由.旁路由.分布式路由.CN2线路.IPLC线路.BGP线路的原理和实现. 双wan口路由器如何实现双线接入(双wan口路 ...

  2. 路由(二)——动态路由简介与RIP协议

    路由(二)--动态路由之RIP.OSPF 一.动态路由 1.简介 2.特点 二.动态路由协议 1.简介 2.原理 3.度量 4.优缺点 5.按照路由执行算法分类 三.RIP路由协议 1.简介 2.水平 ...

  3. 九、路由原理与路由协议

    (一)路由器 1.路由器介绍 (1)路由器Router 用来连接不同的局域网,可以学习和传播各种路由信息,并根据这些路由信息将网络中的分组转发到正确的网络中. 工作在第三层网络层,具有局域网和广域网两 ...

  4. NewH3C—IP路由原理(静态路由)

    IP路由原理 1.定义: 路由器负责将数据报文在IP网段之间进行转发:路由是指导路由器如何进行数据转发的路径信息 2.IP连通的前提: 沿途的每台路由器上都有到达目的网段的路由信息:路由是单向的路径信 ...

  5. 静态路由和默认路由原理

    目录 前言 一.路由原理 1.1 路由器的工作原理 1.2 路由表的形成 二.静态路由和默认路由 2.1 静态路由 2.2 默认路由 2.3 浮动路由(备份路由) 2.4 路由器转发数据包的封装过程 ...

  6. 从路由原理出发,深入阅读理解react-router 4.0的源码

      react-router等前端路由的原理大致相同,可以实现无刷新的条件下切换显示不同的页面.路由的本质就是页面的URL发生改变时,页面的显示结果可以根据URL的变化而变化,但是页面不会刷新.通过前 ...

  7. 路由(一)——路由原理及静态路由

    路由(一)--路由原理及静态路由 路由原理 路由(一)--路由原理及静态路由 一.路由原理 路由的工作原理 最优路由的选择 二.路由表 简介 路由表的形成 三.路由协议分类 四.静态路由 默认路由 浮 ...

  8. 从实验现象详细分析BGP的路由策略与选路原则

    1.1   组网需求 1)  AS65001边界网段发布:R2,R5重发布直连路由至ospf(metric 1000 type 1) 2)  AS65002 边界网段发布:R1,R6network至o ...

  9. mysql 分区 mycat 分片_Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)...

    一.Mycat分片路由原理 我们先来看下面的一个SQL在Mycat里面是如何执行的: select * from travelrecord where id in(5000001, 10000001) ...

最新文章

  1. 数组中只出现一次的(一个数、两个数、三个数)
  2. 五花八门的Shell 的相关概念和配置方法
  3. python梯度下降法实现线性回归_【机器学习】线性回归——多变量向量化梯度下降算法实现(Python版)...
  4. 华为如何打造智能终端的有趣灵魂?(下)
  5. Mybatis深入了解(四)----输入输出映射
  6. 11、Power Query-透视列的解析
  7. sql分区-纵向分表与横向分区表(转)
  8. 调用第三方接口的几种请求方式
  9. JavaScript中的prototype(Notes)
  10. 浪点服务器芯片,浪点云服务器
  11. FFT,NTT 专题
  12. 脱库数据分享论坛_22G疑为12306脱库文件大揭秘
  13. Ansys2019R2安装失败,更改用户名后win10用户创建临时账户登录个人总结
  14. hihocoder 1538
  15. Ramps 1.4升级Marlin2.0.x改12864显示屏并添加打印机箱体温度显示
  16. java实现日记软件_建立日记类
  17. 导进去然后这边就报错了 看修改也看不懂
  18. Jetpack架构组件 (一)-- Android Jetpack 简介
  19. Linux系统如何更改主机名,即 [root@xxxx] 改成 [root@localhost]
  20. 单片机c语言编程规则,单片机C语言编程规则

热门文章

  1. 免拆诊断 | 2010款长城C30车加速无力
  2. Rock PI 4B Plus(Linux Ubuntu20.04 .4LTS) 安装anaconda教程
  3. 二叉堆简单实现与应用
  4. MPI函数说明及示例
  5. 信息学奥赛一本通:1179:奖学金
  6. Unity AssetStore打不开怎么办
  7. c语言字符数组重置,C语言字符数组初始化
  8. Android 连接USB设备(配件模式)
  9. 在OLED12864竟然也能玩Chrome 小恐龙跳一跳的游戏?附所有软硬件资料【全开源】
  10. python虚假评论识别程序_还在刷虚假评论?小心了,可以检测虚假评论的第三方工具来了...