BGP协议总结

article/2025/8/25 0:02:42

概述

BGP为Border Gateway protocol 边界网关路由协议(路径矢量)
主要作用是在AS之间传递路由信息
• 分类:EGP
• 工作机制:路径矢量协议
• 无类路由协议:支持VLSM和CIDR
• 应用层协议/7层,TCP封装,179端口号
• IGP使用networks通告路由,用度量值标识路径好坏
• BGP通告整条路径,并使用属性标识路径好坏
• BGP可通过各种路由策略实现路由控制

BGP特性

• 什么时候可以使用BGP
1、当一个AS允许其他AS的数据流量通过该AS的时候(例如运营商AS)
2、当一个AS连接多个点连接外网的时候
3、当需要对进入及离开该AS的数据做多种多样的路由策略的时候

• 什么时候不用BGP
1、不了解BGP协议或对BGP协议知之甚少的时候
2、只有一个接入点连接外网的时候
3、该路由器内存较小,CPU性能较差的时候

• 可靠更新,使用TCP179端口号,使用单播

• 触发更新,增量更新(只更新出现问题的路由条目)

• 周期发送keepalive报文,使用OPEN(60秒发送一次)(三次握手)报文建立邻居关系。Hold time 180秒

• BGP属性描述路由好坏

• BGP用于超巨型网络

BGP的三张表

邻居表(adjancy table)

BGP表(forwarding database):BGP默认不做负载均衡,会选出一条最优的,放入路由表

路由表(routing table)

使用OPEN报文建立邻居关系,将邻居信息存放于邻居表中,建立完成邻居关系后将邻居发送的更新存放于BGP表中,再将最优路由提取存放于路由表

BGP报文

在这里插入图片描述

BGP状态机

在这里插入图片描述
所有状态并非必经状态,Active描述邻接状态为问题状态

常见术语

1、 BGP的发言者:发送BGP消息的路由器叫做BGP的发言者。

2、 BGP对等体:相互交换BGP消息的路由器叫做BGP的对等体。

3、 IBGP对等体:同一个自治系统内的对等体关系。
• 建立IBGP邻接关系,满足的条件
(1)自治系统号相同
(2)定义邻居建立TCP会话
(3)IBGP邻居可达

4、 EBGP对等体:不同自治系统间的对等体关系。
• 建立EBGP邻接关系,满足的条件
(1)EBGP之间自制系统号不同
(2)定义邻居建立TCP会话
(3)neighbor中指定的IP地址要可达

BGP通告原则

• 1:对于一条BGP路由,如果一台路由器是该路由的始发路由器,该路由器会将该路由传递给其他所有IBGP对等体以及所有EBGP对等体
• 2:对于一条BGP路由,如果一台路由器不是该路由的始发路由器
1)如果对于该路由器而言该路由条目是一条EBGP路由,则该路由器会将该路由条目转发给所有IBGP对等体以及所有其他EBGP对等体
2)如果对于该路由器而言路由条目是一条IBGP路由,则该路由器会将该路由条目转发给所有EBGP对等体,而不会转发给任何IBGP对等体

IBGP/EBGP路由传递原则

• 一台BGP会话者收到一条IBGP路由,该路由器只可能将该路由传递给其EBGP对等体,而不会将该路由传递给任何其他的IBGP
• 一台BGP会话者收到一条EBGP路由,只要该EBGP路由内包含的接收者所在的AS号,则该路由会立即被丢弃

注:收到EBGP能发给所有路由,收到IBGP只能发给外部

BGP路由属性

1、 公认必遵属性:所有BGP路由器都能够识别这种属性,并且这种属性必须存在于update报文中,如果缺少这种属性,路由会出错,主要包括:origin属性、as-path属性、next-hop属性。

2、 公认可选属性:所有的BGP路由都能够识别这种属性,但是这种属性不要求一定存在于update消息中,主要包括:Local_pref属性等。

3、 可选传递:在AS之间具有可传递的属性,BGP路由器都可以不支持此属性,但它仍会接受有此属性的路由,并通告给其他的路由器,主要包括:commutity属性等。

4、 可选非传递属性:如果BGP路由器不支持此属性,则此属性可以被忽略,主要包括MED、CLUESTER_LIST属性。

Origin属性:路由的源属性,BGP路由的来源主要有三种,第一:通过引入IGP路由实现,即Incomeplete,第二:通过network方式注入BGP,即IGP,通过EGP协议学习,这个可以忽略了。

As-path:指示出了该路由信息经过了哪些AS路径,主要作用是保证AS间无环路,一般当本自治系统的路由离开自治系统的时候会添加本自治系统的号码,BGP路由选路的时候,会优先选择AS-PATH短的路由。

