BGP协议介绍

2023-05-16

一. BGP协议概述

BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router)。
(http://127.0.0.1/bgp_basic.jpg)
在这里插入图片描述

二. BGP的基本概念

AS(Autonomous System)自治系统:

自治系统就是处于一个管理机构控制之下的路由器和网络群组。在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号。

BGP发言者(BGP Speaker):

发送BGP消息的路由器称为BGP发言者,它接收或者产生新的路由信息,并发布给其他BGP发言者。

Router ID(RID):

用来在自治系统中唯一标识一台路由器。Router ID可以是手工配置或这是路由协议自动选举。

BGP对等体(BGP Peer):

相互交换消息的BGP发言者之间互称对等体(Peer),也可以称为BGP邻居。

IBGP对等体(Internal BGP Peer):

如果BGP对等体处于同一自治系统内,被称为IBGP对等体,要求TCP可达。为了防止环路,BGP协议规定BGP发言者从IBGP获得的路由不向它的IBGP对等体发布。

EBGP对等体(External BGP Peer):

BGP对等体处于不同自治系统时,被称为EBGP对等体,一般物理直连。BGP Speaker从EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP);同时为了防止环路,他不会将学习到的路由再向原发布者发布。

AS-PATH:

BGP的路由可能会从一个AS发往另外一个AS,从而穿越多个AS,可能在经过转发之后,又回到了最初的AS之中,最终形成路由环路,出于防止环路的目的考虑,BGP在将路由发往其它AS(EBGP邻居)时,需要在路由中写上自己的AS号码,下一个AS收到路由后,除了保留之前的AS号码之外,也要添加上自己的AS号码,这样的写在路由中的AS被称为AS-path,如果BGP收到的路由的AS_PATH中包含自己的AS号码,就认为路由被发了回来,以此断定出现了路由环路。
(http://127.0.0.1/bgp_as_path.jpg)
在这里插入图片描述

三.BGP工作过程

BGP邻居建立
  • Idle状态:初始空闲状态,不接受任何BGP连接,等待start事件的产生。

  • Connect状态:连接状态。

  • Active状态:活跃状态。

  • Opensent状态:OPEN消息已发送。

  • OpenConfirm状态:OPEN消息确认。

  • Established状态:连接建立。
    (http://127.0.0.1/bgp_connect.jpg)
    在这里插入图片描述

  • Open消息:用于BGP对等体之间建立连接并进行参数协商。内容包括使用的BGP版本号、自己所属的AS号、路由器ID、Hold Time值、认证信息等信息。

  • Keepalive消息:BGP会周期性(30s)向对等体发出Keepalive消息,主要作用就是保持邻居关系的稳定;另外一个作用就是对收到的Open消息的回应。
    (http://127.0.0.1/bgp_open_message.jpg)
    bgp_open_message

BGP路由表导入

默认情况下,任何路由都不会自动进入BGP路由表,BGP路由表的路由获得有多种方式,可以从BGP邻居获得,也可以手工将IGP路由导入BGP路由表,还可以将其它路由重分布进BGP。

BGP路由更新和撤销

  • UPdate消息:主要用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以发布不可达路由消息。
  • Notification消息:如果检测到对方发过来的消息有错误或者主动断开BGP链接,都会发出Notification消息来通知BGP邻居,并关闭链接回到idle状态;接收端也会变为idle状态。
  • Route-refresh消息:Route-refresh用来要求对等体重新发送指定地址族的路由信息。
    (http://127.0.0.1/bgp_update_message.jpg)
    在这里插入图片描述

四.BGP路径属性

公认必遵属性:ORIGIN、AS-PATH、NEXT_HOP

是公认所有BGP实现都必须识别的属性,这些属性被传递给BGP邻居。

ORIGIN:

来源属性就反映出了路由是如何进入BGP路由表的。
0表示IGP,通过network命令导入AS内部的IGP路由;
1表示EGP,通过EGP学习的路由;
2表示INCOMPLETE,通过其他方式学习的路由;

AS-PATH:

路由到达一个目的地所经过的一系列自制系统号码的有序列表,用于防止环路。BGP发言者在向EBGP邻居发送路由更新时修改AS_PATH属性,向IGP邻居发送时不修改该属性。

NEXT_HOP:

路由信息的下一跳信息。
1、BGP发言者把自己产生的路由发给所有邻居时,下一跳为自己接口地址;
2、BGP发言者把从EGP邻居得到的路由发给IBGP邻居时,不修改下一跳属性;
3、BGP发言者把收到的路由发给EBGP对等体时,把下一跳属性设置为本地与对端连接的接口地址。

公认可选属性:LOCAL—PREF、ATOMIC_AGGREGATE

是公认所有BGP实现都必须识别的属性,但是为路由写入公认自选属性并不是必须的。

LOCAL_PREF:

用于AS内IBGP邻居选择离开本地AS时的最佳路由,表明的是BGP路由的优先级,该 属性只在AS内部传播,不传递到AS外。

ATOMIC_AGGREGATE(原子聚合):

是用来通告路由接收者,该路由是经过聚合的。它实际上是一种警告,因为发布更粗略的路由意味着更精细的路由信息在发布过程中丢失了。在进行路由聚合时,对于聚合的路由信息会添加ATOMIC-AGGREGATE属性。

可选传递属性:COMMUNITY、AGGREGATOR

并不是所有的BGP路由器都能识别的属性,也并不一定能保留和传递该属性。

COMMUNITY(团体):

此属性指共享一个公共属性的一组路由器。

AGGREGATOR(聚合者)::

此属性标明了实施路由聚合的BGP路由器ID和聚合路由的路由器的AS号。

可选不可传递属性:MED、CLUSTER-LIST、ORIGINATOR-ID

只有特定的BGP路由器才理解和支持可选不可传递属性,并且可选不可传递属性理论上是不能手工设置的,这些属性也不能任意传递,只可以传递到特定的BGP路由器。

MED(MULTI-EXIT-DISC 多出口区分):

MED就是BGP路由中的metric,是被设计用来影响在多个下一跳都为eBGP邻居时,如何选择最优路径,MED越小优先级越高,默认值为0。

CLUSTER_LIST(簇列表):

此属性显示了采用的反射路径,类似AS_PATH。当一台RR向另外一台RR放射路由时会加上cluster-list属性,一般是自己的cluster id号来填充。

ORIGINATOR_ID(起源ID):

路由反射器会附加到这个属性上,它携带本AS路由器的路由器ID,用以防止环路。

五.BGP路由优选

  • 优选Preferred_value(Weight)值最大的路由;
  • 优选本地优先级(LOCAL_PREF)最大的路由;
  • 依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;
  • 优选AS路径(AS_PATH)最短的路由;
  • 依次选择ORIGIN属性为IGP、EGP、Incomplete的路由;
  • 优选MED值最低的路由;
  • 依次选择从EBGP、IBGP学来的路由;
  • 优选下一跳度量值(Metric)最低的路由;
  • 优选CLUSTER_LIST长度最短的路由;
  • 优选ORIGINATOR_ID最小的路由;
  • 优选Router ID最小的路由器发布的路由;
  • 优选IP地址最小的对等体发布的路由;

六.BGP基本配置

R1和R2建立IBGP邻居,IGP协议使用OSPF;
R2和R3之间建立EBGP邻居;
R2上通过network引入环回口路由11.1.1.1/32,通过重分布引入直连路由;
R1上通过IBGP学习到R2引入的直连路由;
R3上通过EBGP学习到R2引入的环回口路由和直连路由;
(http://127.0.0.1/bgp_topo.jpg)
在这里插入图片描述

配置:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果:

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BGP协议介绍 的相关文章

  • 【51单片机STC89C52】DHT11温湿度传感器的使用

    目录 一 DHT11概述 数据传送逻辑 数据格式 通讯过程时序图 二 检测模块是否存在 时序逻辑分析 代码实现 三 读取温湿度数据 DHT11传输0的时序分析 DHT11传输1的时序分析 代码实现 四 串口打印 一 DHT11概述 数据传送
  • Hadoop MapReduce自关联(单表关联)-案例

    案例 xff1a 获取孙子和祖父母的列表 单表关联 txt child parent Tom Lucy Tom Jack Jone Lucy Jone Jack Lucy Mary Lucy Ben Jack Alice Jack Jess
  • Oracle-Grouping sets

    Oracle Grouping sets span class token comment 创建一个雇员表 span span class token keyword CREATE span span class token keyword
  • Udacity深度学习-深度神经网络-assignment3

    六层深度神经网络 43 SGD 43 L2正则项 43 dropout xff0c TensorFlow实现 NN with SGD L2 batch size 61 128 layer cnt 61 6 层数 graph 61 tf Gr
  • 【基于STM32的串口通信----用软件模拟】

    注 xff1a 这是我上班第一次学习串口通信 xff0c 此文章基于STM32F4系列单片机 一 xff1a 什么是软件模拟串口通信 xff1a 1 平常所用串口通信都是用的单片机外设 xff0c 是单片机内部自带的模块 xff0c 只需要
  • 关于单片机内存详解

    引言 xff1a 内存是单片机的重要组成部分 xff0c 那么如何操作 分配内存对于一个嵌入式软件工程师来说便是极为重要的 一 存储器的定义 xff1a 存储器单元实际上是时序逻辑电路 的一种 按存储器的使用类型可分为只读存储器 xff08
  • Keil编译报错--IAP\IAP.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.

    之前在用CUBE生成文件时发生了这样的报错 xff1a IAP IAP sct 7 error L6236E No section matches selector no section to be FIRST LAST 发生这样的报错是因
  • Keil编程环境背景颜色--护眼色

    在Edit中选择Configuration 选择Colors amp Fonts 点击下载那个按钮 按照这个参数输入自定义颜色并添加 xff0c 就保存为一个护眼的绿色啦
  • win10下MissionPlanner地面站的安装

    win10下MissionPlanner地面站的安装 编辑器 xff1a Viaual Studio2019社区版 安装时工作负荷和单个组件的选择如下图所示 xff0c 然后自定义安装位置进行安装 安装完成后启动MP地面站 启动Visual
  • git fatal: The remote end hung up unexpectedly 错误

    使用git将本地项目添加到远程仓库报以下错误 git push u origin master Counting objects 2053 done Delta compression using up to 2 threads Compr
  • git submodule update --init --recursive

    转自https blog csdn net wangjia55 article details 24400501 转自http webfrogs me 2013 03 20 git submodule 开发过程中 xff0c 经常会有一些通
  • C++简介( C++ Primer Plus)

    C 43 43 历史 xff1a 1980年 xff0c 贝尔实验室的 Bjarne Stroustrup 本贾尼 斯特劳斯 开始对C进行改进和扩充 1983年正式命名为C 43 43 支持3钟不同的程序设计 过程化程序设计 数据 43 算
  • 树莓派3B+ 引脚图说明

    如上图所示 xff0c 我们可以很清楚的看到各个引脚的功能 例如我们想使用pwm引脚来控制舵机 xff0c 则我们可以考虑使用其中的 BCM18 PWM0 和 BCM13 PWM1 在使用wiringPi库时 xff0c 我们定义的引脚即B
  • 树莓派3B+ 串口使用大全(实现串口通信功能)

    1 树莓派串口控制台功能 在2018 10 09 raspbian stretch img镜像中 xff0c 要使用串口来调试设备 xff0c 需要修改conig txt文件 1 sudo systemctl disable hciuart
  • Java学习笔记(三)函数——学习MOOC网翁恺老师课程记录

    七 函数 7 1 函数定义与调用 Java的函数必须定义在类的内部 xff0c 成为类的成员 定义一个函数 xff0c 要像这样写 xff1a lt 返回类型 gt lt 方法名称 gt lt 参数表 gt lt 方法体 gt 返回类型是这
  • STL笔试面试题总结(干货)

    STL笔试面试题总结 一 STL有哪些组件 STL提供六大组件彼此此可以组合套用 1 容器 容器就是各种数据结构 我就不多说 看看下面这张图回忆一下就好了 从实现角度看 STL容器是一种class template 2 算法 各种常见算法
  • Framebuffer 机制【转】

    本文转载自 xff1a http blog csdn net paul liao article details 7706477 Framebuffer Framebuffer是Linux系统为显示设备提供的一个接口 xff0c 它将显示缓
  • 单片机——蜂鸣器

    1 蜂鸣器 2 所用元件 2n5771 at89c51 button cap cap elec crystal res speaker 例图 xff1a 例图代码 xff1a include lt REGX51 H gt sbit BEEP
  • Linux获取机器码

    1 准备工作 安装php xff0c 并已经配置好环境变量path 2 运行hardware sh获取机器码 shell gt php span class token punctuation span span class token o
  • Windows远程桌面卡顿问题(包含网络调优)

    注 xff1a 以下操作需管理员权限执行CMD 关闭自动调节 xff1a netsh interface tcp span class token function set span global autotuninglevel 61 di

随机推荐

  • ESXI VIB升级报错

    一 兼容性问题 1 通过VIB升级ESXI时 xff0c 可能会出现类似报错 span class token namespace DependencyError span VIB LSI bootbank scsi mpt3sas 04
  • MySQL 8.0安装

    1 安装MySQL 8 0 Server shell gt dnf span class token operator span y install 64 mysql 2 开启服务 shell gt systemctl span class
  • 华为镜像启动报错

    shell gt span class token function rm span span class token operator span etc span class token operator span udev span c
  • ThinkPad T14s 安装Ubuntu22踩坑记

    讲一个我装机历经的一个小故事 首先 xff0c 花个万把块 xff0c 买个心仪的撸码神奇 xff0c 我买的是2022款ThinkPad T14s 官网关注了好久就是不出32G内存版本的 xff0c 无奈只能买一个16G内存版本的 xff
  • STM32F429入门(二十一):SPI协议及SPI读写FLASH

    IIC主要用于通讯速率一般的场合 xff0c 而SPI一般用于较高速的场合 一 SPI协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议 Serial Peripheral Interface xff0c 即串行外围设 备接口 xff0c
  • Dell清除BIOS密码及硬盘锁

    1 获取System Number F2进入BIOS xff0c 点击Unlock出现以下界面 xff0c 记录System Number 2 获取password 访问https bios pw org xff0c 将记录的System
  • 论文阅读:Learning Deep Features for Discriminative Localization(CAM)

    Learning Deep Features for Discriminative Localization 文章目录 Learning Deep Features for Discriminative Localization摘要1 引言
  • 上下文切换

    上下文切换 xff08 有时也称做进程切换或任务切换 xff09 是指 CPU 从一个 进程或线程 切换到另一个进程或线程 进程 xff08 有时候也称做任务 xff09 是指一个 程序运行的 实例 在 Linux 系统中 xff0c 线程
  • CAS服务器搭建

    一 CAS是Central Authentication Service的缩写 xff0c 中央认证服务 xff0c 一种独立开放指令协议 CAS 是 Yale 大学发起的一个开源项目 xff0c 旨在为 Web 应用系统提供一种可靠的单点
  • 如何查linux服务器的带宽占用?哪些进程占用带宽?

    前言 操作系统 xff1a Linux 操作环境 xff1a Centos7 ubuntu linux查看服务器带宽具体方法 一 使用speedtest cli命令查看下载和上传最大流量值 因为命令是python的 xff0c 所以需要先下
  • ESP8266调试方法

    ESP8266在开发的过程中无法进行仿真 xff0c 所以 xff0c 为了排查问题 xff0c 我们只能用别的方法 xff0c 下面一起来看看常用的两种方法 xff1a 添加UART打印和Fatal 查证方法 添加UART打印 对于 ES
  • 二、操作系统进程管理(4)——处理机调度(2)进程调度的时机、切换与过程、方式、评价指标

    3 进程调度的时机 切换与过程 方式 xff08 1 xff09 进程调度 xff08 低级调度 xff09 的时机 xff1a 什么时候需要进程调度 xff1f 主动放弃 xff1a 进程正常终止 运行过程中发生异常而终止 主动阻塞 xf
  • eclipse保存失败/无法保存/字符编码问题/JAVA

    eclipse保存失败 无法保存 字符编码问题 JAVA 在eclipse中单击 保存 按钮时出现如下提示对话内容 xff08 框 xff09 未能完成保存 原因 xff1a 使用 GBK 字符编码时 xff0c 无法映射某些字符 更改编码
  • java运算符(a++和++a)

    提示 xff1a 文章主要说明a 43 43 和 43 43 a系列 xff0c 附带其余信息 a 43 43 和 43 43 a的不同 xff1a 不同点是a 43 43 是先赋值再 43 1 xff0c 而 43 43 a则是先 43
  • 计算统计笔记整理(持更)

    bootstrap方法 基本思想 xff1a 模拟 目的 xff1a 计算 xff08 任意估计的 xff09 标准误差 偏差和置信区间 分类 xff1a 1 参数化bootstrap 分布形式已知 xff0c 或可由样本估计出分布 xff
  • Javascript 分析Javascript事件机制和Settimeout讲解

    线程 JavaScript特点就是单线程 xff0c 理解是 xff0c 同一个时间只能做一件事 那么 xff0c 为什么JavaScript不能有多个线程呢 xff1f 现在我们假设 xff0c JavaScript同时有多个线程 xff
  • 规划人生之一: 嵌入式系统开发or算法开发

    这些天一直为一个问题所烦扰 不知道今后改把精力投入到嵌入式系统如arm dsp等的开发上还是在图像的压缩算法上 由于我们做的是嵌入式系统 在arm开发上还有嵌入式os 所以比较烦杂 而在dsp上还要进行mpeg以及264的开发 不知道那个更
  • vue中点击获取相应元素

    在vue中通过点击事件获取上一个标签 父标签 第一个子标签等元素 以下元素都是以所点击的元素进行查找 e target 获取当前点击的元素 e currentTarget 获取绑定事件的元素 e currentTarget previous
  • http-parser解析http报文详解

    说明 项目里用到力http parser xff0c 在这里简单说明一下其用法吧 下载地址 xff1a https github com joyent http parser 其使用说明很详细 开源用例 开源tcpflow 1 4 4中使用
  • BGP协议介绍

    一 BGP协议概述 BGP用于在不同的自治系统 xff08 AS xff09 之间交换路由信息 当两个AS需要交换路由信息时 xff0c 每个AS都必须指定一个运行BGP的节点 xff0c 来代表AS与其他的AS交换路由信息 通常是路由器来