HCIE之BGP基础概念(一)

BGP

  • 一、BGP的基本概述
  • 二、BGP分类
  • 三、BGP的工作原理
      • BGP报文类型:
      • BGP状态机:
  • 四、BGP对等体之间的交互原则
      • 解决BGP路由黑洞方法:
  • 五、路由反射器
      • 路由反射规则
      • 路由反射器下防环
      • 联邦
  • 六、BGP属性特点
      • 优选协议首选值(PrefVal)最高的路由
      • 优选本地优先级(Local_Pref)最高的路由
      • 优选本地生成的路由
      • 优选AS路径(AS_Path)最短的路由
      • 比较Origin属性
      • 优选MED值最低的路由
      • 优选从EBGP邻居学来的路由(EBGP路由优于IBGP路由)
      • 优选到下一跳IGP Cost较小的路由
      • 优选Cluster_List最短的路由
      • 优选邻居Router-ID小的
      • 比较对等体的IP Address
      • 总结:

一、BGP的基本概述

1、BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门机制来确保连接的可控性。BGP进行域间的路由选择,对协议的稳定性要求非常高。因此用TCP协议的高可靠性来保证BGP协议的稳定性。BGP的对等体之间必须在逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
2、路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
3、BGP从设计上避免了环路的发生。AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。AS内部:BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路。
4、支持CIDR 无类域间路由
5、BGP提供了丰富的路由策略;提供了防止路由振荡的机制;BGP也易于扩展

二、BGP分类

1、EBGP:运行在不同的AS之间的BGP路由器建立的邻居关系为EBGP(External BGP外部BGP邻居)。
2、IBGP:运行在相同AS内的BGP路由器建立的邻居关系为IBGP(Interna BGP)。

三、BGP的工作原理

BGP报文类型:

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

Update消息:用于在对等体之间交换路由信息。Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。应用:连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端。

Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性。应用:稳定后要定时发送KEEPALIVE消息以保持BGP连接的有效性。

Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。应用:当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体。

Route-Refresh消息:通过OPEN消息告知BGP peer本地支持路由刷新能力(Route-Refresh capability)。应用:ROUTE-REFRESH消息用来通知对等体自己支持路由刷新。

BGP状态机:

  • BGP 对等体的交互过程中存在 6 种状态机
    空闲状态(Idle)
    连接状态(Connect)
    活跃(Active)
    Open报文已发送(OpenSent)
    Open报文已确认(OpenConfirm)
    连接已建立(Established)
    在 BGP 对等体建立的过程中,通常可见的 3 个状态是:Idle、 Active 和 Established。

Idle 状态是 BGP 初始状态。在 Idle 状态下, BGP 拒绝邻居发送的连接请求。只有在收到本设备的 Start 事件后, BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至 Connect状态。

②在 Connect状态下, BGP 启动连接重传定时器(Connect Retry),等待 TCP 完成连接。

  • 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent 状态;

  • 如果 TCP 连接失败,那么 BGP 转至 Active 状态;

  • 如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 继续尝试和其它 BGP 对等体进行 TCP 连接,停留在Connect 状态。

  • 如果其他事件(如BGP系统或者操作者重置时),退回到Idle状态。

③ 在 Active 状态下, BGP 总是在试图建立 TCP 连接。

  • 如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,关闭连接重传定时器,并转至 OpenSent 状态;

  • 如果 TCP 连接失败,那么 BGP 停留在 Active 状态;

  • 如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 转至 Connect状态。

  • 如果其他事件(如BGP系统或者操作者重置时),退回到Idle状态。

④ 在 OpenSent 状态下, BGP 等待对等体的 Open 报文,并对收到的 Open 报文中的 AS 号、版本号、 认证码等进行检查。

  • 如果收到的 Open 报文正确,那么 BGP 发送 Keepalive 报文,并转至 OpenConfirm 状态;

  • 如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至Idle 状态。

⑤ 在 OpenConfirm 状态下, BGP 等待 Keepalive 或 Notification 报文。

  • 如果收到 Keepalive 报文,则转至 Established 状态。

  • 如果收到 Notification 报文,则转至 Idle 状态。

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

  • 如果收到正确的 Update 或 Keepalive 报文,那么 BGP 就认为对端处于正常运行状态,将保持 BGP 连接。

  • 如果收到错误的 Update 或 Keepalive 报文,那么 BGP 发送 Notification 报文通知对端,并转至 Idle
    状态。

  • Route-refresh 报文不会改变 BGP 状态。

  • 如果收到 Notification 报文,那么 BGP 转至 Idle 状态。

  • 如果收到 TCP 拆链通知,那么 BGP 断开连接,转至 Idle 状态。