Next-hop属性:下一跳属性,需要注意的是当边界设备学习到EGP对等体发布的路由的时候,传递给IBGP对等体的时候,不会修改路由的下一跳。

5、 local_pref:本地优先级,当一个AS有多条到达外部AS的路径的时候,BGP会优先选择本地优先级高的路由,本地优先级只在本AS内有效,只能影响进入本AS的流量,不会影响离开本AS的流量。

6、 MED属性:BGP的MED属性相当于IGP协议的度量值,当有多条路由进入本AS的时候,用来告知EBGP对等体哪条路由最优,默认的MED值为100,值越小越优。

需要注意的是med值仅在两个AS之间传递,不会传递到第三个AS。

7、 preferred-value值:首选值,为从不同对等体接收的路由分配不同的preferred-value值,从而可以改变指定对等体学到路由的优先级,这是h3c的私有属性,改属性仅在本地有效,不随路由信息传播。

解决BGP数据层面路由黑洞的方式

• 解决BGP数据层面路由黑洞的方式
• 1、在AS内使用物理链路全互连
• 2、在AS内对IBGP对等体邻接关系的全互连
• 3、将AS内部的边缘路由上的BGP路由重分发进IGP中
• 4、在AS内部的边缘路由器之间建立TUNNEL
• 5、在AS内所有路由器使用MPLS(推荐)

ICMP重定向

• 当一台路由器通过一个接口收到了一个报文,该路由器查表发现转发这个报文需要将其通过接收接口再次转发出去
1)将该报文转发出去
2)给该报文的发送者发送ICMP重定向报文告知该报文发送者以后发送报文直接发送给谁

• 当一台BGP speaker将一条BGP路由传递给同MA网段的下一跳EBGP邻居时,该路由器如果发现该路由条目的上一跳邻居传递该路由的接口的IP地址和下一跳邻居接收该路由的接口IP地址在同一个IP子网段,此时该路由器会主动将该路由条目的下一跳地址改写为上一跳邻居的发送路由接口的IP地址

关于BGP路由条目下一跳地址

• 1、路由器将其本地路由通告进BGP进程,则对该被通告路由,该路由器本地BGP表中关于这些路由的下一跳为0.0.0.0
• 2、路由器将通过IGP获悉的路由通告进BGP进程,则该路由在该路由器的BGP表中下一跳将继承相应的IGP路由的下一跳地址
• 3、路由器将其本地通告的本地路由传递给其任何BGP对等体,该路由条目下一跳改为本地对于这些邻居的更新源
• 4、路由器通过EBGP学习到路由,则该路由在传递给IBGP对等体时,默认情况下一跳不变(next除外)
• 5、路由器将任何BGP路由通告给其EBGP对等体,则路由的下一跳会变成该路由器对于该邻居的BGP更新源地址

BGP配置

在这里插入图片描述
R4:
neighbor 24.1.1.2 remote-as 123 指定R2邻居地址及AS号

R2:
neighbor 24.1.1.4 remote-as 4 //指定R4邻居地址及AS号
neighbor 3.3.3.3 remote-as 123 //指定R3邻居地址及AS号
neighbor 3.3.3.3 update-source Loopback0 //强行更改OPEN包源地址为环回口
neighbor 3.3.3.3 next-hop-self //告知邻居接收到本地发送的路由下一跳指定为本地

R3:
neighbor 2.2.2.2 remote-as 123
neighbor 2.2.2.2 update-source Loopback0
neighbor 5.5.5.5 remote-as 5
neighbor 5.5.5.5 ebgp-emultihop 255 //默认在EBGP邻居关系中报文只专一跳,强行更改为255跳
neighbor 5.5.5.5 update-source Loopback0 //修改更新源地址

show 命令

• show ip bgp summary查看BGP邻居表
• show ip bgp neighbors查看邻居详细信息
• sho tcp brief查看BGP路由所使用端口

BGP路由不优及不加表原因

• 如果BGP表中的一条BGP路由没有标识>,则该路由不是最优的,不是最优的路由没有资格加入路由表并且没有资格被传递给任何其他的邻居路由器。
• 导致BGP路由不优的原因
• 1:BGP路由的下一跳不可达
• 2:同步原则未关闭
• 当一台路由器通过一个IBGP对等体收到了一条IBGP路由,该路由条目不能被放入路由表也不能被传递给任何邻居,除非该路由器同时通过某种IGP获悉了该路由条目

BGP选路

1、Weight-权重属性
• weight(权重属性)
• 1、本地有效,发送路由不携带
• 2、下一跳地址为0.0.0.0,默认值为32768.邻居通告的无论IBGP或EBGP都为0,本地通告来源于IGP的路由也为0
• 3、属性值越大越优先
• 4、该属性思科私有
在这里插入图片描述
• R3(config-router)#neighbor 1.1.1.1 weight 1从该邻居收到的BGP路由权重置1后加表
• ip prefix-list 10(前缀列表名字) permit 4.4.4.0/24
• R3(config)#route-map WEI(路由map的名字) permit 10(序号)
• match ip address prefix-list 10(引用的前缀列表)
• set weight 2
• R3(config)#route-map WEI permit 20
• R3(config-router)#Router bgp 1
• neighbor 1.1.1.1 route-map WEI in

