BGP笔记整理
一、BGP 基础概念
1. 产生背景
BGP(Border Gateway Protocol)是自治系统(AS)间的动态路由协议,属于外部网关协议(EGP),用于在不同 AS 之间传递路由信息。
2. 自治系统(AS)
定义:一组被统一管理、运行相同 IGP 协议的路由器集合,通常使用相同路由策略。
AS 编号:
2 字节:范围 0-65535(0 和 65535 保留),其中公有 AS 为 1-64511,私有 AS 为 64512-65535。
4 字节:公有 AS 为 65536–4199999999,私有 AS 为 4200000000–4294967294。
二、路由协议分类
IGP(内部网关协议):用于 AS 内部路由,如 RIP、OSPF、IS-IS。
EGP(外部网关协议):用于 AS 之间路由,BGP 是目前唯一广泛使用的 EGP。
三、BGP 协议特性
路由传递范围:仅负责 AS 间路由传递,AS 内部路由扩散依赖 IGP。
路径矢量协议:一跳代表一个 AS,路由传入 AS 时,下一跳变为上个 AS 的出接口 IP;AS 内部传递时,下一跳不变。
AS 防环机制:通过
AS_PATH
属性防环,路由每经过一个 AS,会将该 AS 编号按 “右到左” 顺序加入AS_PATH
;若收到的路由AS_PATH
包含本地 AS 编号,则不学习。传输层依赖:基于 TCP 协议,端口号 179,需手动配置邻居。
更新方式:首次收敛发送完整路由表,后续仅增量更新。
路由控制:支持多种属性控制选路,支持路由聚合、过滤和策略。
四、BGP 基本术语
BGP Speaker:运行 BGP 协议的路由器。
BGP Peer(对等体):通过 TCP 连接交换路由信息的 BGP Speaker,分为:
EBGP 对等体:跨 AS 的邻居,通常物理直连,从 EBGP 学到的路由会通告给所有对等体(包括 EBGP 和 IBGP)。
IBGP 对等体:同一 AS 内的邻居,可非直连,受 “水平分割” 限制(从 IBGP 学到的路由不传给其他 IBGP)。
五、路由黑洞及解决方法
产生原因:IBGP 邻居间存在未运行 BGP 的路由器,无法获取 BGP 路由,导致数据包被丢弃。
解决方法:
BGP 引入 IGP;
在黑洞路由器上配置静态路由;
IBGP 全连接(需所有 IBGP 路由器互建邻居,适用于小规模网络);
路由反射器(RR,无视 IBGP 水平分割,减少邻居数量);
BGP 联盟(将 AS 划分为子 AS,子 AS 间用 EBGP 连接,减少 IBGP 邻居)。
六、BGP 环路问题(水平分割)
EBGP 水平分割:通过
AS_PATH
属性,若路由包含本地 AS 编号则拒绝学习。IBGP 水平分割:从 IBGP 对等体学到的路由,不向其他 IBGP 对等体通告。
七、BGP 消息种类
消息类型 | 作用 |
---|---|
Open | 建立对等体连接,携带 |
Keepalive | 周期保活(默认 60s 发送一次),维持连接有效性。 |
Update | 携带路由更新(新增 / 删除),包含 |
Notification | 检测到错误时发送,随后关闭连接。 |
Router-refresh | 更改路由策略后,请求对等体重发指定地址族的完整路由表。 |
八、BGP 状态机
Idle:初始化状态,准备 TCP 连接,停留 30 秒。
Connect:TCP 连接建立中,失败则进入 Active 状态。
Active:主动尝试建立 TCP 连接,失败则重试。
OpenSent:TCP 连接建立,发送 Open 报文,等待对方响应。
OpenConfirm:收到 Open 报文,发送 Keepalive,等待对方 Keepalive。
Established:收到 Keepalive,邻居关系建立,开始交换路由。
九、BGP 邻居建立条件
1. IBGP 邻居
物理口建邻:建议用直连接口地址。
环回口建邻:需 TCP 可达(路由可达),修改更新源为环回口(
peer connect-interface LoopBack 0
),默认 TTL 为 255。
2. EBGP 邻居
物理口建邻:建议用直连接口地址。
环回口建邻:需 TCP 可达,修改最大跳数(
ebgp-max-hop
),默认 TTL 为 1(需改为更大值,如 2)。
注意
若路由器同时有 EBGP 和 IBGP 邻居,需修改 IBGP 邻居的下一跳为本机(
next-hop-local
),否则路由可能不可达。
十、BGP 基本配置
1. 启动 BGP 并创建连接
[huawei] bgp <as-number> # 启动BGP,指定AS编号
[huawei-bgp] router-id <router-id> # 配置Router-id(可选,建议配置)
[huawei-bgp] peer <ip-address> as-number <as-number> # 指定对等体及AS
[huawei-bgp] address-family ipv4 unicast # 进入IPv4地址族(华三设备)
[huawei-bgp-ipv4] peer <ip-address> enable # 使能对等体路由交换
2. 优化配置
[huawei-bgp] peer <ip-address> connect-interface <interface> # 指定TCP连接源接口
[huawei-bgp] peer <ip-address> ebgp-max-hop <hop-count> # 修改EBGP最大跳数
3. 发布路由
# 宣告本地路由
[router-bgp] network <ip-address> [mask <mask-length>] [route-policy <name>]
# 引入其他协议路由
[router-bgp] import-route <protocol> [process-id] [route-policy <name>]
4. 查看命令
display bgp peer # 查看BGP邻居状态
display bgp routing-table # 查看BGP路由表
十一、BGP 选路原则(13 条)
丢弃下一跳不可达的路由。
优选
Preferred-value
(首选项)最大的路由(默认 0,华为 / H3C 私有属性)。优选
Local_Pref
(本地优先级)最高的路由(默认 100,仅 IBGP 传递)。依次选择
network
生成、import-route
引入、聚合的路由。优选
AS_PATH
最短的路由。依次选择
ORIGIN
为 IGP(i)、EGP(e)、Incomplete(?)的路由。优选
MED
(多出口鉴别器)最小的路由(默认 0,相邻 AS 间传递)。依次选择从 EBGP、联盟 EBGP、联盟 IBGP、IBGP 学到的路由。
优选下一跳 IGP 度量值最低的路由。
优选
CLUSTER_LIST
最短的路由。优选
ORIGINATOR_ID
最小的路由。优选 Router ID 最小的路由器发布的路由。
优选 IP 地址最小的对等体发布的路由。
十二、BGP 属性
1. 公认必遵属性(所有路由必须携带)
AS_PATH:记录路由经过的 AS 编号,用于防环和选路(短路径优先)。
Next-hop:路由的下一跳 IP,EBGP 邻居间传递时更新,IBGP 邻居间传递时不变(需手动修改为本地)。
ORIGIN:路由来源,优先级:IGP(i)> EGP(e)> Incomplete(?)。
2. 公认可选属性(所有路由器识别,非必须携带)
Local_Pref:本地优先级,仅 IBGP 传递,值越大越优先(默认 100)。
Atomic-aggregate:自动聚合标记。
3. 可选传递属性(可不识别,但会传递)
Community(团体属性):标记路由,用于批量控制,如
no-export
(不传出 AS)、no-advertise
(不向任何对等体通告)。
4. 可选非传递属性(可不识别,不传递)
MED:多出口鉴别器,用于相邻 AS 间选路,值越小越优先。
Cluster_list:路由反射器集群列表,用于防环。
Originator_ID:路由反射器中路由的始发者 ID,用于防环。
十三、大规模 BGP 网络优化
1. 对等体组(Peer Group)
定义:将具有相同属性的对等体分组,简化配置。
配置示例:
[R2-bgp] group <group-name> internal # 创建IBGP对等体组 [R2-bgp] peer <ip1> group <group-name> # 加入对等体 [R2-bgp] peer <group-name> connect-interface LoopBack 0 # 统一配置更新源
2. 路由聚合
自动聚合:仅对引入的 IGP 路由聚合到主类(可能产生黑洞),命令:
summary automatic
。手动聚合:精确汇总,可抑制明细路由,命令:
[router-bgp] aggregate <network> <mask> detail-suppressed # 抑制明细路由
3. 路由反射器(RR)
作用:替代 IBGP 全连接,减少邻居数量,允许将从 IBGP 学到的路由反射给其他 IBGP 邻居。
角色:RR(反射器)、Client(客户机)、非客户机。
反射规则:
从非客户机学到的路由,仅反射给客户机。
从客户机学到的路由,反射给所有客户机和非客户机(除始发者)。
从 EBGP 学到的路由,反射给所有客户机和非客户机。
防环机制:
Cluster_list
(记录经过的 RR 集群 ID)和Originator_ID
(路由始发者 ID)。配置示例:
[R2-bgp] peer <client-ip> reflect-client # 配置客户机 [R2-bgp] reflector cluster-id <id> # 配置集群ID(可选)
4. BGP 联盟(Confederation)
作用:将一个 AS 划分为多个子 AS(用私有 AS 编号),子 AS 间用 EBGP 连接,减少 IBGP 邻居。
配置示例:
[R2] bgp <子AS编号> [R2-bgp] confederation id <主AS编号> # 声明主AS [R2-bgp] confederation peer-as <其他子AS编号> # 声明联盟内其他子AS
5. 团体属性(Community)
作用:标记路由,批量控制路由发布范围。
公认团体属性:
Internet
:默认,可通告给所有对等体。no-advertise
:不向任何对等体通告。no-export
:不传出 AS(但可在联盟内子 AS 间传递)。
配置示例:
[R1] route-policy <name> permit node 10 [R1-route-policy] apply community no-export # 标记为no-export [R1-bgp] peer <ip> route-policy <name> export # 应用策略 [R1-bgp] peer <ip> advertise-community # 允许传递团体属性
6. 路由衰减(Route Dampening)
作用:解决路由振荡(频繁上下线),通过惩罚值抑制不稳定路由。
参数:抑制阈值(默认 2000)、重用阈值(默认 750)、半衰期(默认 15 分钟)。
配置示例:
[router-bgp] dampening # 启用默认参数
十四、BGP 实验实例
1. 基本配置实验
目标:配置 EBGP 和 IBGP 邻居,宣告业务网段,解决路由黑洞。
关键步骤:
配置 IP 和 OSPF(AS 内部互通)。
建立 EBGP(直连)和 IBGP(环回口)邻居。
宣告业务网段,通过
import-route bgp
将 BGP 路由引入 IGP,解决黑洞。
2. 路由控制实验
目标:通过修改属性控制选路(MED、Preferred-value、AS_PATH、Local-pref)。
示例:修改 MED 使路由优选某路径:
[R2] acl 2000 # 抓取目标网段 [R2-route-policy] apply cost 100 # 提高MED值 [R2-bgp] peer <ip> route-policy <name> export # 应用策略
3. 路由反射器实验
目标:配置 RR 减少 IBGP 邻居,实现路由反射。
关键步骤:
配置 OSPF 确保 TCP 可达。
建立 IBGP 对等体组,配置 RR 及客户机。
聚合业务网段,抑制明细路由。