四、BGP对等体之间的交互原则

BGP 设备将最优路由加入 BGP 路由表,形成 BGP 路由。BGP 设备与对等体建立邻居关系后,采取以下交互原则:

① 从 IBGP 对等体获得的 BGP 路由, BGP 设备只发布给它的 EBGP 对等体。

② 从 EBGP 对等体获得的 BGP 路由, BGP 设备发布给它所有 EBGP 和 IBGP 对等体。

③ 当存在多条到达同一目的地址的有效路由时, BGP 设备只将最优路由发布给对等体。

④ 路由更新时, BGP 设备只发送更新的 BGP 路由。

⑤ 所有对等体发送的路由, BGP 设备都会接收。

解决BGP路由黑洞方法:

(1)、把EBGP的路由引入到IBGP协议OSPF中(5类LSA),比较消耗设备资源,BGP路由数量特别庞大(该方法基本被淘汰)。

(2)、引入到IGP协议中,增加计算路由的负担,BGP路由振荡,IGP路由也会产生振荡。

(3)、AS内所有路由器均运行BGP协议,IBGP全互联(主流方案)。

总结:只要能解决BGP路由黑洞问题,BGP同步检查功能,开启和关闭就不再重要了。

五、路由反射器

引入路由反射器之后存在三种角色:
RR (Route Reflector) :路由反射器
Client:客户端
Non-Client:非客户端

1、RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联。

2、将一台BGP路由器指定为RR的同时,还需要指定其Client,至于Client本身,无需做任何配置,它并不知晓网络中存在RR。

路由反射规则

  • RR在接收BGP路由时:如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户

在这里插入图片描述

  • 如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户
    在这里插入图片描述
  • 如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体。
    在这里插入图片描述
    非非不传

路由反射器下防环

RR的设定使得IBGP水平分割原则失效,这就可能导致环路的产生,为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路:

  • Originator_ID
  • Cluster_List

RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器RouterID。
若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR (若有)所更改。
当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的RouterID相同,则它会忽略关于该条路由的更新。

路由反射族包括反射器RR及其Client。一个AS内允许存在多个路由反射族。
每一个簇都有唯一的簇ID (Cluster_ID,缺省时为RR的BGP RouterID )。
当一条路由被反射器反射后,该RR (该族)的CIuster ID就会被添加至路由的Cluster list属性
当RR收到一条携带Cluster list属性的BGP路由,且该属性值中包含该族的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新。

联邦

联邦已被淘汰,IE考试中不会涉及,若需要学习可在其他资源进行补充。

六、BGP属性特点

  • BGP路由属性 是一套参数,它是对路由的进一步描述
  • 公认必遵 ORIGIN AS-PATH NEXT-HOP
  • 所有BGP路由器都可以识别,且必须存在于Update消息中
  • 缺少这种属性,路由信息就会出错
  • 公认任意 Local-preference Atomic-aggregate
  • 所有BGP路由器都可以识别,且不要求必须存在于Update消息中
  • 缺少这种属性,路由信息也不会出错
  • 可选过渡 Aggregator Community
    • 在AS之间具有可传递性
    • BGP路由器可以不支持此属性,但他仍然会接收这类属性,并传递给其他对等体
  • 可选非过渡 MED Originator-ID Cluster-List
  • 如果BGP路由器不支持此属性,则相应的这类属性会被忽略,且不会传递给其他对等体
    注:属性均是为做防环和选路,以及做过滤

优选协议首选值(PrefVal)最高的路由

  • 本地有意义,不会离开本路由器,default=0(从IBGP/EBGP/本地) 越大越优
  • HUAWEI特有

优选本地优先级(Local_Pref)最高的路由

  • 在BGP路由中,LP属性是公认任意,任何一条路由都是可选携带
  • 通过IBGP/EBGP/本地注入的,LP分别具备:
  • LP是一个内部值,从EBGP PEER传递的update不会携带LP属性(本地赋予default=100的LP属性值,如果需要更改属性值,需要单独配置default local-preference *),本地也是一样。
  • 只在IBGP PEER传递(只在一个AS内起作用)。
  • 越大越优

优选本地生成的路由

  • 依次优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由。

