一、BGP 基础
- 产生背景与核心概念
- BGP(边界网关协议)是自治系统(AS)间的动态路由协议,属于外部网关协议(EGP)。
- 自治系统(AS)是由统一管理、运行同一 IGP 协议的路由器组成的网络范围,使用 AS 编号标识。AS 编号分为 2 字节(0-65535,公有 1-64511,私有 64512-65535)和 4 字节(公有 65536–4199999999,私有 4200000000–4294967294)。
- 协议特性
- 仅负责 AS 间路由传递,AS 内部路由扩散依赖 IGP。
- 基于路径矢量算法,以 AS 为 “跳” 单位,通过 AS_PATH 属性防环(检查本地 AS 号是否在路径中,存在则不学习)。
- 基于 TCP 协议(端口 179)传输,需手动配置邻居,首次收敛发送完整路由表,后续增量更新。
- 支持路由聚合、过滤和策略控制,具备多种路由属性用于选路。
- 对等体类型
- EBGP 对等体:跨 AS 邻居,通常物理直连,从 EBGP 学到的路由会通告给所有对等体。
- IBGP 对等体:同一 AS 内邻居,非直连需保证 TCP 可达,从 IBGP 学到的路由默认不通告给其他 IBGP 邻居(水平分割)。
- 路由黑洞与解决
- 原因:IBGP 邻居间存在未运行 BGP 的路由器,无法获取 BGP 路由导致数据包丢弃。
- 解决方法:BGP 引入 IGP、配置静态路由、IBGP 全连接、路由反射器或联盟。
- 消息种类与状态机
- 消息类型:OPEN(建立连接)、Keepalive(保活,默认 60s 发送,超时 180s)、Update(路由更新)、Notification(错误通知,关闭连接)、Route-refresh(路由刷新)。
- 状态机:Idle→Connect→Active→OpenSent→OpenConfirm→Established,各状态对应 TCP 连接和邻居协商过程。
- 邻居建立条件
- IBGP:直连或环回口建邻,环回口需修改更新源,TTL 默认 255。
- EBGP:直连或环回口建邻,环回口需修改最大跳数(默认 TTL=1),需保证 TCP 可达。
- 基本配置:启动 BGP 进程、配置 Router-ID、指定邻居及 AS 号、使能地址族、发布路由(network 或 import-route)。
二、BGP 选路及属性
- 选路原则(13 条核心顺序)
- 丢弃下一跳不可达路由。
- 优选 Preferred-value(私有属性,值越大越优)。
- 优选 Local-Preference(公认可选,值越大越优,仅 IBGP 传递)。
- 优先 network 命令生成路由,其次 import-route、聚合路由。
- 优选 AS_PATH 最短路由。
- 按 Origin 属性(IGP>EGP>Incomplete)选择。
- 优选 MED 值最低路由(可选非传递,相邻 AS 间有效)。
- 优先从 EBGP、联盟 EBGP、联盟 IBGP、IBGP 学来的路由。
- 后续按 Cluster_list 长度、Originator_ID、Router ID、对等体 IP 地址依次选择。
- 负载分担:默认选唯一最优路由,可通过
maximum load-balancing
命令配置等价路径负载分担。 - 路由发布策略
- 仅发布最优路由(BGP 路由表或 IP 路由表,取决于配置)。
- 从 EBGP 学到的路由通告给所有对等体,从 IBGP 学到的路由仅通告给 EBGP 对等体(受水平分割限制)。
- 核心属性
- 公认必遵:AS_PATH(防环 + 选路)、Next-Hop(下一跳地址)、Origin(路由来源)。
- 公认可选:Local-Preference(AS 内选路)、Atomic-aggregate(自动聚合标记)。
- 可选传递:Community(团体属性,标记路由特征,如 no-export 限制路由传播)。
- 可选非传递:MED(多出口鉴别器,相邻 AS 入口选路)、Cluster_list(路由反射器防环)、Originator_ID(路由反射器防环)。
三、大规模 BGP 网络优化技术
- 对等体组(Peer Group):将相同属性的对等体分组,简化配置,分为 IBGP 和 EBGP 对等体组。
- 路由聚合
- 自动聚合:仅对引入的 IGP 路由聚合至主类,易产生黑洞,默认关闭。
- 手工聚合:精确汇总,可抑制明细路由(
detail-suppressed
)、继承明细属性(as-set
)或选择性抑制(suppress-policy
)。
- 路由反射器(RR)
- 替代 IBGP 全连接,减少邻居数量,解决黑洞问题。
- 角色:RR(反射器)、Client(客户机)、非客户机,反射规则为从 Client 学来的路由反射给所有 Client 和非 Client,从非 Client 学来的路由仅反射给 Client,从 EBGP 学来的路由反射给所有。
- 防环机制:Cluster_list(记录反射器集群 ID)和 Originator_ID(路由始发者 ID)。
- 联盟(Confederation):将 AS 划分为子 AS,子 AS 内 IBGP 全连接,子 AS 间联盟 EBGP 连接,减少邻居数量,子 AS 使用私有 AS 号。
- 团体属性(Community):标记路由特征,公认属性包括 Internet(默认)、no-advertise(不通告任何对等体)、no-export(不传出 AS)等,需手动开启传递(
advertise-community
)。 - 路由衰减(Route Dampening):抑制路由振荡,通过惩罚值、抑制阈值、重用阈值和半衰期控制路由可用性。
四、BGP MPLS VPN 技术
- 技术背景:解决传统 VPN 隧道扩展性差、地址冲突、管理复杂问题,实现动态隧道、地址冲突解决和私网路由可控。
- MPLS 隧道:天然隧道,基于标签转发,中间路由器无需学习私网路由,支持倒数第二跳弹出(PHP)优化转发。
- 组网结构:CE(用户边缘)、PE(运营商边缘)、P(运营商核心),PE 通过多 VRF(VPN 实例)隔离不同 VPN,解决地址冲突。
- MP-BGP(多协议 BGP)
- 扩展 BGP 支持 VPNv4 地址族,通过 MP_REACH_NLRI 和 MP_UNREACH_NLRI 传递私网路由。
- RD(路由区分符):标识路由所属 VPN 实例,解决地址冲突,格式为 AS: 编号或 IP: 编号。
- RT(路由目标):控制路由导入 / 导出,决定路由传播范围,包括 Export Target 和 Import Target。
- 私网标签:PE 为 VPN 路由分配标签,用于数据转发时的 VPN 实例识别。
- 配置流程
- 公网配置:MPLS LDP 建邻、IGP 保证 PE 环回可达。
- VPN 实例配置:创建 VRF、绑定接口、配置 RD 和 RT。
- 路由交互:PE 与 CE 间运行 IGP/BGP,PE 间通过 MP-BGP(VPNv4 地址族)传递私网路由,配置路由引入。
五、BGP MPLS VPN 跨域方案
- Option A:ASBR-PE 互作 CE,通过普通 EBGP 传递 IPv4 路由,ASBR 绑定 VPN 实例,适合 VPN 数量少的场景。
- Option B:ASBR 间通过 MP-EBGP 传递 VPNv4 路由,取消 ASBR 的 RT 检查(
undo policy vpn-target
),私网标签在 ASBR 替换,适合中小规模网络。 - Option C:PE 跨 AS 建立 MP-EBGP 邻居,ASBR 通过 BGP 传递带标签的公网路由,VPN 路由仅在 PE 上存在,适合大规模跨域网络。