BGP路由原理详解

news/2024/10/7 18:17:14 标签: 华为, 网络

🐣个人主页 可惜已不在

🐤这篇在这个专栏 华为_可惜已不在的博客-CSDN博客

🐥有用的话就留下一个三连吧😼

目录

一.

  BGP简介:

二.

  BGP报文中的角色

  BGP的报文

  BGP处理过程

  BGP有限状态机

  BGP属性

三.

  BGP作用

四.

  BGP选路


一.

  BGP简介:

边界网关协议(Border Gateway Protocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议。由于不同的管理机构分别控制着他们各自的路由选择域,因此,路由选择域经常被称为自治系统AS(Autonomous System)。现在的Internet是一个由多个自治系统相互连接构成的大网络,BGP作为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider)之间。
早期发布的三个版本分别是BGP-1、BGP-2和BGP-3,主要用于交换AS之间的可达路由信息,构建AS域间的传播路径,防止路由环路的产生,并在AS级别应用一些路由策略。当前使用的版本是BGP-4。

二.

  BGP报文中的角色

Speaker:发送BGP报文的路由设备称为BGP发言者(Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP Speaker。当BGP Speaker收到来自其它AS的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给所有其他BGP Speaker(发布该路由的BGP Speaker除外)。

Peer:相互交换报文的BGP Speaker之间互称对等体(Peer)。

  BGP的报文

BGP的运行是通过报文驱动的,共有Open、Update、Notification、Keepalive和Route-refresh五种报文类型。

  • Open报文:是TCP连接建立后发送的第一个报文,用于建立BGP对等体之间的连接关系。对等体在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-refresh报文的交换。

  • Update报文:用于在对等体之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。

  • Notification报文:当BGP检测到错误状态时,就向对等体发出Notification报文,之后BGP连接会立即中断。

  • Keepalive报文:BGP会周期性地向对等体发出Keepalive报文,用来保持连接的有效性。

  • Route-refresh报文:Route-refresh报文用来请求对等体重新发送所有的可达路由信息。

  BGP处理过程

因为BGP的传输层协议是TCP协议,所以在BGP对等体建立之前,对等体之间首先进行TCP连接。BGP邻居间会通过Open报文协商相关参数,建立起BGP对等体关系。建立连接后,BGP邻居之间交换整个BGP路由表。BGP会发送Keepalive报文来维持邻居间的BGP连接,BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update报文增量地更新路由表。当BGP检测到网络中的错误状态时(例如收到错误报文时),BGP会发送Notification报文进行报错,BGP连接会随即中断。


邻居建立过程图

  BGP有限状态机

BGP有限状态机共有六种状态,分别是Idle、Connect、Active、Open-Sent、Open-Confirm和Established。

在BGP对等体建立的过程中,通常可见的三个状态是:Idle、Active、Established。

  • Idle状态下,BGP拒绝任何进入的连接请求,是BGP初始状态。

  • Connect状态下,BGP等待TCP连接的建立完成后再决定后续操作。

  • Active状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。

  • Open-Sent状态下,BGP等待对等体的Open报文。

  • Open-Confirm状态下,BGP等待一个Notification报文或Keepalive报文。

  • Established状态下,BGP对等体间可以交换Update报文、Route-refresh报文、Keepalive报文和Notification报文。

BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。

  BGP属性

BGP路由属性是一套参数,它对特定的路由进一步的描述,使得BGP能够对路由进行过滤和选择。事实上,所有的BGP路由属性都可以分为以下4类:

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

  • 公认任意(Well-known discretionary):所有BGP设备都可以识别,但不要求必须存在于Update报文中,可以根据具体情况来选择。

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

  • 可选非过渡(Optional non-transitive):如果BGP设备不支持此属性,则相应的这类属性会被忽略,且不会通告给其他对等体。

下面介绍几种常用的BGP路由属性:

  • Origin属性,属于公认必须遵循属性,用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的,包含IGP、EGP和Incomplete三种类型。

  • AS_Path属性,属于公认必须遵循属性,按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。

  • Next_Hop属性,属于公认必须遵循属性。

  • MED,属于可选非过渡属性,MED(Multi-Exit-Discriminator)属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。

  • Local_Pref属性,属于公认任意属性,仅在IBGP对等体之间有效,不通告给其他AS,用于表明路由设备的BGP优先级。

三.

  BGP作用

IGP(Interior Gateway Protocol,内部网关协议)被设计用来在单一的路由选择域内提供可达性信息并不适合提供域间路由选择功能,BGP(Border Gateway Protocol,域间路由协议)作为优秀的域间路由协议得以产生并发展。

当今的网络通常使用以下类型的IGP:

  • 距离矢量协议,例如路由信息协议(Routing Information Protocol, RIP)。
  • 链路状态协议,例如开放式最短路径优先(Open Shortest Path First, OSPF)协议和中间系统到中间系统(Intermediate System to Intermediate System, IS-IS)协议。

BGP有两种运行方式,当BGP运行于同一AS内部时,被称为IBGP(Internel BGP,内部边界网关协议);当BGP运行于不同AS之间时,称为EBGP(Externel BGP,外部边界网关协议)。如图1 BGP的运行方式所示:

四.

  BGP选路

1.优选Preferred-Value属性值最大的路由-Preferred-Value为华为设备的特有属性,该属性仅在本地有效,默认为0,越大越优先

2.优选Local Preference属性值最大的路由

  • 默认100,越大越优,传播范围为本地(IBGP)
  • 用来指示离开AS的最佳路径

3.优选本地始发的BGP路由

  • 优于从其他对等体学习到的路由
  • 本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的

4.优选AS Path属性值最短的路由

  • 修改AS_Path三种方式:添加(addtive)、替换(overwrite)、清空(none )
  • 若要忽路AS Path,在bgp进程下使用bestroute as-path-ignore

5.优选Origin属性最优的路由(Ongin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete)

  • 具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP,Origin显示为e
  • EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP,Origin显示为i
  • Incomplete:优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete,Origin显示为?
  •  用于BGP路由的路径选择(i>e>?)          
  1.   i:标识通告network生成的BGP路由
  2. e:从EGP协议中引入到BGP的路由
  3. ?:标识通过import-route命令,引入到BGP中的IGP路由  

6.优选MED属性值最小的路由

  • 用于判断流量进入AS时的优选路由,将优先选择MED值较小者作为优选路由
  • MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS
  • MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理
  • 默认情况下BGP只会对来自同一个AS的相同路由比较MED值,可以通过命令compare-diferent-as-med开启来自不同AS的相同路由也比较MED值

​​​​​​​7.优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)-EBGP>IBGP 