2、本地优先级
• local preference(本地优先级)
• 1、只能在一个AS内传递(只能在传递IBGP路由时生效)
• 2、无论什么路由缺省都为100
• 3、属性值越大越优先
使用原因:
当一个AS内有多台出口路由器时,在边界路由器修改本地优先级告知AS内部路由器访问外部AS网络时优先从哪个出口路由器出去。

• R1(config-router)#bgp default local-preference 101全局配置,影响范围较大
• 建议在R1边界上入(出)站接口方向修改
• ip prefix-list 10 seq 5 permit 4.4.4.0/24
• route-map LP permit 10
• match ip address prefix-list 10
• set local-preference 101
• route-map LP permit 20
• neighbor 3.3.3.3 route-map LP out
• (OR)neighbor 14.1.1.4 route-map local in

3、优先本地路由-下一跳全0
在这里插入图片描述
• 如上图,R5通告了5网段路由,R6拥有静态5网段且在BGP中通告该路由,那么R6的BGP表中会优选R6,因为下一跳全0,且无法更改。
• 一般情况不会出现此类现象,若发现有此现象应考虑是否出现路由环路。

4、AS path
• 1、全网传递,在AS之间可配置增加长度
• 2、比较长度,与AS值大小无关
• 3、越长越差,越短越好
• 4、出方向修改AS长度,下游邻居收到的路由修改后的AS在右,即是路由条目先加入了要修改的AS,然后加入原属的AS号再发送给邻居,入方向则相反。
• neighbor 24.1.1.2 allowas-in该命令为不管收到的路由有没有包含本地AS都收入
• bgp maxas-limit 10接收的路由包含最大AS长度为10
• bgp bestpath as-path ignore隐藏命令,不比较AS长度

• R4上修改:
• access-list 10 permit 4.4.4.0
• route-map AP permit 10
match ip address 10
set as-path prepend 4 4 4 4增加4个4
• route-map AP permit 20
• neighbor 24.1.1.2 route-map AP out
• 增加AS长度建议增加本地的AS号,因为路由传递携带的AS号边界路由收到后如果查到该路由所携带的AS内有本地AS号会拒收,影响路由传递

5、起源属性
• 1、公认强制属性,全网传递
• 2、 IGP优于EGP优于 incomplete

• R4上修改:
• ip prefix-list 10 seq 5 permit 4.4.4.0/24
• route-map OR permit 10
match ip address prefix-list 10
set origin incomplete 修改为?
• route-map OR permit 20
• neighbor 24.1.1.2 route-map OR out调用

6、MED多出口鉴别器
• 1、在邻居AS内传递(EBGP邻居之间)
• 2、IETF公认值默认最大,思科默认为0
• 3、越小越好
• 4、给EBGP邻居传递路由的时候,通过设置MED值来告知邻居发包到本AS的时候使用哪条路径进入(与本地优先级相反)
• 5、经过EBGP路由器之后MED值恢复默认值,仅存在EBGP邻居之间
• 6、思科设备认为metric就是MED

• R3通告环回口路由,查看R4的BGP表,假定R4为运营商设备不能动,要达到R4去往3网段走R2
• R1上修改MED值,默认都为0,将R1改大走R2
• access-list 10 permit 3.3.3.0
• route-map MED permit 10
match ip address 10
set metric 100
• route-map MED permit 20
• neighbor 14.1.1.4 route-map MED out

MED属性
• 思科与公认标准所定制MED值各不相同,如果思科与其他厂商一起使用,该如何保证MED属性相同?
• R4(config-router)#bgp bestpath med missing-as-worst
• 使用该命令需要在AS之间的所有思科路由器上启用,调整MED默认值为最大值4294967295
• 路由器通过同一个AS的多个EBGP邻居传递的同一路由携带MED会比小,如果是通过不同AS的多个邻居收到同一网段的路由不会比较
• bgp always-compare-med此命令强制比较不同AS传递过来的相同路由的MED值

打破IBGP路由传递原则-路由反射器

在这里插入图片描述
路由反射器router reflector
1、RR收到了一条EBGP路由,会将其转发给所有其他EBGP对等体以及所有IBGP对等体(包含client以及non-client)
2、RR收到了一条IBGP路由(client发的),RR会将其转发给所有其他的RRC以及所有IBGP的non-client以及所有的EBGP对等体
3、RR收到了一条IBGP路由(non-client发的),RR会将其转发给所有client以及所有EBGP对等体,但不会传递给non-client