优选AS路径(AS_Path)最短的路由

- BGP设备对AS-PATH的计算方法如下:
1、本AS内注入的路由,其AS-PATH为空,仅当该路由器离开本AS,会打上自己的AS号。且AS号出现在AS-PATH属性列表的最左边。
2、在AS内通告,AS-PATH属性不变。(其余可查找相关资料进行详细了解)

比较Origin属性

  • 定义路径信息的来源

  • Origion只是用来描述BGP路由的获悉来源方式,并不描述BGP路由的优劣

  • 依次优选Origin类型为IGP、EGP、Incomplete的路由,

  • “i”:通过路由始发AS的IGP(RIP、OSPF、ISIS等 )学习到的路由信息

    • “e”:通过EGP(BGP)学习到的路由信息
  • “?”:通过其他方式学习到的路由信息

  • 注:i>e>?

优选MED值最低的路由

  • MED值相当于IGP的代价值,用于判断流量在进入AS时的最佳路由,即用MED来影响邻居AS流量进入本AS的最佳路径

  • 越小越优,default=0

优选从EBGP邻居学来的路由(EBGP路由优于IBGP路由)

优选到下一跳IGP Cost较小的路由

优选Cluster_List最短的路由

PS:有RR环境先比较Cluster_List

  • Cluster List一样长时,比较起源ID。

  • 如果二条路径,一个带cluster-list,一个不带,也是需要比较的。不带按0算。

优选邻居Router-ID小的

当有RR的环境时,不比较RR的Router-ID,比较Originator-ID

  • 优选Router ID或Origin ID最小的路由器发布的路由

比较对等体的IP Address

  • 优选从具有较小IP Address的对等体学来的路由

总结:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP编程实践:实际商品价格数据采集

引言 在电子商务领域,对商品价格进行数据采集和对比是一项常见的需求。本文将介绍如何使用PHP编程语言实现对1688和淘宝商品价格数据的采集和对比,帮助读者了解实际的编程实践过程。 一、数据采集原理 数据采集是指从互联网上获取数据的过程&#xff…

【前端web入门第一天】01 开发环境、HTML基本语法文本标签

文章目录: 1. 准备开发环境 1.1 vs Code基本使用 2.HTML文本标签 2.1 标签语法2.2 HTML基本骨架2.3 标签的关系2.4 注释2.5 标题标签2.6 段落标签2.7 换行与水平线标签2.8 文本格式化标签 1. 准备开发环境 VSCode与谷歌浏览器离线版,安装包评论区自提. VSCode默认安装位置:C…

3、非数值型的分类变量

非数值型的分类变量 有很多非数字的数据,这里介绍如何使用它来进行机器学习。 在本教程中,您将了解什么是分类变量,以及处理此类数据的三种方法。 本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2 提取码:uDzP 文章目录 1、简介2、三种方法的使用1…

书生·浦语大模型实战营-学习笔记5

LMDeploy 大模型量化部署实践 大模型部署背景 LMDeploy简介 轻量化、推理引擎、服务 核心功能-量化 显存消耗变少了 大语言模型是典型的访存密集型任务,因为它是decoder-by-decoder 先把数据量化为INT4存起来,算的时候会反量化为FP16 AWQ算法&a…

Angular组件(一) 分割面板ShrinkSplitter

Angular组件(一) 分割面板ShrinkSplitter 前言 分割面板在日常开发中经常使用,可将一片区域,分割为可以拖拽整宽度或高度的两部分区域。模仿iview的分割面板组件,用angular实现该功能,支持拖拽和[(ngModel)]双向绑定的方式控制区…

Docker容器引擎(2)

目录 一.批量删除镜像,容器 二.Docker 网络实现原理 随机映射端口(从32768开始) 访问自己: 在10服务器上配置路由转发: 指定映射端口: 查看容器的输出和日志信息: 将宿主机目标|文件挂载…

RabbitMQ中交换机的应用及原理,案例的实现

目录 一、介绍 1. 概述 2. 作用及优势 3. 工作原理 二、交换机Exchange 1. Direct 2. Topic 3. Fanout 三、代码案例 消费者代码 1. 直连direct 生产者代码 测试 2. 主题topic 生产者代码 测试 3. 扇形fanout 生产者代码 测试 每篇一获 一、介绍 1. …

Vue的生命周期方法

beforeCreate 在实例初始化之后,数据观测(data observe)和 event/watcher 事件配置之前被调用。在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能被访问。 created 实例已经创建完成之后被调用。在这一步,实…