8.优选到Next Hop的IGP度量值最小的路由

负载分担:

  1. 前提是前面8条规则完全相同时(AS号也要完全相同)
  2. 在bgp进程下(如bgp 100)
  3. 启用-maximum load-balacing(ibgp/ebgp)2或者更大

9.优选Cluster List最短的路由

10.优选RouterID最小的设备通告的路由

11.优选具有最小IP地址的对等体通告的路由


参考资料:BGP是什么?BGP是如何工作的? - 华为 (huawei.com)


http://www.niftyadmin.cn/n/5693183.html

相关文章

Golang | Leetcode Golang题解之第458题可怜的小猪

题目: 题解: func poorPigs(buckets, minutesToDie, minutesToTest int) int {if buckets 1 {return 0}combinations : make([][]int, buckets1)for i : range combinations {combinations[i] make([]int, buckets1)}combinations[0][0] 1iterations…

每日一题|871. 最低加油次数|动态规划、内层逆序遍历

题目分析:找到第一个能够实现当前油量能够行驶的最大距离大于等于目标距离,且加油次数最小的加油站和加油次数。 每次加油之后能够行驶的最大距离都是由上一次加油的距离决定的,因此使用dp。 1、dp数组定义 dp[i]是一个一维数组&#xff0…

鸿蒙next开发者第一课02.DevEcoStudio的使用-习题

【习题】DevEco Studio的使用 通过/及格分80/ 满分100 判断题 1. 如果代码中涉及到一些网络、数据库、传感器等功能的开发,均可使用预览器进行预览。F 正确(True)错误(False) 预览器不能进行传感器等特殊功能的开发,需要使用真机开发 2. module.json5文件中的…

class 031 位运算的骚操作

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. 左程云的个人空间-左程云个人主页-哔哩哔哩视频…

专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结

目录 搜索 vs 深度优先遍历 vs 深度优先搜索 vs 宽度优先遍历 vs 宽度优先搜索 vs 暴搜 1.深度优先遍历 vs 深度优先搜索(dfs) 2.宽度优先遍历 vs 宽度优先搜索(bfs) 2.关系图暴力枚举一遍所有的情况 3.拓展搜索问题全排列 决策树 1. 计算布尔⼆叉树的值(medi…

redis——哨兵机制

redis中提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。 主从复制是实现redis高可用性的基石,从节点宕机时我们仍然可以将请求发送给主节点或者其他从节点,而当主节点宕机的时候,无法执行写操作,无…

如何在 SQL 中更新表中的记录?

当你需要修改数据库中已存在的数据时,UPDATE 语句是你的首选工具。 这允许你更改表中一条或多条记录的特定字段值。 下面我将详细介绍如何使用 UPDATE 语句,并提供一些开发建议和注意事项。 基础用法 假设我们有一个名为 employees 的表,…

SQL第12课挑战题

1. 返回customers表中的顾客名称(cust_name)和Orders表中的相关订单号(order_num),并按顾客名称再按订单号对结果进行排序。实际上是尝试两次,一次使用简单的等联结语法,一次使用inner join. 2. 让上一题变得更有用一些…