当前位置: 首页 > news >正文

BGP路由协议(四):工作原理

BGP路由信息库

BGP路由信息库用来存放用于决策的BGp路由:

  1. Adj-RIB-In 这些信息来自对等体接收到的更新,但是没有经过处理过的路由,存储在该信息库中
  2. Loc-RIB 经过BGP的输入策略引擎,运行策略之后所存储的信息库,用于本地的路径选择
  3. Adj-RIB-Out 经过BGP的输出引擎策略,运行策略之后所存储的信息库,用于通告给其他的对等体
### 查看从对等体接收到的路由信息
display bgp routing-table peer 10.1.0.1 {reviced-routes}### 查看向对等体发送的路由信息
display bgp routing-table peer 10.1.0.1### 查看BGP路由信息库
display bgp routing-table {advertised-routes}

###BGP路由信息决策过程

BGP决策过程是指对Adj-RIB-In中的路由使用本地策略,同时将选定过的或者修改过的路由放到Loc-RIB中和Adj-RIB-Out中:

  1. 当从对等体接收到更新数据包时,路由器会把这些更新数据包存储在路由选择信息库中,并指明是来自哪个对等体
  2. 这些更新数据包经过BGP输入策略引擎修改属性或者路由的过滤
  3. 路由器将会执行路径选择算法,来为每一条前缀确定最佳路径
  4. 得出的最佳路径被存储到本地BGP RIB(Loc-RIB)中,然后将Loc-RIB的路由加载到IP-RIB中,用于路由选择
  5. Loc-RIB中的内容在被通告给到其他对等体之前,必须通过输出策略引擎,只有那些成功通过输出策略引擎的路由,才会被安装到输出RIB(Adj-RIB-Out)中
    在这里插入图片描述

###BGP选路规则

选路规则记忆小技巧:PL LAO MEN(漂亮老男人)

  1. 优选协议首选值(PrefVal)数值最高的路由
    a. PreVal是华为设备的特有属性,也是选路规则中位列第一位
    b. 该属性仅针对本地路由器有意义,不会传递给其他设备
    c. 默认值为0
    d. 数值越大,优先级越高
  2. 优选本地优先级(Local_Pref)数值最高的路由
    a. 该属性在整个AS内传递,但不会传递到AS之外
    b. 默认值为100
    c. 数值越大,优先级越高
  3. 本地起源优先顺序,优先级由高到低
    a. 手动聚合路由
    b. 自动聚合路由
    c. network命令通告的路由
    d. import-route命令引入的路由
    e. 从对等体学习的路由
  4. 优选AS路径(AS_PATH)最短的路由
  5. 依次优选Origin类型为
    a. IGP
    b. EGP
    c. incomplete
  6. 优选MED值最低的路由
    a. 默认值为0
    b. 如果是来自不同邻居AS的路由,MED不参与比较,除非开启compare-different-as-med命令
  7. 依次优选eBGP、iBGP路由
  8. 优选BGP下一跳IGB的度量值(Metric)最小的路由
  9. 优选Cluster_List最短的路由(如果没有Cluster_List,则没有Cluster_List属性的路由优先)
  10. 优选Router_ID最小的设备发布的路由
    a. 如果路由携带Originator_ID属性,Originator_ID最小的路由优选
    b. 如果Originator_ID一样,也不再比较RouterID,直接开始规则11
  11. 优选从具有最小IP Address的对等体学习来的路由

###BGP的负载分担

一般情况下,只有BGP选择路由的规则前8个属性完全相同,且AS_PATH属性也相同时,BGP路由之间才能相互等价,实现负载分担。或者通告配置修改实现路由负载分担。负载分担只对本地设备有效,本设备还是会根据选路原则选出最优路由发给其他对等体,但在本设备路由表中显示的是负载分担
BGP实现负载分担的两种形式:

  1. 多条不同下一跳的BGP路由同时出现IP路由表中(前提条件是前8条优选规则完全相同)
  2. 下一跳路由的负载分担
