BGP协议介绍

article/2025/8/24 17:19:20

一. 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)
在这里插入图片描述

配置:

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

结果:

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


http://chatgpt.dhexx.cn/article/C4iGMq1Z.shtml

相关文章

BGP协议总结(比较详细,好理解)

BGP Border Gateway Protocol(当前使用的版本是 BGP-4) 动态路由协议可以按照工作范围分为IGP以及EGP。IGP工作在同一个AS内,主要用来发现和计算路由,为AS内提供路由信息的交换;而EGP工作在AS与AS之间,在…

sentinel流控设置--流控排队等待

排队等待 顾名思义,请求过多时,让请求匀速的进入后台进行处理。采用漏斗算法,控制流量 设置超时时间,超时的则将请求抛弃,返回错误信息

sentinel流控设置--流控预热

预热 顾名思义,意思就是让流量慢慢的涨,不让流量突然的达到阈值 这里直接修改之前的规则,选择Warm up 使用场景在秒杀场景

串口的流控

1.首先确定DCE和DTE。 DCE是指modern等通信设备, DTE是计算机等终端设备; 2. DCE与DTE; DTE与DTE之间流控信号CTS和RTS的接线不同; DTE与DCE之间: DTE与DTE之间 3. RTS (Require ToSend,发送…

Sentinel流控规则-链路

# 流控规则-链路名词解释 资源名:唯一名称,默认请求路径针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)阈值类型/单机阈值: QPS(每秒钟…

【Sentinel】流控模式

目录 1.簇点链路 2.快速入门 2.1.示例 2.2.练习 3.流控模式 3.1.关联模式 3.2.链路模式 3.3.总结 1.簇点链路 雪崩问题虽然有四种方案,但是限流是避免服务因突发的流量而发生故障,是对微服务雪崩问题的 预防。我们先学习这种模式。 当请求进…

串口中硬件流控和软件流控

流控的概念 发送端数据发送速度过快,导致接收端的缓冲区数据还没有被读出而发送端发送过来的数据覆盖了原有缓冲区的数据而提出的一种流量控制方法; 主要为了解决常用的串口通信中,由于缺少时钟线,当速度不匹配、处理能力不匹配…

以太网基础--流控技术

随着数据中心网络技术和带宽不断发展,流控技术在网络中发挥着越来越重要的作用,但一直未曾有过很大变革。直到无损网络的出现,流控技术出现新突破。作为以太网的基本功能之一,流控技术用于可以防止拥塞的情况下出现丢包&#xff0…

串口的硬件流控和软件流控

为什么需要流控? 当两台设备进行串口通信,假如他们对数据的处理速度不同。如果接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。使用流控机制时,当接收端数据处理能力饱和时,就发出“不再接收”的信号&#xff…

流控

RabbitMQ可以对内存和磁盘的使用量设置阈值,当到达阈值后,生产者将被阻塞,直到对应项恢复正常。除了这两个阈值,从2.8.0版本开始,RabbitMQ还引入了流控(Flow Control)机制来确保稳定性。流控机制…

sentinel详解——流控、降级、热点、熔断

Sentinel(哨兵)是一个面向微服务的流量控制、熔断降级的组件,支持界面化的细粒度统一配置;可以对微服务进行可视化的监控和保护;同时可和nacos、dubbo、redis等结合使用。 一、后端代码中sentinel配置 1、引入pom &l…

【微服务|Sentinel】流控规则概述|针对来源|流控模式详解<直接 关联 链路>

文章目录 流控规则一览1. 资源名2. 针对来源3. 阙值类型4. 是否集群5. 流控模式6. 流控效果针对来源介绍实现该功能步骤测试部分源码流控模式流控模式之关联流控模式之链路流控效果快速失败Warm Up排队等待我们可在簇点链路进行流控设置,点开相关资源的流控按钮即可进行流控相…

Sentinel流控

Sentinel 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 1.sentinel特性 Sentinel 具有以下特征: 丰富的应用场景: Sentinel 承接了…

CAN报文多帧,首帧,流控帧,连续帧

数据发送为单帧,所以06代表发送的数据中含有6个字节,回复为正反馈,为连续帧。10 代表连续帧的首帧,1E代表此连续帧含有30个字节,30代表此连续帧的流控制帧,21,22,23,24代…

Sentinel-限流规则(流控模式:直接、关联、链路)

一、流控模式-直接 添加规则: 测试例子分析: 启动测试 点击 察看结果树 上面测试例子,到Sentinel控制台的实时监控可以看到 二、流控模式-关联 • 关联模式 :统计与当前资源相关的另一个资源,触发阈值时,对…

Sentinel的另外三种流控模式(附代码详细介绍)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍Sentinel的其他三种流控模式,后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教👏&#…

Sentinel限流--流控模式与限流效果

文章目录 1、簇点链路2、流控入门案例3、流控模式:关联模式4、流控模式:链路模式5、流控效果:warm up6、限流效果:排队等待7、热点参数限流 1、簇点链路 簇点链路就是项目内的调用链路(controller -> servcie ->…

【sentinel】流控规则详解

流量控制规则,简称流控规则,会对资源的流量进行限制。同一个资源可以对应多条限流规则。Sentinel会对该资源的所有限流规则依次遍历,直到有规则触发限流或者所有规则遍历完毕。 限流的直接表现是抛出FlowException异常。FlowException是Bloc…

Sentinel流控规则

Sentinel流控规则 1、基本介绍 资源名:唯一名称,默认请求路径(如:http://localhost:8089/testA) 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,指定对哪个微服务进行限流 ,默认defa…

流控方案

不同的场景下所需的流控算法不尽相同,那应该如何选择适用的流控方案呢?本文分享单机及分布式流控场景下,简单窗口、滑动窗口、漏桶、令牌桶、滑动日志等几种流控算法的思路和代码实现,并总结了各自的复杂度和适用场景。较长&#…