BGP 协议笔记
BGP 协议笔记
一、BGP 基础概述
1. 产生背景
BGP(Border Gateway Protocol,边界网关协议)是自治系统(AS)间的动态路由协议,属于外部网关协议(EGP)。
- 自治系统(AS):由统一管理、运行同一 IGP 的路由器组成的网络范围,使用相同路由策略。
- AS 编号:
- 2 字节:0-65535(公有 1-64511,私有 64512-65535);
- 4 字节:公有 65536–4199999999,私有 4200000000–4294967294。
2. 协议分类
- IGP(内部网关协议):RIP、OSPF、IS-IS(用于 AS 内部);
- EGP(外部网关协议):BGP(用于 AS 之间)。
3. 核心特性
- 仅负责 AS 间路由传递,AS 内部路由扩散依赖 IGP;
- 路径矢量协议,“一跳” 代表一个 AS;
- AS 防环机制:通过 AS_PATH 属性记录路由经过的 AS,若本地 AS 号在 AS_PATH 中则拒绝学习;
- 基于 TCP 传输(端口 179),需手动配置邻居;
- 首次收敛发送完整路由表,后续仅增量更新;
- 支持丰富的属性控制选路、路由聚合、过滤和策略。
4. 基本术语
- BGP Speaker:运行 BGP 的路由器;
- BGP Peer(对等体):建立 TCP 连接并交换路由的 BGP Speaker;
- EBGP 对等体:跨 AS 的邻居(通常直连);
- IBGP 对等体:同一 AS 内的邻居(可非直连)。
二、BGP 消息与状态机
1. 消息类型
类型 | 作用 | 关键特征 |
---|---|---|
Open | 建立对等体连接 | 携带版本、AS 号、Hold Time(默认 180s)、Router-ID 等;需协商参数一致 |
Keepalive | 保活连接 | 周期发送(默认 60s,为 Hold Time 的 1/3);无数据载荷 |
Update | 路由更新 | 包含新增路由(NLRI)、撤销路由(Withdrawn Routes)及路径属性 |
Notification | 错误通知 | 检测到错误时发送,随后关闭连接(如参数不匹配、路由格式错误) |
Router-refresh | 路由刷新 | 更改策略后,请求对等体重发指定地址族的完整路由表 |
2. 状态机
状态 | 说明 |
---|---|
Idle | 初始状态,准备建立 TCP 连接,停留 30s |
Connect | TCP 连接中,失败则进入 Active 状态 |
Active | 主动尝试建立 TCP 连接,失败后重试 |
OpenSent | 已建立 TCP,发送 Open 报文,等待对方 Open 报文 |
OpenConfirm | 收到 Open 报文,发送 Keepalive,等待对方确认 |
Established | 收到 Keepalive,邻居关系建立,可交换路由 |
三、BGP 邻居建立
1. 邻居类型及条件
类型 | 建邻条件 | 特殊配置 |
---|---|---|
IBGP | 需 TCP 可达;建议用环回口建邻(需指定更新源connect-interface ) | 默认 TTL=255;从 EBGP 学习的路由需修改下一跳为本机(next-hop-local ) |
EBGP | 通常直连;非直连需修改最大跳数(ebgp-max-hop ) | 默认 TTL=1;环回口建邻需手动调整 TTL |
2. 路由黑洞及解决
- 原因:IBGP 邻居间存在未运行 BGP 的路由器,无法获取 BGP 路由,导致数据包丢弃。
- 解决方法:
- BGP 路由引入 IGP;
- 黑洞路由器配置静态路由;
- IBGP 全连接(需所有 IBGP 邻居互建连接,适用于小规模网络);
- 路由反射器或联盟(减少邻居数量)。
四、BGP 选路原则(13 条)
- 丢弃下一跳不可达的路由;
- 优选 Preferred-value(首选项)最大的路由(华为 / H3C 私有属性,0-65535);
- 优选 Local-Preference(本地优先级)最高的路由(默认 100,仅 IBGP 传递);
- 依次选择
network
宣告路由、import-route
引入路由、聚合路由; - 优选 AS_PATH 最短的路由;
- 依次选择 Origin 属性为 IGP(i)、EGP(e)、Incomplete(?)的路由;
- 优选 MED(多出口鉴别器)最低的路由(仅相邻 AS 间传递);
- 依次选择从 EBGP、联盟 EBGP、联盟 IBGP、IBGP 学习的路由;
- 优选下一跳 IGP 度量值最低的路由;
- 优选 Cluster-list 最短的路由;
- 优选 Originator-ID 最小的路由;
- 优选 Router ID 最小的路由器发布的路由;
- 优选对等体 IP 地址最小的路由。
五、BGP 属性(选路控制核心)
1. 公认必遵属性(所有路由必须携带)
属性 | 作用 | 选路影响 |
---|---|---|
AS_PATH | 记录路由经过的 AS 编号 | 短路径优先;防环(含本地 AS 则拒绝) |
Next-hop | 路由的下一跳地址 | 下一跳可达是路由有效的前提 |
Origin | 路由来源(IGP/i、EGP/e、Incomplete/?) | 优先级:i > e > ? |
2. 公认可选属性(所有路由器识别,非必须携带)
属性 | 作用 | 选路影响 |
---|---|---|
Local-Preference | 指示 AS 内离开 AS 的优选路由 | 仅 IBGP 传递,值大优先(默认 100) |
Atomic-aggregate | 标记自动聚合的路由 | 无直接选路影响,用于标识聚合行为 |
3. 可选传递属性(可不识别,但会传递)
属性 | 作用 | 特点 |
---|---|---|
Community(团体属性) | 标记具有相同特征的路由,用于批量控制 | 公认值:Internet (默认,可通告所有对等体)、no-advertise (不通告任何对等体)、no-export (不传出本 AS)等;需手动开启传递(advertise-community ) |
Aggregator | 标记手工聚合的路由 | 记录聚合者的 AS 和 Router-ID |
4. 可选非传递属性(可不识别,不传递)
属性 | 作用 | 选路影响 |
---|---|---|
MED | 指导流量进入 AS 的优选路径 | 仅相邻 AS 间比较,值小优先(默认 0) |
Cluster-list | 路由反射器集群列表 | 短列表优先;防环(含本地 Cluster ID 则拒绝) |
Originator-ID | 路由反射器中路由的始发者 ID | 小 ID 优先;防环(与本地 Router ID 一致则拒绝) |
六、大规模 BGP 网络解决方案
1. 对等体组(Peer Group)
-
定义:将具有相同属性的对等体分组,简化配置。
-
分类:IBGP 对等体组(同一 AS 内)、EBGP 对等体组(同一外部 AS)。
-
配置示例:
[R2-bgp] group in internal # 创建IBGP对等体组 [R2-bgp] peer 3.3.3.3 group in # 加入对等体 [R2-bgp] peer in connect-interface LoopBack 0 # 统一指定更新源
2. 路由聚合
-
作用:减小路由表规模,减少 LSA 泛洪。
-
类型:
- 自动聚合:仅对引入的 IGP 路由聚合至主类(可能产生黑洞,默认关闭);
- 手工聚合:精确汇总,可抑制明细路由(
detail-suppressed
)。
-
配置示例:
[R1-bgp] aggregate 172.16.0.0 16 detail-suppressed # 聚合并抑制明细
3. 路由反射器(RR)
- 作用:替代 IBGP 全连接,允许从一个 IBGP 邻居学习的路由反射给其他 IBGP 邻居。
- 角色:
- RR(路由反射器):负责反射路由;
- Client(客户机):与 RR 建立 IBGP 连接,无需互建连接;
- 非客户机:需与 RR 互建连接,不被反射。
- 反射规则:
- 从非客户机学习的路由 → 仅反射给客户机;
- 从客户机学习的路由 → 反射给所有客户机和非客户机(排除始发者);
- 从 EBGP 学习的路由 → 反射给所有客户机和非客户机。
- 防环机制:
- Cluster-list:记录经过的 RR 集群 ID,含本地 ID 则拒绝;
- Originator-ID:标记路由始发者 ID,与本地一致则拒绝。
4. 联盟(Confederation)
-
作用:将一个 AS 划分为多个子 AS(用私有 AS 号),子 AS 间建立联盟 EBGP,内部仍用 IBGP,减少邻居数量。
-
配置要点:
- 子 AS 需配置联盟 ID(原 AS 号)和同伴子 AS;
- 跨子 AS 的 EBGP 邻居需修改下一跳为本机。
-
示例:
[R2-bgp] bgp 65001 # 子AS号 [R2-bgp] confederation id 200 # 联盟ID(原AS号) [R2-bgp] confederation peer-as 65002 # 同伴子AS
5. 路由衰减(Route Dampening)
- 作用:解决路由振荡(频繁 Up/Down),通过惩罚值抑制不稳定路由。
- 参数:
- 抑制阈值(默认 2000):惩罚值超此时抑制路由;
- 重用阈值(默认 750):惩罚值低于此时恢复路由;
- 半衰期(默认 15 分钟):惩罚值每 15 分钟减半。
- 配置:
[R1-bgp] dampening
(启用默认参数)。
七、BGP 基本配置流程
-
启动 BGP 并配置 Router-ID:
[Huawei] bgp 100 # 启动BGP,指定AS号 [Huawei-bgp] router-id 1.1.1.1 # 配置Router-ID
-
配置邻居:
[Huawei-bgp] peer 10.1.1.2 as-number 200 # 指定EBGP邻居 [Huawei-bgp] peer 2.2.2.2 as-number 100 # 指定IBGP邻居 [Huawei-bgp] peer 2.2.2.2 connect-interface LoopBack 0 # 指定更新源
-
宣告或引入路由:
[Huawei-bgp] network 192.168.1.0 24 # 宣告直连路由 [Huawei-bgp] import-route ospf 1 # 引入OSPF路由
-
查看命令:
[Huawei] display bgp peer # 查看邻居状态 [Huawei] display bgp routing-table # 查看BGP路由表
八、关键实验场景
- EBGP/IBGP 邻居建立:验证直连 / 非直连建邻、TTL 调整;
- 路由黑洞解决:通过引入 IGP 或路由反射器消除黑洞;
- 选路控制:通过修改 AS_PATH、Local-Preference、MED 等属性调整最优路由;
- 大规模网络优化:配置对等体组、聚合、路由反射器或联盟减少配置复杂度。