目录
[十一、BGP 宣告的深层剖析与最佳实践](#十一、BGP 宣告的深层剖析与最佳实践)
[(2)关键属性:MULTI_EXIT_DISC (MED) 的传递与影响](#(2)关键属性:MULTI_EXIT_DISC (MED) 的传递与影响)
[十二、BGP 自动汇总:历史、原理与现代配置](#十二、BGP 自动汇总:历史、原理与现代配置)
[十三、BGP 聚合(汇总)策略全解](#十三、BGP 聚合(汇总)策略全解)
[十四、有条件打破 IBGP 水平分割](#十四、有条件打破 IBGP 水平分割)
(1)路由反射器 (Route Reflector: RR)
[十五、MA(多路访问)网络中的 BGP 下一跳优化](#十五、MA(多路访问)网络中的 BGP 下一跳优化)
一、BGP基本概念

- BGP:边界网关路由协议 ,属于无类别的路径矢量协议;是EGP协议中最流行的技术,工作在AS之间。
- EGP:外部网关路由协议------BGP
- IGP:内部网关路由协议------RIP、OSPF、EIGRP
- AS:自治系统,指一个全球网络范围或管理域。①标准AS号:16位二进制构成,范围0-65535,其中1-64511为公有,64512-65535为私有。②扩展AS号:32位二进制构成。
- BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目。
- AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此管理员需要进行策略来干涉选路。
二、BGP特点
- 无类别路径矢量------距离矢量的升级版,采用AS-BY-AS方式传递。
- 使用单播更新发送所有信息;基于TCP 179端口工作。
- 增量更新------仅触发,无周期更新。
- 具有丰富的属性来取代IGP中度量进行选路------属于多个参数控制协议。
- 可以在进项和出项对流量实施强大的策略------可控性强。
- 默认不被用于负载均衡------通过各种选路规则仅产生一条最佳路径。
- 支持认证和聚合(汇总)。
三、BGP名词
- 邻居:BGP中称为毗邻关系,支持非直连建邻。
- EBGP邻居关系:建邻设备处于不同的AS中。
- IBGP邻居关系:建邻设备处于相同的AS中。
四、BGP数据包
基于TCP 179端口工作,所有BGP数据包均需在TCP会话建立后传输。
- Open:仅负责邻居关系的建立,正常仅收发一次,携带Route-ID。
- Keepalive:保活,周期1分钟,实际保活TCP会话;Hold Time 默认3分钟。
- Update:携带路由条目,包括目标网络号 + 各种属性。
- Notification:出现错误数据时收发。
| 数据包类型 | 功能 | 触发条件 |
| Open | 建立邻居关系 | TCP会话建立后立即发送 |
| Keepalive | 保活邻居 | 每一分周期性发送 |
| Update | 传递路由信息 | 路由变更或初始同步时发送 |
| Notification | 错误通知 | 协议错误或会话异常时发送 |
|---|
五、BGP工作过程
(1)建立TCP连接与邻居关系
- 配置完成后,邻居间通过单播TCP三次握手建立会话,目标端口为179。
- TCP会话建立后,邻居间正常收发一次Open报文,建立BGP的邻居关系,生成邻居表。(Open报文中携带本地RID(生成方式与OSPF一致,需本地及所有邻居唯一))。
- 邻居关系建立后,默认每1分钟使用Keepalive报文周期保活邻居关系(实际是保活TCP会话)。
(2)路由信息交换与BGP表生成
- 邻居关系建立后,管理员选择性将本地路由表中通过任意来源获取的路由条目向BGP协议中进行宣告。(使用Update数据包进行邻居间路由共享)。
- 宣告后生成BGP表,装载本地发出及接收到的所有路由条目。
- BGP协议默认将最优路径加载于路由表中。("最优"仅基于BGP的选路规则,不一定为最佳路径。BGP默认不支持负载均衡)。
(3)收敛完成与周期保活
- 路由信息同步完成后,进入稳定状态。
- 此时仅依靠Keepalive报文周期保活即可。
Keepalive每1分钟发送一次,用于维护邻居关系。
Hold Time默认为3分钟,连续3次未收到Keepalive则判定邻居失效。
(4)结构突变处理
- 新增路由:【1】本地使用Update报文向所有邻居告知。【2】前提是该路由不被已经发出的聚合路由包含。
- 断开路由:【1】本地使用Update报文 向所有邻居告知。【2】同样要求该路由不被已经发出的聚合路由包含 。【3】只有聚合条目中包含的所有明细路由均在本地失效,才告知邻居删除聚合条目。
- 无法沟通:【1】Hold Time为3分钟,连续3次未收到邻居的Keepalive报文。【2】系统将:①断开BGP邻居关系②断开TCP会话③删除从该邻居处学习到的所有路由
(5)错误处理
若出现错误信息,邻居间将使用Notification报文进行报错操作。
总结:
| 阶段 | 动作 | 使用的报文 |
|---|---|---|
| 连接建立 | TCP三次握手(端口179) | TCP |
| 邻居建立 | 交换Open报文 | Open |
| 路由交换 | 发送Update报文 | Update |
| 周期保活 | 每1分钟发送Keepalive | Keepalive |
| 路由更新 | 新增/断开路由时发送Update | UPdate |
| 错误处理 | 发送Notification报文 | Notification |
| 邻居失效 | Hold Time超时(3分钟) | 无 |
六、BGP路由黑洞问题
问题描述:非直连建邻时,控制层面路由可传递,但数据层面流量经过未运行BGP的设备时无法通过。
解决方案:
-
物理、逻辑拓扑全连(物理链路直连、或者vpn)。
-
邻居关系全连------所有设备运行BGP。
-
BGP重发布到IGP(实验做法)。
-
MPLS 多协议标签交换(推荐做法)。
七、BGP防环机制
- EBGP水平分割 :通过AS-PATH属性防环,拒绝包含本地AS号的路由条目进入。
- IBGP水平分割 :从一个IBGP邻居学到的路由不得传递给其他IBGP邻居。
缺点:IBGP邻居需全互联,配置量大。
解决方案:联邦、路由反射器。
八、BGP基本配置
(1)直连EBGP邻居
bash
[r1]bgp 1 #启动BGP协议,启动时需要键入AS号;没有多进程概念
[r1-bgp]router-id 1.1.1.1 #建议配置RID;若不配置将自动生成---规则同OSPF相同
[r1-bgp]peer 12.1.1.2 as-number 2 #对端IP地址,及对端所在的AS编号
(2)IBGP邻居(使用环回接口)
- IBGP邻居关系建立,在一个AS内部,拓扑正常较为复杂;建议使用环回接口地址作为源、目标ip地址;存在备份链路,同时可以多条物理链路传递
bash
[r2]bgp 2
[r2-bgp]peer 3.3.3.3 as-number 2
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
#切记:一旦使用环回接口建立BGP的邻居关系;必须将源地址也修改为环回接口
(3)EBGP邻居使用环回接口
- EBGP邻居间存在多条物理链路时,也建议使用环回接口地址来建立
bash
[r4]bgp 4
[r4-bgp]peer 5.5.5.5 as-number 5
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2
#默认IBGP邻居间数据包的TTL值为255,EBGP邻居间TTL为1;故一旦使用环回建立ebgp邻居关系,必须修改TTL值,否则无法建立
(4)宣告路由
宣告条目必须与本地路由表完全一致:
bash
[r1-bgp]network 1.1.1.0 24
(5)下一跳本地配置(IBGP场景)
IBGP路由传递时不修改下一跳,可能导致不可达:
bash
[r2-bgp]peer 3.3.3.3 next-hop-local
九、BGP认证配置
用于确保 BGP 对等体(邻居)之间建立会话的安全性,防止非法设备建立邻居关系并注入虚假路由。
bash
# 配置命令
[r1-bgp] peer 12.1.1.2 password cipher huawei@123
# 验证命令
[r1] display bgp peer verbose 12.1.1.2 | include Auth
- cipher 表示密码以密文方式存储和传递。
- 两端邻居的密码必须完全一致,否则 TCP 连接可以建立,但 BGP 状态将卡在 Active 或 OpenConfirm,无法进入 Established。
- 这是生产网络中必须配置的基础安全措施。
十、BGP状态说明表
(1)BGP路由表状态码
| 状态符号 | 全称 | 说明 |
| * | valid(可用) | 路由条目可用,但不一定优秀 |
| > | best(优秀) | 路由条目优秀,是基于BGP选路规则的最佳路径 |
| *> | valid & best(可用且优秀) | 路由条目可用且优秀,可以加表(加入路由表)并可以传递给其他BGP邻居 |
| d | damped(抑制) | 路由被阻尼抑制,通常因路由抖动导致 |
| h | history(历史) | 路由条目处于历史状态,当前不可用但保留记录 |
| i | internal(内部) | 该条目是本地通过IBGP邻居学习到的 |
| s | suppressed(被抑制) | 路由被策略或聚合抑制 |
| S | Stale(陈旧) | 路由条目陈旧,通常与GR(Graceful Restart)相关 |
|---|
(2)Origin属性状态(路由来源)
| 符号 | 全称 | 说明 |
|---|---|---|
| i | IGP(内部网关协议) | 路由来源于IGP(如network命令宣告) |
| e | EGP(外部网关协议) | 路由来源于EGP(历史协议,现很少使用) |
| ? | incomplete(不完整) | 路由来源于其他方式(如重发布引入) |
(3)BGP邻居状态
| 状态 | 说明 |
| Idle | 初始状态,BGP未尝试建立连接 |
| Connect | TCP连接尝试中 |
| Active | TCP连接失败,正在尝试重新连接 |
| OpenSent | Open报文已发送,等待对方Open报文 |
| OpenConfirm | Open报文已确认,等待Keepalive报文 |
| Established | 邻居关系已建立,正常交换路由信息 |
| 其他非Established状态 | 表示邻居关系异常,需排查配置或网络问题 |
|---|
(4)常见状态组合说明
| 状态组合 | 含义 | 是否加表 | 是否传递 |
| *> | 最优路由 | 是 | 是 |
| * i | 来自IBGP的可用路由 | 是 | 否(受水平分割限制) |
| *>(带i) | 来自IBGP的可用路由 | 是 | 否(除非打破水平分割) |
| * e | 来自EGP的可用路由 | 视策略而定 | 视策略而定 |
| * ? | 来源不明的可用路由 | 视策略而定 | 视策略而定 |
| s | 被抑制的路由 | 否 | 否 |
| d | 被抑制的抖动路由 | 否 | 否 |
|---|
十一、BGP 宣告的深层剖析与最佳实践
(1)可宣告路由的来源与本质
- BGP 并不自行发现路由,其核心功能是传递和控制路由信息。它可以宣告以下存在于本地路由表中的路由条目:
- 本地直连接口路由:最基本、最稳定的路由来源。
- 静态路由:由管理员手动配置。
- 动态 IGP 路由(如 OSPF、IS-IS、RIP 等学习到的):这是实现 BGP 与 IGP 协同的关键,允许 BGP 发布来自未运行 BGP 的内部网络设备的路由。
(2)关键属性:MULTI_EXIT_DISC (MED) 的传递与影响
- 作用 :MED 属性相当于 BGP 的"度量值",用于向外部邻居(其他 AS)提示进入本 AS 的优选路径。数值越小越优先。
- 传递规则 :①当在 BGP 中宣告一条从 IGP 学来的路由时,BGP 会自动将该路由在 IGP 中的度量值填入 MED 属性,并随路由传递给 EBGP 邻居。②例如,AS 100 中的两台边界路由器 R1 和 R2 都将路由 192.168.1.0/24 宣告给 AS 200。如果 R1 到达该网段的 IGP 开销是 10,MED 就是 10;R2 的开销是 50,MED 就是 50。那么对于 AS 200 来说,从 R1 进入 AS 100 的路径更优。
- 关键问题与"黑洞" :问题 :MED 属性在AS 内部(IBGP 邻居之间)传递时默认被保留 ,但 传递给外部 EBGP 邻居时,默认不传递 MED 。这意味着,如果 AS 内部只有部分边界路由器宣告了某条路由,那么外部 AS 在选择进入路径时,将缺乏 MED 作为参考依据 ,可能无法选择到离目标最近的入口点。最佳实践 :为了向外部 AS 提供一致的、有效的选路参考,建议在一个 AS 内,对于需要对外发布的路由,所有运行 BGP 的边界设备均应一致地进行宣告。这确保了外部 AS 能从所有可能的入口点收到该路由,并能通过比较 MED 值做出最优选择。
十二、BGP 自动汇总:历史、原理与现代配置
(1)核心原理
- 自动汇总功能仅作用于通过 import-route(重发布)命令从 IGP 引入到 BGP 的路由。它不会影响通过 network 命令宣告的路由。
(2)开启与关闭的详细对比
| 特性 | 自动汇总开启 | 自动汇总关闭(默认) |
| 影响的操作 | 仅 import-route(重发布) | 仅 import-route(重发布) |
| 掩码处理 | 忽略原始子网掩码,**按主类网络边界(A/B/C类)**进行汇总并发布 | 保留原始子网掩码进行发布 |
| MED 值 | 强制设置为 0,丢失了 IGP 的度量信息 | 携带原始 IGP 路由的度量值作为 MED |
| 起源属性 | 标记为 incomplete (?),表示来源不明确(重发布引入) | 标记为 incomplete (?),表示来源不明确(重发布引入) |
| 与 network 宣告对比 | 差异巨大(掩码和度量均丢失) | 仅起源属性不同(network 为 i,重发布为 ?),其他属性(掩码、MED)相同 |
|---|
(3)结论和建议
- 强烈建议保持自动汇总关闭。这是现代设备的默认行为,也是最佳实践。
- 关闭后,重发布进入 BGP 的路由能保留完整的网络信息和原始度量,使得路由策略更加精细和可预测。
- 配合"所有边界设备一致宣告/重发布"的原则,可以确保网络行为的统一性。
十三、BGP 聚合(汇总)策略全解
BGP 聚合旨在减少路由表规模,并隐藏网络细节,但其核心挑战在于如何在汇总的同时,不影响必要的路径选择。
(1)基本聚合命令
bash
[r5-bgp] aggregate 100.100.0.0 22
# 同时发布聚合路由和所有明细路由
[r5-bgp] aggregate 100.100.0.0 22 detail-suppressed
# 仅发布聚合路由,**抑制所有明细路由**
(2)高级策略:抑制部分明细(允许部分明细)
在实际工程中,为了进行精准的流量工程(Traffic Engineering),常需要在发布汇总路由的同时,有选择地发布部分关键明细路由。以下是四种等效的实现方法:
场景目标 :聚合 100.100.0.0/22,但允许明细 100.100.1.0/24 继续传播。
| 方法 | 配置示例 | 核心逻辑与特点 |
| 抑制策略 (suppress-policy) | bash [r5] ip ip-prefix SUPPR permit 100.100.1.0 24 [r5] route-policy SUPPR permit node 10 [r5-route-policy]if-match ip-prefix SUPPR [r5-bgp]aggregate 100.100.0.0 22 suppress-policy SUPPR | 反向逻辑 :在策略中 permit 的条目,在聚合时会被 suppress(抑制)。其他未被 permit 的明细默认被抑制。 |
| 出口策略 (route-policy export) | bash [r5]ip ip-prefix b permit 100.100.1.0 24 [r5]route-policy b deny node 10 [r5-route-policy]if-match ip-prefix b [r5]route-policy b permit node 20 [r5]bgp 3 [r5-bgp]peer 4.4.4.4 route-policy b ? export Specify export policy 控制层面的出项 import Specify import policy 控制层面的入向 [r5-bgp]peer 4.4.4.4 route-policy b export | 正向逻辑:在发给特定邻居的出方向策略中,deny 掉要放行的明细(使其不被过滤),然后 permit 其他所有。需单独对每个邻居应用。 |
| 过滤策略 (filter-policy export) | bash [r5]ip ip-prefix c deny 100.100.1.0 24 [r5]ip ip-prefix c permit 0.0.0.0 0 le 32 [r5-bgp]filter-policy ip-prefix c export(控制层面方向) | 正向逻辑:前缀列表本身定义允许(permit)或拒绝(deny)。调用后,只有被前缀列表 permit 的路由(包括聚合和指定的明细)才会被发布。注意:这可能会过滤掉其他不相关的路由,需谨慎使用 0.0.0.0/0 le 32 作为最后一条 permit。 |
| 基于前缀列表的过滤 (peer ip-prefix export) | bash [r5]ip ip-prefix d deny 100.100.1.0 24 [r5]ip ip-prefix d permit 0.0.0.0 0 le 32 [r5-bgp]peer 4.4.4.4 ip-prefix d export |
正向逻辑:与 route-policy 逻辑类似,直接在前缀列表中定义规则。deny 要放行的明细,最后用 permit 0.0.0.0/0 le 32 允许其他所有。这是最简洁的方法之一。 |
|---|
十四、有条件打破 IBGP 水平分割
IBGP 水平分割规则(从一个 IBGP 邻居学到的路由,不能传给另一个 IBGP 邻居)导致 AS 内需要全互联,N 台设备需要建立 N(N-1)/2 条邻居关系。以下两种技术用于解决此问题。
(1)路由反射器 (Route Reflector: RR)
1、角色:①RR (反射器) :负责反射路由的中心设备。②Client (客户端) :与 RR 建立 IBGP 邻居,并享受路由反射服务的设备。③Non-Client (非客户端):与 RR 建立 IBGP 邻居,但不是客户端的设备(通常是其他 RR 或全互联组中的设备)。
2、反射规则(核心):
下图清晰展示了 RR 在不同场景下的反射行为:

3、配置:
bash
# 在 RR 上,将指定邻居配置为客户端
[r3-bgp] peer 2.2.2.2 reflect-client
# 执行此命令后,r3 成为 RR,2.2.2.2 成为其 Client
4、防环机制:使用 ORIGINATOR_ID 和 CLUSTER_LIST 属性。
(2)联邦 (Confederation)
1、原理:将一个大的 AS 在逻辑上划分为多个小的私有 AS(通常在 64512-65535 范围内)。这些小 AS 之间建立 联邦内 EBGP 邻居关系,可以自然地传递路由,从而打破 IBGP 水平分割。
2、特点 :①对外(与其他真实 AS 通信时)仍使用统一的联邦 ID(即原始的大 AS 号) 。②联邦内 EBGP 邻居间,大部分行为像普通 EBGP(如下一跳改变),但可选地不改变 AS_PATH等属性,以减少路径长度。
3、配置:
bash
[r3] bgp 64512 # 启动 BGP,使用小 AS 号
[r3-bgp]router-id 3.3.3.3
[r3-bgp] confederation id 100 # 声明所属的大 AS(联邦 ID)
[r3-bgp] confederation peer-as 64513 # 声明联邦内对等的小 AS 号
[r3-bgp] peer 4.4.4.4 as-number 64513 # 与联邦内 EBGP 邻居建邻
[r3-bgp] peer 4.4.4.4 ebgp-max-hop 2 # 通常联邦内邻居非直连,需修改 TTL
[r3-bgp] peer 4.4.4.4 connect-interface LoopBack0
工程建议 :大型网络常 混合使用 RR 和联邦。在每个联邦子 AS 内部使用 RR 架构,再通过联邦连接各个子 AS,形成层次化、可扩展的 BGP 网络。
十五、MA(多路访问)网络中的 BGP 下一跳优化
(1)问题场景
在以太网等广播型多路访问网络中,若 R1、R2、R3 处于同一网段但属于不同 AS,R1 与 R2、R3 均建立 EBGP。当 R2 将一条从其后端(如 R4)学来的路由发给 R1 时,默认下一跳是 R2 的接口地址。然而,如果 R3 到 R4 的路径更优(如 IGP 开销更小),对 R1 来说,经过 R3 才是最佳路径。
(2)优化原理与条件
原理:该优化依赖于 ICMP 重定向 和 BGP 的第三方下一跳特性。
1、R1 最初将去往 R4 的流量发给下一跳 R2。
2、R2 查表后发现,去往 R4 的最佳下一跳其实是同一网段的 R3,且入口出口为同一接口。
3、R2 向 R1 发送一个 ICMP 重定向报文,告知 R1 "对于这个目标,更好的下一跳是 R3"。
4、R1 更新其路由表或 ARP 表,后续流量直接发往 R3。
5、在 BGP 层面,R1 在向其他邻居传递该路由时,可能会(取决于实现和配置)将下一跳优化为 R3。
必要条件:
1、物理拓扑:R1、R2、R3 必须在同一个广播域(二层可达)。
2、邻居建立 :R1 必须与 R2 和 R3 都建立 BGP 邻居关系,并且最好使用物理接口地址建邻。
3、ICMP 重定向:在相关路由器上必须启用(默认启用)。
(3)相关查看命令
bash
# 查看从特定邻居学到的所有BGP路由(无论是否最优)
[r1] display bgp routing-table peer 10.1.1.2 received-routes
# 查看向特定邻居发布的所有BGP路由
[r1] display bgp routing-table peer 10.1.1.2 advertised-routes
十六、BGP属性详解与配置
(1)PrefVal(权重优先级)
- 传播范围:不传播,仅本地有效(华为私有属性)
- 默认值:0
- 取值范围:0-65535(值越大越优)
- 作用:影响本地的BGP路由选择,只能干涉EBGP/IBGP在本地的选路
配置:
bash
# 方式1:直接为从特定邻居学到的所有路由设置PrefVal
[r3-bgp] peer 4.4.4.4 preferred-value 1
# 方式2:通过路由策略为特定路由设置PrefVal(实现负载分担)
[r3] ip ip-prefix p permit 1.1.1.0 24
[r3] route-policy p permit node 10
[r3-route-policy] if-match ip-prefix p
[r3-route-policy] apply preferred-value 1
[r3-route-policy] q
[r3] route-policy p permit node 20 # 空条目,允许其他路由通过
[r3] bgp 2
[r3-bgp] peer 4.4.4.4 route-policy p import
重要说明:PrefVal只能在入方向(import)调用,因为其不传播的特性。
(2)LocPrf(本地优先级)
- 传播范围:整个AS内部,在IBGP邻居间传递
- 默认值:100
- 取值范围:0-255(值越大越优)
- 作用:最常用于干涉IBGP邻居关系的选路
配置:
bash
# 方式1:修改本地传递给所有IBGP邻居的路由的LocPrf
[r4-bgp] default local-preference 1
# 方式2:通过路由策略为特定路由设置LocPrf(实现负载分担)
[r3] ip ip-prefix l permit 1.1.1.0 24
[r3] route-policy l permit node 10
[r3-route-policy] apply local-preference 101
[r3-route-policy] if-match ip-prefix l
[r3-route-policy] q
[r3] route-policy l permit node 20
[r3] bgp 2
[r3-bgp] peer 4.4.4.4 route-policy l import # 可在出入方向调用
注意:LocPrf可以在IBGP邻居关系的入或出方向调用。
(3)下一跳属性规则
- 在BGP中宣告本地IGP路由时,BGP表中下一跳为0.0.0.0
- 从其他邻居学到的路由,下一跳不为0.0.0.0
- 本地优先选择下一跳为0.0.0.0的路由传递给其他BGP邻居
(4)AS-PATH属性
- 作用:记录路由经过的所有AS编号
- 防环机制:EBGP水平分割(拒绝包含本地AS号的路由)
- 选路规则:优选AS-PATH最短的路径
- 修改规则:只能在EBGP邻居间添加AS号(只能添加,不能减少)
配置:
bash
[r2] ip ip-prefix as index 10 permit 1.1.1.0 24
[r2] route-policy as permit node 10
[r2-route-policy] if-match ip-prefix as
[r2-route-policy] apply as-path 3 4 5 additive # 添加AS号
[r2-route-policy] q
[r2] route-policy as permit node 20
[r2] bgp 2
[r2-bgp] peer 12.1.1.1 route-policy as import
添加位置说明:①入向调用:添加的AS号在路径最左端(3 4 5 实际AS)②出向调用:添加的AS号在路径最左端(X 3 4 5 实际AS,X为实际经过的AS)
重要注意: 如果添加的AS号实际存在(如AS3),且该AS确实在路径上,可能导致路由被EBGP水平分割拒绝。解决方案是重复添加已存在的AS号:
bash[r2-route-policy] apply as-path 1 1 1 additive # 重复添加AS1三次
(5)起源属性(Origin)
类型:
- i(IGP):通过network命令宣告的路由
- e(EGP):通过EGP重发布的路由(已淘汰)
- ?(incomplete):通过IGP重发布到BGP的路由
优先级:i > e > ?
bash
[r3] ip ip-prefix o permit 1.1.1.0 24
[r3] route-policy o permit node 10
[r3-route-policy] if-match ip-prefix o
[r3-route-policy] apply origin egp 2 # 设置为e类型,需指定对端AS号
[r3-route-policy] q
[r3] route-policy o permit node 20
[r3] bgp 2
[r3-bgp] peer 2.2.2.2 route-policy o import # 可在出入方向调用
(6)MED(多出口鉴别属性)
- **作用:**BGP的"度量值",用于干涉EBGP选路(常用于AS1干涉AS2对AS1的选路)
- **默认值:**0(宣告或重发布时携带本地IGP的cost)
- **选路规则:**MED值越小越优
配置:
bash
[r1] ip ip-prefix med permit 1.1.1.0 24
[r1] route-policy med permit node 10
[r1-route-policy] if-match ip-prefix med
[r1-route-policy] apply cost 2 # 修改MED值
[r1-route-policy] q
[r1] route-policy med permit node 20
[r1] bgp 1
[r1-bgp] peer 12.1.1.2 route-policy med export # 通常在出方向调用
查看路径命令:
bash<r1> ping -r -a 1.1.1.1 3.3.3.3 # 记录路径
十七、BGP选路规则详解
比较前提:多条BGP路由目标相同,均可达(下一跳可达,同步关闭),管理距离相同。
| 步骤 | 比较项目 | 规则(优选) | 传播范围 | 默认值 | 优选值 | 主要应用场景 | 配置特点 |
| 1 | PrefVal (权重优先级) | 值最高的路由 | 不传播,仅本地有效 | 0 | 越大越优(0-65535) | 本地选路控制 干涉EBGP/IBGP在本地的选路 | 只能在入方向(import)调用 华为私有属性 |
| 2 | Local_Preference (本地优先级) | 值最高的路由 | 整个AS内部,IBGP邻居间传递 | 100 | 越大越优(0-255) | 干涉IBGP邻居关系选路 最常用属性 | 可在出入方向调用 可全局或针对特定路由 |
| 3 | 路由来源 | 手动聚合 > 自动聚合 > network > import > 从对等体学到的 | 不直接传播,由路由生成方式决定 | - | 按顺序 | 本地生成路由优于邻居学习 | 通过配置路由生成方式影响 |
| 4 | AS_Path (AS路径) | 最短的路由(AS数量最少) | 全网传递,记录所有经过的AS | 自动生成 | 越短越优 | EBGP水平分割防环 干涉EBGP/IBGP选路 | 只能在EBGP邻居间 添加AS号 只能增加不能减少 |
| 5 | Origin (起源属性) | IGP(i) > EGP(e) > Incomplete(?) | 全网传递 | i/e/? | i>e>? | 根据路由来源选路 | 可在出入方向 调用 修改路由来源类型 |
| 6 | MED (多出口鉴别) | 值最小的路由 | 相邻AS间,不传递到第三个AS | 0或IGP cost | 越小越优 | 最常用于干涉EBGP选路 AS间出口优化 | 通常在出方向 调用 宣告时自动携带IGP cost |
| 7 | 邻居类型 | EBGP > 联邦内EBGP > IBGP | 不传播,本地判断 | - | 外部>内部 | 优先选择外部路径 | 自动判断,无需配置 |
| 8 | 到达下一跳的 IGP Metric | 值最小的路由 | 不传播,本地计算 | IGP实际值 | 越小越优 | AS内部选择到出口的最优路径 | 通过调整IGP度量值影响 |
| 9 | Cluster_List (簇列表) | 最短的路由 | 路由反射器环境中传递 | - | 越短越优 | 路由反射器环境下的选路 | 自动生成,通常不手动配置 |
| 10 | Orginator_ID (起源ID) | 最小的路由 | 路由反射器环境中传递 | RR分配 | 越小越优 | 路由反射器环境下的选路 | 自动生成,通常不手动配置 |
| 11 | Router_ID (路由器ID) | 最小的路由器发布的路由 | 不传播,本地比较 | 配置或自动生成 | 越小越优 | 最终决断条件之一 | 通过配置router-id影响 |
| 12 | 邻居IP地址 | 最小的邻居学来的路由 | 不传播,本地比较 | 邻居IP地址 | 越小越优 | 最终决断条件 | 自动比较,无需配置 |
|---|
BGP选路规则记忆口诀:
一权二本三来源,四短五优六MED,
七外八内九簇短,十起十一RID小,
十二IP最后挑,十三步走完路径好。
十八、BGP社团属性(Community)
(1)基本概念
- BGP的扩展属性,默认大多数厂商设备不携带也不传递社团属性
- 需要显式开启传递性
(2)配置示例:
bash
# 1. 创建路由策略并设置社团属性
[r1] route-policy com permit node 10
[r1-route-policy] apply community no-advertise # 对所有匹配流量设置属性
[r1-route-policy] q
# 2. 应用策略并开启社团属性传递
[r1] bgp 1
[r1-bgp] peer 12.1.1.2 route-policy com export
[r1-bgp] peer 12.1.1.2 advertise-community # 必须开启传递性
(3)常用预定义社团属性
| 社团属性 | 作用 | 说明 |
| no-advertise | 接收方不再传播此路由 | 收到含此属性的路由后,不传递给任何BGP邻居 |
| no-export | 不传递给下一个AS | 收到含此属性的路由后,不传递给EBGP邻居(不传出当前AS) |
| no-export-subconfed | 不传递给下一个小AS | 联邦场景:不传递给其他子AS;无联邦时与no-export相同 |
|---|
重要说明 :社团属性的传递是逐跳行为,每台设备都需要配置advertise-community才能继续传递。
附:关键命令查看
bash
#查看BGP邻居状态
[r1]display bgp peer
#查看BGP路由表
[r1]display bgp routing-table
#查看TCp会话
[r1]display tcp status
# 查看路径
<r1> ping -r -a 1.1.1.1 3.3.3.3
# 查看BGP路由的详细路径信息
<r1> ping -r -a <源IP> <目的IP>
# 查看从特定邻居学到的所有路由(无论是否最优)
[r1] display bgp routing-table peer <邻居IP> received-routes
# 查看发送给特定邻居的所有路由
[r1] display bgp routing-table peer <邻居IP> advertised-routes
# 查看BGP邻居详细信息
[r1] display bgp peer <邻居IP> verbose
# 查看路由策略配置
[r1] display route-policy
