一、概述:

A、产生背景和基础:

1、BGP协议出现背景:

OSPF、ISIS路由协议在网络中已经广泛使用,但是随着网络规模的扩大,路由条目也随增加,IGP协议已经无法管理大规模网络了。因此出现了AS的概念。

官方解释:AS是指在同一组织管理下,使用统一选路策略设备的集合。简单来说:就是你可以把一个网络中的不同的设备划分到不同的组(AS)中,或者都划分在一个组中,那么一个组中的这些设备具备相同的路由协议。

Untitled

比如你可以将企业总部网络划分在一个AS中,企业的分部网络划分在一个AS中。不同的AS可以运行不同的路由协议。不同AS的网络需要通信时,采用BGP路由协议。那么为什么不能够通过IGP(ISIS、BGP)进行通信呢。正如下图所示:

Untitled
Untitled

2、BGP协议基础:

BGP(Border Gateway Protocol,边界网关协议)是一种用于AS(Autonomous System,自治系统)之间的动态路由协议。AS是拥有同一选路策略,在同一技术管理部门下运行的一组路由器.

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

BGP的AS是指在一个组织机构管辖下拥有相同选路策略的IP网络,在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,BGP网络中的每个AS都被分配了一个唯一的AS号,用于区域不同的AS。

(2)BGP的AS号分为2字节和4字节的AS号,

2字节AS号范围1----65535的整数,

4字节AS号范围2----4 294 967 295的整数(可以有不同的表示格式)

Untitled

早期发布的三个版本分别是BGP-1(RFC 1105)、BGP-2(RFC 1163)和BGP-3(RFC 1267),当前使用的版本是BGP-4(RFC 1771,已更新至RFC 4271)。BGP-4作为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider,因特网服务提供商)之间。

BGP虽然是一种动态路由协议,但它实际上本身并不产生路由、不发现路由、不计算路由,其主要功能是完成最佳路由的选择并在BGP邻居之间进行最佳路由的传递。路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。

BGP使用TCP作为其传输层协议(监听端口号为179),本地端口号任意,提高了协议的可靠性,且不需要专门机制来确保连接的可控性。支持CIDR 无类域间路由,路由聚合需手动配置,同时提供了丰富的路由策略;也易于扩展。

BGP有2个重要属性,分别为AS-PATH 和 NEXT-HOP,通过这2个属性避免了环路的发生。2个属性解释如下:

  • AS-PATH。该属性包含了前缀的通告已经经过的那些 AS,即去往该目的前缀时需要经过的 AS 的列表,也称为通路向量,这使接受者能够了解去往目的网络的通路信息。因此 BGP 协议有时也称为“路径向量”协议。当一个前缀传送到一个 AS 时,该 AS 将它的 ASN 增加到该前缀的 AS-PATH 中。路由器使用该 AS-PATH 属性来检测和防止循环通告;特别是如果一台路由器看到它的AS 被包括在该路径列表中,它将拒绝该通告。

  • NEXT-HOP。指开始 AS-PATH 的路由器接口地址。该属性的重要性体现在,当某 AS 中的路由器知道到相同前缀 x xx 具有两条不同的路由时,这两条路由具有相同的 AS-PATH,但具有不同的 NEXT-HOP 值对应于不同的链路,使用 NEXT-HOP 值和 AS 内部路由选择算法,路由器能够确定到每条对等链路的路径的费用,然后使用热土豆路由选择来决定适当的接口。

Untitled

AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。

AS内部:BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路。

BGP 按照运行方式分为 EBGP(External/Exterior BGP)和 IBGP(Internal/Interior BGP)。

1、EBGP:运行于不同 AS 之间的 BGP 称为 EBGP。为了防止 AS 间产生环路,当 BGP 设备接收 EBGP 对等体发送的路由时,会将带有本地 AS 号的路由丢弃。