路由反射器配置
• 使用BGP选路拓扑,R2与R4断开EBGP邻接关系,此时R2收不到R4的所有路由,通过配置路由反射器让R2学习到R4通告的路由。
• R3配置为RR,R2配置为RRC
• R3(config-router)#neighbor 2.2.2.2 route-reflector-client
RR反射的路由在转发给邻居的时候不改变任何参数

打破IBGP路由传递原则-联邦

在这里插入图片描述
1、所有联邦路由器启用BGP进程的AS号都是子AS号,联邦建邻居指的是对方的子AS号,外部路由指联邦内BGP邻居指的是主AS号
2、所有联邦内路由器都要宣称自己属于主AS
3、联邦内路由器要建立联邦内EBGP连接时需要指定本地和什么子AS邻接

联邦配置-R1
• R1配置:
• router bgp 65001
• bgp router-id 1.1.1.1
• bgp confederation identifier 1宣称所属主AS
• neighbor 3.3.3.3 remote-as 65001
• neighbor 3.3.3.3 update-source Loopback0
• neighbor 3.3.3.3 next-hop-self
• neighbor 14.1.1.4 remote-as 4

联邦配置-R2
• router bgp 65002
• bgp router-id 2.2.2.2
• bgp confederation identifier 1宣称所属主AS
• bgp confederation peers 65001 //写对端AS号
该命令为与R3所在AS建立逻辑EBGP关系
• network 2.2.2.0 mask 255.255.255.0
• neighbor 3.3.3.3 remote-as 65001
• neighbor 3.3.3.3 ebgp-multihop 255多跳
• neighbor 3.3.3.3 update-source Loopback0

联邦配置-R3
• router bgp 65001
• bgp router-id 3.3.3.3
• bgp confederation identifier 1宣称所属主AS
• bgp confederation peers 65002 //写对端AS号
该命令为与R2所在AS建立逻辑EBGP关系
• neighbor 1.1.1.1 remote-as 65001
• neighbor 1.1.1.1 update-source Loopback0
• neighbor 2.2.2.2 remote-as 65002
• neighbor 2.2.2.2 ebgp-multihop 255多跳
• neighbor 2.2.2.2 update-source Loopback0


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

相关文章

BGP协议学习笔记——BGP基础

BGP协议学习笔记——BGP基础(BGP概念、BGP报文、BGP状态机、BGP关系建立、BGP路由通告) 说明:本文学习笔记整理自网络、华为公开产品文档、华为公开PPT及部分的自我理解 一、BGP简介 BGP定义 边界网关协议BGP(Border Gateway …

什么是BGP协议?

什么是BGP协议? BGP(Border GatewayProtocol)是一种在自治系统之间动态交换路由信息的路由协议。一个自治系统的经典定义是在一个管理机构控制之下的一组路由器,它使用IGP和普通度量值向其他自治系统转发报文。 在BGP中使用自治系统这个术语是为了强调这…

BGP 边界网关路由协议

文章目录 一、BGP概述1、自治系统(AS,autonomous system)2、动态路由的分类(1)自治系统分类(2)协议类型分类 3、BGP的概念4、BGP的特征 二、BGP工作原理1、BGP邻居关系(1&#xff09…

BGP协议原理与配置

AS(自治系统)是指由同一个技术管理机构管理,使用统一选路策略的一些路由器的集合。 私有自治系统,类似于私网那个IP地址,归属个人,不会连接到公网 国际管理自治系统 AS的内部:使用IGP&#xff0…

浅议BGP(一文看懂BGP)

今天主要介绍一下BGP的相关基础知识,文章浅显易懂,适合对BGP完全没有了解的同学。 一、先导知识 为了更好的介绍BGP,下面先对几个概念进行简单的介绍: 1、AS AS、即Autonomous System,自治系统。AS可以简单的理解为一…

一、BGP协议原理

BGP协议原理 一、BGP概述二、BGP特点二、BGP基本术语2.1.BGP发言者(BGP Speaker)2.2.Router ID(RID)2.3.BGP对等体(BGP Peer)2.3.IBGP对等体(Internal BGP Peer)2.4.EBGP对等体&…

BGP协议基本配置

边界网关协议BGP实现自治系统AS的路由可达 EBGP:运行于不同 AS 之间的 BGP 称为 EBGP。为了防止 AS 间产生环路,当 BGP 设备接收 EBGP对等体发送的路由时,会将带有本地 AS 号的路由丢弃。 IBGP:运行于同一 AS 内部的 BGP 称为 I…

BGP协议介绍

一. BGP协议概述 BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被…

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排队等待我们可在簇点链路进行流控设置,点开相关资源的流控按钮即可进行流控相…