### maximum load-balancing eBGP/iBGP number 
### 命令配置BGP负载分担的最大等价路由条数,默认为1条### 同一个AS内路由负载分担 该方式可能会引起路由环路
load-balancing as-path-ignore

###BGP同步

在一个AS内,BGP的邻居可以跨越路由器建立,但是有可能造成路由黑洞
BGP同步是指BGP路由器必须与IGP同步,AS内的路由器不仅要通过BGP学习到此路由,而且要从IGP协议学习到该路由,AS内的路由器才会认为该路由在AS内完全可达。
在把这条路由通告给eBGP邻居之前,该路由器需要验证内部的可达性,首先检查该目标前缀,了解通往下一跳路由器的路由是否存在,然后检查IGP中是否存在该目标前缀。满足以上条件时,才能将该路由通告给eBGP
华为设备默认关闭BGP同步,且不能手动开启。那么解决BGP路由黑洞有两种方法:

  1. 建立iBGP全互联,使每台路由器都能收到路由,保证AS内部的可达性
  2. 使用MPLS VPN技术

###BGP路由的注入

出现在BGP表中的路由,主要通过以下几种方式进入路由表

  1. 通过network方式注入来自IGP的路由
    a. 注入路由时,要注意路由的前缀和掩码要与路由表中完全一致
    b. 通过network注入的路由,origin属性为igp
  2. 通过import-route方式引入外部路由
    a. 缺省路由不能引入BGP
    b. 通过import-route方式引入的路由,origin属性为incomplete
  3. 通告aggregate进行聚合的路由

###路由聚合

路由聚合分为手动聚合和自动聚合,手动聚合路由优于自动路由聚合

  1. 如果聚合路由中所包含的明细路由的origin属性各不相同,那么origin属性按照优先级incomplete>egp>igp,且聚合路由会继承明细路由中的所有团体属性
  2. aggregate用于手动聚合路由,手动路由聚合优于自动路由聚合

自动聚合:

  1. BGP的自动聚合是针对外部引入的路由进行有类的聚合,但不能对network方式注入的路由进行自动聚合,自动聚合通告summary automatic命令实现,该功能默认不启用
  2. 自动聚合必须在引入路由的设备上操作,其他设备配置自动聚合命令不生效
    手动聚合:
  3. 手动聚合可以针对外部引入的路由和通过network方式通告的路由
  4. 通过aggregate命令实现手动聚合
  5. 手动聚合路由优于自动聚合路由
  6. 手动聚合可以在任何地方实现
http://www.dtcms.com/a/358760.html

相关文章:

  • Redis 持久化配置
  • 使用python格式化nginx配置文件
  • 【系统分析师】高分论文:论系统测试技术及应用
  • xAI发布全新编码模型 grok‑code‑fast‑1!
  • SpringBoot防止重复提交(2)
  • day44-Ansible变量
  • 联合体和枚举——嵌入式学习笔记
  • 每日算法题【二叉树】:二叉树的最大深度、翻转二叉树、平衡二叉树
  • 【系统分析师】高分论文:论软件的系统测试及应用
  • 栈溢出问题
  • Redis-数据类型的常用操作命令
  • uart学习
  • Jdk动态代理 Cglib动态代理
  • MYSQL表结构优化场景
  • 解构机器学习:如何从零开始设计一个学习系统?
  • folium地图不显示加载不出来空白问题解决
  • SAP PP模块的MPS
  • 福彩双色球第2025100期篮球号码分析
  • git在push和clone等操作时显示‘: Invalid argument
  • 优选算法:二分查找
  • #5:Nginx核心使用技术
  • Java 学习笔记(基础篇12)
  • 小狼毫输入法中让数字键盘上的数字键不再选择候选词而是与原始输入一起直接上屏
  • 计算机视觉与深度学习 | 基于深度学习的图像特征提取与匹配算法综述及MATLAB实现
  • 互联网大厂大模型应用开发岗位面试:技术点详解与业务场景演练
  • nacos3端口漂移问题
  • shell编程-核心变量知识
  • LeetCode - 234. 回文链表
  • 2025年高性能计算年会
  • Golang 面试题「高级」