【JavaEE进阶】 MyBatis使用注解实现增删改查

文章目录 🍃前言🌴传递参数🎋增(Insert)🚩返回主键 🎄删(Delete)🌲改(Update)🌳查(Select)🚩起别名🚩结果映射🚩开启驼峰命名(推荐使用) ⭕总结 &#x1f343…

[UI5 常用控件] 01.Text

文章目录 前言1. 普通文本2. 长文本:3. 设置最大显示行数 ( maxLines3 )4. 单行显示 ( wrappingfalse )5. 显示空白符 ( renderWhitespacetrue )6. 使用 - 连接单词:只适用于英文 ( wrappingTypeHyphenated )7. 空白时使用 - 代替 ( emptyIndicatorModeOn )8. JSON数…

2024年需要重点关注的15种计算机病毒

2024年,计算机病毒威胁变得愈发多元化和复杂化。涉及勒索病毒、二维码病毒、挖矿木马等15种类型,这些病毒从数据勒索到系统入侵,对全球网络安全构成严峻挑战。 2024年,计算机病毒威胁变得愈发多元化和复杂化。涉及勒索病毒、二维码…

【网络安全】常见的网络威胁有哪些?

随着互联网的快速发展,网络安全问题日益凸显。常见的网络威胁包括病毒、木马、恶意软件等。这些威胁不仅会影响计算机的安全运行,还会窃取用户的个人信息,造成巨大的损失。因此,我们需要采取一些措施来保护自己的网络安全。 常见的…

android 图片添加水印

android 图片添加水印 本文主要讲下android 中如何给图片添加水印. 在Android中给图片添加水印可以使用Bitmap、Matrix和Canvas类的方法来实现. private Bitmap addWater() {// 加载原始图片Bitmap sourceBitmap BitmapFactory.decodeResource(getResources(), R.mipmap.sou…

Vue+OpenLayers7:OpenLayers7地图初始化时如何设置默认缩放级别、设置默认地图中心点、最大缩放级别和最小缩放级别以及默认坐标系

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 本章讲解OpenLayers7地图初始化时如何设置默认缩放级别、设置默认地图中心点、最大缩放级别和最小缩放级别以及默认坐标系等配置。 前言 OpenLayers7地图初始化时如何设置默认缩放级别、初始化时设置默认地图中心点、设置…

启动mitmproxy报错 ImportError: cannot import name ‘url_quote‘ from ‘werkzeug.urls‘

报错截图 ImportError: cannot import name url_quote from werkzeug.urls (d:\soft\python\python38\lib\site-packages\werkzeug\urls.py) 原因是Werkzeug版本不兼容导致 解决方法 pip install Werkzeug2.2.2

大数据学习之Flink算子、了解(Source)源算子(基础篇二)

Source源算子(基础篇二) 目录 Source源算子(基础篇二) 二、源算子(source) 1. 准备工作 2.从集合中读取数据 可以使用代码中的fromCollection()方法直接读取列表 也可以使用代码中的fromElements()方…

北斗短报文DTU 北斗通信DTU无线数传终端

北斗是我国自主建设的卫星导航系统,被广泛应用于全球定位、导航和时间同步等领域。随着物联网的迅猛发展,北斗短报文DTU作为物联网连接的关键技术,成为了各行各业的热门话题。 ** 一、北斗短报文DTU的概念与特点 **   北斗短报文DTU(Data…

二叉树知识

提示:文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问: 本文目标: 一、背景 二、二叉树初始知识 题目 源于做的一道牛课题 若一颗完全二叉树中某节点无左孩子,则该节点是 A、高度为1的节点 B、高度为2的节点…

Redis持久化和集群架构

目录 Redis持久化 RDB快照(snapshot) RDB优点 RDB缺点 RDB的触发机制 AOF持久化 AOF文件重写 AOF触发机制 混合模式 Redis主从架构 Redis哨兵高可用架构 Redis Cluster架构 槽位定位算法 跳转重定位 Redis集群节点间的通信机制 Redis持久化…

在 MATLAB 中注释多行

使用 MATLAB 中的注释块注释多行代码 要注释一行或两行代码,我们可以使用%字符来完成。但是,如果我们必须注释多行代码,则此方法将花费大量时间。我们可以使用注释块来注释多行代码,而不是使用%来注释多行代码。写在该块中的任何…