2、IBGP:运行于同一 AS 内部的 BGP 称为 IBGP。为了防止 AS 内产生环路, BGP 设备不将从IBGP 对等体学到的路由通告给其他 IBGP 对等体,并与所有 IBGP 对等体建立全连接。为了解决 IBGP 对等体的连接数量太多的问题, BGP 设计了路由反射器和 BGP 联盟。

如果在AS内一台BGP设备收到EBGP邻居发送的路由后,需要通过另一台BGP设备将该路由传输给其他AS,则推荐使用IBGP。

Untitled

B、Router-ID、BGP发言者(BGP Speaker)、BGP对等体(BGP Peer)

1、BGP Router-ID:

Router-ID(RID) 是用来唯一标识一台运行 BGP(或其他路由协议,如OSPF、IS-IS)的路由器的一个 32位标识符,通常写作 IPv4 地址形式(例如:1.1.1.1)。

注意:它只是“长得像”IP地址,但不一定必须是设备上实际存在的IP地址,只是一个标识符。其作用如下:

  • 标识 BGP 邻居:BGP 建立对等体关系时,会以 Router-ID 作为唯一身份标识。

  • 路径选择参考:在多条路径具有相同属性时,BGP 会选择 Router-ID 最小的邻居 作为下一跳路径(最后一条决策规则)。

  • 环路检测:BGP 通过 Router-ID 来判断路由是否从自身学习到,从而避免环路。

Router-ID 的变化与生效时机

  • 如果手动修改了 Router-ID,BGP进程需要重启才能生效(例如 reset bgp all 或重启进程)。

  • 修改后,所有已建立的 BGP 邻居关系将重新建立。

优先级

选取规则

说明

1️⃣

手动配置 router-id

最优先(推荐显式配置)

2️⃣

最高的 Loopback 接口IP 地址

若未手动配置

3️⃣

最高的物理接口 IP 地址

若无 Loopback 接口

4️⃣

系统自动生成随机ID(部分厂商)

极端情况

项目

说明

唯一性

同一个 AS 内的每台设备应具有唯一的 Router-ID,否则邻居建立可能异常。

稳定性

不应随接口上下线而改变,因此推荐绑定 Loopback。

与其他协议的关系

OSPF、IS-IS 等也使用 Router-ID,通常建议全网统一分配逻辑。

环路检测

若收到 BGP 更新中包含自己的 Router-ID,则直接丢弃该路由。

2、邻居角色介绍:

