1112 字
6 分钟
BGP协议

​​ 一、BGP 是什么?​#

​BGP(Border Gateway Protocol,边界网关协议)​

  • ​ 定位 ​​:属于 ​​ 路径矢量路由协议 ​​(Path Vector Protocol),工作在 ​​OSI 第 4 层 ​​(基于 TCP 端口 179)。
  • ​ 核心作用 ​​:在不同 ​​ 自治系统(Autonomous System, AS)​​ 之间交换路由信息。
  • ​ 协议版本 ​​:
    • ​eBGP(外部 BGP)​​:用于不同 AS 之间(例如企业网与运营商之间)。
    • ​iBGP(内部 BGP)​​:用于同一 AS 内部(例如数据中心 Spine-Leaf 架构)。
  • ​ 核心特点 ​​:
    • ​ 无自动拓扑发现 ​​:需手动配置邻居(Peer),通过 TCP 会话建立连接。
    • ​ 增量更新 ​​:仅发送变化的路由,非周期性广播,效率极高。
    • ​ 策略驱动 ​​:路由决策高度依赖属性(Attributes),实现灵活路径控制。

​​ 二、BGP 工作原理深度解析 ​​#

1. ​​ 邻居建立(Peer Establishment)​​#

  • ​ 手动配置 ​​:指定对端 IP 地址及 AS 号(例如:neighbor 192.0.2.1 remote-as 64512)。
  • ​ 状态机 ​​:经历Idle → Connect → Active → OpenSent → OpenConfirm → Established
  • ​Keepalive 维护 ​​:默认 60 秒发送 Keepalive 包保活会话(Hold Time 通常为 180 秒)。

2. ​​ 路由通告(Route Advertisement)​#

  • ​ 规则 ​​:
    • 从 eBGP 学到的路由:​​ 可通告 ​​ 给 iBGP 和 eBGP 邻居。
    • 从 iBGP 学到的路由:​​ 不可通告 ​​ 给其他 iBGP 邻居(防止环路,需通过路由反射器解决)。
  • ​ 路由聚合 ​​:支持手动汇总(aggregate-address)以减少路由表规模。

3. ​ 路径选择算法(BGP Best Path Selection)​​#

当收到多条路径时,依次按属性优先级决策:

  1. ​Highest Weight​​(思科私有,本地优先级)
  2. ​Highest LOCAL_PREF​​(公认必遵,AS 内优先级)
  3. ​Locally Originated Routes​​(本地始发优先)
  4. ​Shortest AS_PATH​​(最短 AS 路径)
  5. ​Lowest ORIGIN Type​​(IGP < EGP < Incomplete)
  6. ​Lowest MED​​(多出口鉴别器,用于影响入站流量)
  7. ​eBGP > iBGP Paths​​(外部路径优先)
  8. ​Lowest IGP Metric​​(到 NEXT_HOP 的 IGP 开销)
  9. ​Oldest Path​​(历史最长路径,防振荡)
  10. ​Router ID 最小 ​​ → ​​Peer IP 最小 ​

📌 ​​ 关键机制 ​​:BGP 路由黑洞问题可通过 ​​BGP 同步规则(已弃用)​​ 或 ​​MP-BGP + L3VPN​​(虚拟化场景)解决。

​​ 三、BGP 的核心应用场景 ​​#

✅ ​​ 场景 1:互联网出口多链路负载均衡(企业网络)​​#

  • ​ 技术实现 ​​:
    • 通过 ​​LOCAL_PREF​​ 或 ​​AS_PATH Prepending​​ 调控不同运营商链路的出向流量。
    • 使用 ​​MED​​ 引导运营商入站流量分布。
  • ​ 高可用方案 ​​:结合 ​​BFD(双向转发检测)​​ 实现 50ms 级故障切换。

✅ ​​ 场景 2:数据中心 Spine-Leaf 架构(虚拟化/云)​​#

  • ​Underlay​​:通常用 OSPF/IS-IS 建立底层可达。
  • ​Overlay​​:在 Spine/Leaf 间部署 ​​iBGP​​,配合 ​​EVPN(Ethernet VPN)​​:
# Cisco Nexus示例:Leaf交换机配置
feature bgp
router bgp 65001
neighbor 10.1.1.1 remote-as 65001 # Spine IP
address-family l2vpn evpn
send-community extended
  • ​ 价值 ​​:实现 ​​VXLAN 隧道的自动建立 ​​,支撑租户网络快速部署。

✅ ​ 场景 3:云专线互联(Multi-Cloud)​​#

  • ​AWS Direct Connect / Azure ExpressRoute​​:
    • 通过物理专线建立 ​​eBGP 会话 ​​,实现本地 IDC 与云 VPC 路由交换。
    • 使用 ​​Community Tags​​ 控制路由传播范围(例如aws:propagate)。
Terminal window
# AWS BGP配置示例
aws ec2 create-vpn-connection --customer-gateway-id cgw-1a2b3c --vpn-gateway-id vgw-4d5e6f --type ipsec.1 --options "{\"StaticRoutesOnly\": true}"

✅ ​ 场景 4:SD-WAN 网络 ​​#

  • ​Control Plane​​:Hub 节点通过 eBGP 向分支推送路由。
  • ​ 策略示例 ​​:根据链路质量动态调整 ​​LOCAL_PREF​​,实现应用智能选路。

✅ ​​ 场景 5:Kubernetes 网络(CNI 插件)​​#

  • ​Calico​​/​​Cilium​​:利用 BGP 实现 Pod 跨节点路由互通,替代 Overlay 封装开销:
# Calico BGP配置(peer定义)
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
name: peer-to-spine
spec:
peerIP: 192.168.0.1
asNumber: 64512

​ 四、虚拟化环境中 BGP 的特别注意事项 ​​#

  1. ​ 路由反射器(RR)必要性 ​​:
    • iBGP 全互联规模限制 → 在 Spine 层部署 RR,Leaf 作为 Client。
  2. ​TTL Security​​:
    • 配置neighbor x.x.x.x ttl-security hops 1防止远程攻击(仅接受直连邻居)。
  3. ​ 性能优化 ​​:
    • 虚拟路由器(如 vRouter)需开启 ​​TCP MSS Adjust​​ 避免 PMTUD 问题。
  4. ​ 自动化集成 ​​:
    • 通过 Ansible/Terraform 模板配置 BGP Peer,实现 IaC(基础设施即代码)。

​​ 五、总结要点 ​​#

​ 特性 ​​BGP​对比 ​​OSPF/IS-IS​
协议类型路径矢量(Policy-Driven)链路状态(Topology-Driven)
收敛速度慢(侧重稳定性)快(秒级)
适用场景跨域路由、大规模网络单 AS 内部快速收敛
虚拟化应用云专线、SDN Underlay、K8s CNI传统数据中心三层架构

⚡️ ​ 在 NFV(网络功能虚拟化)场景中,建议结合 ​​FRRouting(FRR)​​ 开源套件部署 BGP,可无缝集成到 Kubernetes 或 OpenStack 环境。