发送BGP消息的路由器称为BGP发言者(BGP Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP发言者。当BGP发言者收到来自其它自治系统的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给自治系统内所有其它BGP发言者。简而言之就是运行了BGP协议的路由器,就是BGP发言者。

Untitled

自治系统中,运行 BGP 协议的路由器称为 BGP 发言人(BGP speaker)。

  • 每个 BGP 发言人都有一个 4 字节的 BGP 标识符(BGP identifier);

  • 标识符在 BGP 发言人启动过程中确定,通常是其某个接口的 IP 地址。

通过TCP连接建立邻居,那么这两个 BGP 发言人互称为对等发言人(peer)。

  • 内部对等发言人(internal peer;IBGP):位于同一个 AS。如R1和R2。

  • 外部对等发言人(external peer;EBGP):位于不同 AS。如R1和R3。

Untitled

C、报文类型:

BGP存在5种不同类型的报文,分别是open、update、notification、keepalive、route-refresh。不同类型的报文具有相同的头部

Untitled

报文类型

发送时机

是否周期性

作用(功能)

携带的关键参数(中文解释)

Open

在 TCP 三次握手成功后,BGP 对等体之间互相发送 Open 报文,用于启动 BGP 会话。

❌ 否

- 建立 BGP 邻居关系- 协商连接的基本参数,确保双方兼容

版本号:当前使用 BGP 版本 4,双方必须一致,否则断连- 本地 AS 号:标识发送方所属的自治系统(AS),用于判断是 EBGP(不同 AS)还是 IBGP(相同 AS)- 保持时间(Hold Time):若在此时间内未收到对方的 Keepalive 或 Update 报文,就认为连接失效(默认 180 秒)- BGP Router ID:通常是设备上最大的 loopback 地址,用于唯一标识一台 BGP 路由器- 可选参数:如是否支持路由刷新(Route-Refresh)、多协议扩展(MP-BGP)等能力协商

Update

- 初始建立 BGP 邻居时,发送全部路由- 路由发生变化时(新增、删除、修改)立即发送

❌ 否(事件驱动

- 向对等体通告新的可达路由(NLRI)- 撤销已失效的路由(Withdrawn Routes)- 是 BGP 传递路由信息的核心报文

撤销路由列表:列出需要从路由表中删除的不可达前缀(仅包含 IP 前缀和掩码,无属性)- 路径属性(Path Attributes):描述路由的特性,用于选路和策略控制,常见有:  • AS_PATH:经过的 AS 编号列表,用于防环和选路(越短越优)  • NEXT_HOP:下一跳 IP 地址  • ORIGIN:路由起源(IGP > EGP > Incomplete)  • LOCAL_PREF:本 AS 内优先选择的出口路径(仅 IBGP 传播)  • MED:建议外部 AS 进入本 AS 时选择哪个入口(越小越优)  • COMMUNITY:给路由打标签,便于统一策略(如 no-export)- NLRI(网络层可达信息):本次通告的可达路由前缀列表(如 192.168.1.0/24)

Notification

一旦检测到严重错误,立即发送,随后关闭 BGP 连接。常见场景:- Open 参数不匹配- Hold Time 超时- Update 报文格式错误- 认证失败等

❌ 否

- 报告错误原因- 立即中断 BGP 连接- 用于故障定位和安全防护

错误码(Error Code):表示错误大类,如:  • 1 = 报文头错误  • 2 = Open 报文错误  • 3 = Update 报文错误  • 4 = Hold Timer 超时  • 5 = 状态机错误等- 错误子码(Error Subcode):进一步说明具体问题,如“不支持的版本号”、“AS 号不匹配”、“属性缺失”等- 数据(Data):可选,包含出错报文的部分内容,用于排错分析

Keepalive

在 BGP 连接进入 Established 状态 后,周期性发送,用于确认连接正常。

✅ 是(默认每 60 秒发送一次)(发送间隔 = Hold Time / 3)

- 维持 BGP 邻居关系- 类似“心跳包”,防止因无数据传输而误判连接中断

无任何参数- Keepalive 是一个空报文(仅 19 字节),不携带任何路由或属性信息- 仅用于保活

Route-Refresh

手动触发,通常在修改了入方向策略后,使用命令(如 refresh bgp all)请求对等体重新发送路由。

❌ 否(手动或策略触发

- 请求对等体重新发送某地址族的路由信息- 实现 软重配(soft reconfiguration),无需重启 BGP 会话,避免路由中断

地址族标识符(AFI):指明网络层协议类型  • AFI=1 → IPv4  • AFI=2 → IPv6- 子地址族标识符(SAFI):指明路由类型  • SAFI=1 → 单播(unicast)  • SAFI=2 → 组播(multicast)- 刷新类型:正常刷新 or 删除所有前缀再重发

D、邻居建立:

1、BGP状态机、邻居类型:

BGP的状态有idle、connect、active、opensent、openconfirm、established六种状态。

Untitled

BGP邻居建立优化:为了增加稳定性,通常建议使用回环口来建立邻居

  • 更新源:建立邻居和邻居学习到的路由的下一跳

  • 多跳:EBGP邻居建立默认需要直连,因为默认TTL=1,如果非直连,必须修改TTL

BGP 邻居建立条件:

  • 邻居关系建立在TCP连接基础上,因此邻居不一定需要直连,可以通过IGP路由协议(OSPF、RIP)或静态邻居路由来提供TCP连接的可达性(区别于其他IGP)

  • 本地配置中的邻居所在AS号=邻居配置中的声明所在AS号

  • 报文源IP=对方配置的邻居IP(这个源IP也叫更新源,也将作为路由的下一跳)。

  • BGP的邻居是通过单播的方式建立的,所以首先需要在BGP进程下手动配置邻接地址,没有自动发现邻居的机制,只能手动建立(区别于其他IGP)

  • 一台BGP路由器只能运行在一个AS内(区别于其他IGP)

  • 邻居类型分为IBGP和EBGP:

    IBGP :内部BGP邻居(建立邻居的双方属于同一AS叫IBGP邻居关系) ,一般使用Loopback接口的IP地址

    EBGP:外部BGP邻居(建立邻居的双方属于不同的AS叫EBGP邻居关系),一般使用直连口的IP地址

2、邻居建立过程**:**

Untitled

定时器

默认值

作用

备注/记忆点

Keepalive Interval

60s

邻居间周期发 Keepalive 报文,维持会话

一般配置为 Hold Time 的 1/3

Hold Time

180s

若在此时间内未收到 Keepalive/Update,则认为邻居失效

默认 = 180s;邻居协商时取两端 最小值

ConnectRetry Timer

120s

TCP 建立失败后,重新尝试连接的间隔

避免死等

IdleHold Timer

60s(部分厂商默认)

邻居失败后等待一段时间再重试

控制频繁重连

MinRouteAdvertisement Interval (MRAI)

30s(eBGP)/ 5s(iBGP)

限制相同前缀更新的最小间隔,避免频繁 Update

Cisco/Huawei 默认相同

BGP Scanner Timer

60s

定期扫描路由表,检查下一跳可达性

很多题会考

(1)Idle状态是BGP初始状态。在Idle状态下,BGP拒绝对等体发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。Start事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起的。任何状态中收到Notification报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态。

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

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

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

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

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

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

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

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

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

(4)Opensent状态,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。

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

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

(5)OpenConfirm状态:BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。

(6)在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状态。

在除Idle状态以外的其他五个状态出现任何ERROR的时候,BGP状态机就会回退到Idle状态。在BGP对等体建立的过程中,通常可见的三个状态是:Idle,Active,Established。Idle状态下,BGP拒绝任何进入的连接请求,是BGP的初始状态。

3、BGP 邻居重置的各类情况汇总

类别

操作 / 情况

是否会导致邻居重置

说明

基础配置

Router ID 改变

✅ 会重置

BGP 邻居依赖 RID 标识

本地 AS 号改变

✅ 会重置

AS 号变化,邻居不再匹配

邻居 IP / 邻居 AS 号 改变

✅ 会重置

邻居配置必须完全匹配

邻居认证(MD5)改变

✅ 会重置

认证不一致,TCP 会话失败

能力协商

Route-Refresh / GR / 4-Byte ASN 等能力开关

✅ 会重置

Capabilities 协商不同需重建会话

链路 & 会话

TCP 连接断开

✅ 会重置

BGP 基于 TCP 179

Hold Timer 超时

✅ 会重置

对端 Keepalive/Update 超时

手工执行 clear/reset 命令

✅ 会重置

强制断开

邻居参数

update-source / ebgp-multihop 等变化

✅ 会重置

邻居底层连接属性改变

策略相关

Import/Export Policy 改变

❌ 不会重置

仅影响路由过滤/传递,不影响会话

route-map、prefix-list 修改

❌ 不会重置

策略变更不需要重建邻居

本地路由聚合、属性修改

❌ 不会重置

仅改变路由通告内容

其他机制

Dampening 参数修改

❌ 不会重置

仅影响抑制策略

Soft Reconfiguration (soft-reconfig)

❌ 不会重置

可用 soft-reconfigroute-refresh 更新路由而不重建会话

4、TTL值对建立邻居关系的影响:

  • TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。

  • TTL值240~255为UNIX/Linux系统,TTL值100~130为windows系统。

  • 通过TTL值可以推算出数据包已经经过了多少个路由:源地点TTL值减去返回的TTL值。

Untitled

E、路由表:

1、路由表由来:

BGP路由是通过BGP命令通告而成的,协议本身不发现路由。且BGP 与 IGP 在设备中使用不同的路由表,为了实现不同 AS 间相互通讯, BGP 需要与 IGP 进行交互,即 BGP 路由表和 IGP 路由表相互引入

1、BGP引入IGP路由:BGP 协议本身不发现路由,因此需要将其他路由引入到 BGP 路由表,实现 AS 间的路由互通。当一个 AS 需要将路由发布给其他 AS 时, AS 边缘路由器会在 BGP 路由表中引入 IGP 的路由。为了更好的规划网络, BGP 在引入 IGP 的路由时,可以使用路由策略进行路由过滤和路由属性设置,也可以设置 MED 值指导 EBGP 对等体判断流量进入 AS 时选路。

2、BGP 引入路由时支持 Import 和 Network 两种方式:

  • Import 方式是按协议类型,将 RIP 路由、 OSPF 路由、 ISIS 路由等协议的路由引入到 BGP 路由表中。为了保证引入的 IGP 路由的有效性, Import 方式还可以引入静态路由和直连路由,其命令格式与在RIP中重分发OSPF差不多。

  • Network 方式是逐条将 IP 路由表中已经存在的路由(非BGP)引入到 BGP 路由表中,比 Import 方式更精确。和OSPF中使用network命令的方式大同小异,只不过在BGP宣告时,只需要宣告网段+掩码数即可,如:network 12.12.0.0 16。

3、IGP引入BGP路由:当一个 AS 需要引入其他 AS 的路由时, AS 边缘路由器会在 IGP 路由表中引入 BGP 的路由。为了避免大量 BGP 路由对 AS 内设备造成影响,当 IGP 引入 BGP 路由时,可以使用路由策略,进行路由过滤和路由属性设置。

在BGP网络中,本地生成的路由可能存在多种途径,那么当本地存在多种途径学习到相同BGP路由时,优先级次序依次如下:手动聚合>自动聚合>network>Import

Untitled
Untitled

2、路由通告原则:

  1. 连接建立时,BGP Speaker只把本身用的最优路由通告给对等体。

  2. 多条路径时,BGP Speraker只选择最优的路由放入路由表。

  3. BGP Speraker从EBGP获得路由会向它所有的BGP对等体通告(包括EBGP和IBGP)。

    • 通告给EBGP时,下一跳为自己。(注:如果通告路由的EBGP邻居需要接收的的EBGP邻居在同一网段,则通告时不修改下一跳。)

    • 通告给IBGP时,不更改下一跳。防止次优路径。

  4. BGP Speraker从IBGP获得的路由不会通告给其他的IBGP邻居。

    • IBGP的水平分割原理:从一个IBGP邻居收到的路由条目不会再通告给其他IBGP邻居。

    • 如果想让所有的IBGP邻居都能收到路由,有三种解决方案:全互联(每两台设备之间都建立IBGP邻居)、RP(路由反射器)、联盟

  5. BGP与IGP的同步。从IBGP邻居学来的路由信息,所有厂商同步功能默认关闭。华为不支持开启,思科可以开启:

    • 如果同步关闭:会将从IBGP学到的路由传给eBGP邻居

    • 如果同步开启:BGP不将从IBGP对等体获得的路由通告给它的EBGP对等体,除非该路由信息也能通过IGP获得。先查找自己的IGP。如果IGP里面有这个网络,就把这个网络传给eBGP;如果IGP里面没有这个网络,就不会传给eBGP邻居。

    • BGP同步规则的目的:防止一个AS(不是所有的路由器都运行bgp)内部出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由

3、接收路由处理方式:

阶段

作用

存储位置

处理特点

1. 接收

接收邻居 UPDATE 消息

Adj-RIB-In

所有路由先存储,未做可达性检查

2. 可达性检查

检查下一跳是否可达

Adj-RIB-In

不可达的路由直接丢弃,但不会将其注入到 IP 路由表

3. 策略处理

应用路由策略(过滤、Weight、LocalPref、AS_PATH 等)

Adj-RIB-In → Loc-RIB

通过策略的路由才能进入下一步

4. 最佳路由选择

同前缀多条路由中选出最佳

Loc-RIB

按 Weight → LocalPref → AS_PATH → 等顺序选择最佳路由

5. 安装到路由表

安装到本地 IP RIB/FIB,用于转发

IP RIB / FIB

只有可达且最佳的路由才安装,进行实际转发

二、路由属性:

A、路由属性的分类:

BGP路由属性是一组参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。 在 BGP 路由表中,到达同一目的地可能存在多条路由。此时 BGP 会选择其中一条路由作为最佳路由,并只把此路由发送给其对等体。BGP 为了选出最佳路由,会根据 BGP 的路由优选规则依次比较这些路由的 BGP 属性。事实上,所有的BGP路由属性都可以分为以下四类:

  • 公认必须遵循(Well-known mandatory):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错。

  • 公认可选(Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。

  • 可选过渡(Optional transitive):在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。

  • 可选非过渡(Optional non-transitive):如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。

属性名称

属性代码

类型

可选性分类

常见属性值 / 说明

ORIGIN

1

基本

必选/强制(Well-known mandatory)

IGP(0)、EGP(1)、INCOMPLETE(2)

AS_PATH

2

基本

必选/强制

一系列经过的AS号路径,影响路径选择

NEXT_HOP

3

基本

必选/强制

下一跳IP地址(通常是EBGP邻居地址)

MED(Multi-Exit Discriminator)

4

可选

可选非传递(Optional non-transitive)

值越小越优,常用于出口选路,,默认值是0,只能传递1个AS

LOCAL_PREF

5

基本

必选/可传播(Well-known discretionary)

值越高越优,常用于入站路径选择

ATOMIC_AGGREGATE

6

基本

必选/可传播

表示路由被聚合过,路径信息不完整

AGGREGATOR

7

可选

可选可传递(Optional transitive)

标明聚合者的AS号和IP地址

COMMUNITY

8

可选

可选可传递

常见如:no-export、no-advertise、自定义标签

ORIGINATOR_ID

9

可选

可选非传递

反射器场景用于防止环路(Route Reflector)

CLUSTER_LIST

10

可选

可选非传递

标记路由经过的RR Cluster,防止反射环路

MP_REACH_NLRI

14

扩展

必选(支持IPv6等)

多协议扩展,用于携带下一跳及前缀

MP_UNREACH_NLRI

15

扩展

必选

用于撤销多协议路由

EXTENDED COMMUNITY

16

可选

可选可传递

比普通社区支持更多类型和功能(VPN、RT、SoO)

AIGP(Accumulated IGP Metric)

26

可选

可选可传递

表示路径的累积IGP代价,用于优化流量路径

LARGE COMMUNITY

32

可选

可选可传递

类似社区,但支持更大编号(::)

Preferred-Value

只能在路由器本地配置,而且只影响本设备的路由优选。该属性不会传递给任何BGP对等体,华为特有,0~65535;值越大,则路由越优先

B、属性解析:

1、源(ORIGIN)属性:

它标识了BGP路由的起源。根据路由被引入BGP的方式不同,存在三种类型的Origin。当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete。

Untitled

2、AS_PATH 属性:

AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS号。当BGP将一条路由通告到其他AS时,便会把本地AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。

当BGP Speaker传播自身引入的路由时:

  • 当BGP Speaker将这条路由通告到EBGP对等体时,便会在Update报文中创建一个携带本地AS号的AS_Path列表。

  • 当BGP Speaker将这条路由通告给IBGP对等体时,便会在Update报文中创建一个空的AS_Path列表。

当BGP Speaker传播从其他BGP Speaker的Update报文中学习到的路由时:

  • 当BGP Speaker将这条路由通告给EBGP对等体时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP设备根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。

  • 当BGP Speaker将这条路由通告给IBGP对等体时,不会改变这条路由相关的AS_Path属性。

Untitled

使用Route-Policy修改BGP路由的AS_Path属性时,可以使用以下三种方式:

命令格式

动作类型

参数说明

效果示例

apply as-path { <as-number> } +

追加 AS 号

<as-number>:需追加的 AS 号(支持 16 位 AS 号:1-65535;32 位 AS 号:0.0-65535.65535)- +:表示在原 AS 路径末尾追加指定 AS 号

原 AS 路径:200 300,执行apply as-path 400 +后,新路径:200 300 400

apply as-path { <as-number> } prepend

前置 AS 号

prepend:表示在原 AS 路径开头(紧邻本地 AS 号之后)插入指定 AS 号- 支持重复插入同一 AS 号(如prepend 100 100

原 AS 路径:200 300,执行apply as-path 100 prepend后,新路径:100 200 300

apply as-path none

清空 AS 路径

none:删除路由原有的所有 AS 路径信息,仅保留本地 AS 号(作为新的路径起点)

原 AS 路径:200 300,执行apply as-path none后,新路径:本地AS号(如100

核心作用

具体说明

典型应用场景

1. 调整路由选路优先级

利用 BGP 选路规则中 “AS 路径长度越短,路由越优先” 的特性,通过增加 / 删除 AS 路径长度,改变路由的优选顺序

- 希望本地发布的路由在远端 AS 中更优先:删除冗余 AS 路径,缩短路径长度- 不希望某条路由被优先选择:为其追加 AS 号,延长路径长度

2. 实现路由过滤(间接)

通过 “AS 路径防环机制”(BGP 不接收包含本地 AS 号的路由),为路由追加本地 AS 号,间接阻止路由回传

- 防止 EBGP 邻居发送的路由经其他 AS 回传至本地,导致路由环路- 控制特定路由仅在指定 AS 范围内传递,避免路由 “泄露”

3. 伪装路由起源路径

为路由追加特定 AS 号,模拟路由经过某 AS 的路径,满足特殊组网中对路由起源的需求

- 多出口场景下,让远端 AS 认为路由来自特定上游 AS,引导流量走向指定链路- 隐藏真实的 AS 路径,增强网络拓扑隐私性

3、Next Hop 属性:

Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:

  • BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。下一跳为指定的EBGP邻居地址

  • BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。下一跳不变,仍保持为指定的上个AS的EBGP邻居IP地址

  • BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。

Untitled

4、Local-Preference 属性:

Local_Pref属性表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。当BGP的设备通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由,即大的优先。

Local_Pref属性仅在IBGP对等体之间有效,不通告给其他AS,即不对EBGP邻居传递。Local_Pref属性可以手动配置,如果路由没有配置Local_Pref属性,BGP选路时将该路由的Local_Pref值按缺省值100来处理。

假设Internet 上有这样两条路由:

  • 210.52.83.0/24和210.52.82.0/24,而需求是使到网络83 的流量分布在到ISP1 的链路上,而到网络82 的流量分布在到ISP2 的链路上。

  • RT5 分别有两个来源获得82 和83 路由,这样只需要在RT3 和RT4 上适当地对来源的属性进行修改,就可以达到目的。

  • BGP 可以给路由附加一种称为本地优先级的属性,路由器接收到去往同一目的地的多条路由,可以根据本地优先级属性值的高低进行路由选举。

Untitled

5、MED 属性:

MED(Multi-Exit Discriminator)属性用于判断流量进入AS时的最佳路由,当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。等价于COST

MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。即是MED属性会被传递第一个AS,但不会传递至第二个AS。

MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。

路由时本机发布进BGP或者在本机通过策略修改了MED属性,都属于MED属性在本机被赋予。

这时候AS200 的管理者想达到以下目的,从AS100 来的到82 的数据流通过RT2 路由器到达,而从AS100 来的到83 的数据流通过RT1 到达。
在AS200 的边界路由器RT1 上,当向RT3 发布路由82 和83 时,给83 打上标记50,而给82 打上标记100。
在AS200 的边界路由器RT2 上,当向RT3 发布路由82 和83 时,给82 打上标记50,而给83 打上标记100。

Untitled

6、Community 属性:

团体属性(Community)用于标识具有相同特征的BGP路由,使路由策略的应用更加灵活,同时降低了维护管理的难度。每个AS 的管理员都可以自己定义目的地址所属的团体,团体属性由一系列以32 位长度(4字节)为单位的数值所组成。团体属性默认不传递

团体属性分为自定义团体属性和公认团体属性。公认团体属性如下所示:

Untitled

7、Preferred-Value 属性:

Preferred-Value只能在路由器本地配置,而且只影响本设备的路由优选。该属性不会传播给任何BGP对等体。路由器本地始发的BGP路由默认的Preferred-Value为0,从其他BGP对等体学习到的路由默认Preferred-Value也为0,相当于路由的权重值,取值范围:0~65535;该值越大,则路由越优先。H3C和华为私有属性。

三、路由控制和选择:

A、选路原则:

当到达同一目的地存在多条路由时,BGP依照如下策略顺序进行路由选择:

1、首先丢弃下一跳(NEXT_HOP)不可达的路由;

2、优选Preferred-value值最大的路由;

3、优选本地优先级(LOCAL_PREF)最高的路由;

4、优选聚合路由;

5、优选AS路径(AS_PATH)最短的路由;

6、依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;

7、优选MED值最低的路由;

8、依次选择从EBGP、联盟、IBGP学来的路由;

9、优选下一跳Cost值最低的路由;

10、优选CLUSTER_LIST长度最短的路由;

11、优选ORIGINATOR_ID最小的路由;

12、优选Router ID最小的路由器发布的路由。

13、优选地址最小的对等体发布的路由。

CLUSTER_ID为路由反射器的集群ID,CLUSTER_LIST由CLUSTER_ID序列组成,反射器将自己的CLUSTER_ID加入CLUSTER_LIST中,若反射器收到路由中CLUSTER_LIST中包含有自己的CLUSTER_ID,则丢弃该路由,从而避免群内环路的发生。

如果配置了负载分担,并且有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。

B、属性控制:

1、属性控制建议:

1、如果希望影响下游所有路由器的路由选择,建议适用AS-Path,

2、如果希望只影响笨AS内部路由器的路由选择,建议使用Local-Preference

3、如果希望只影响下游某一个AS的路由器的路由选择,建议使用MED

4、如果希望只影响某一台路由器的路由选择,建议使用Perferred-Value

2、属性控制方法:

1、对邻居传出或传入的方向调用:使用ACL匹配路由,对匹配的路由使用apply子句修改属性,其他路由使用空节点正常放行。

2、宣告网段是调用:直接使用apply子句修改属性,不需要配置if-match匹配条件,不需要配置空节点。

3、引入路由时调用:如果需要做路由过滤,不需要配置空节点。

C、AS路径过滤:

BGP使用正则表达式进行路由操作和过滤,主要是作用与AS-PATH,下面是一个AS-PATH示例:

AS-PATH由0-9,(),{},[]和空格组成。其中小括号表示联盟有序自治区号序列,中括号标志表示无序自治区号集合,无括号表示有序自治区号序列,大括号表示无序自治区号集合,空格作为分隔符。

Untitled
Untitled
Untitled

32张图详解BGP路由协议:BGP基本概念、BGP对等体、BGP报文类型、BGP状态机等-腾讯云开发者社区-腾讯云

【BGP路径选择】Preferred Value,Local Preference_华为bgp local-preference preference——value默认-CSDN博客

BGP路由协议 - leagueandlegends - 博客园

BGP协议介绍总结(全干货)-CSDN博客

BGP(边界网关协议详解)_bgp协议-CSDN博客

2022-07-15 网工进阶(十九)BGP-状态机、对等体之间的交互原则、影响对等体关系建立的因素、对等体表、路由表、详细路由表、路由属性_relay ip nexthop-CSDN博客

BGP基础知识

BGP学习笔记