混合云专线BGP双活:让IDC与公有云跑出“两条腿走路”的可靠节奏

当企业同时运营本地数据中心和公有云时,网络中断就是业务灾难。本文用大白话解释什么是混合云专线、BGP协议如何工作,以及如何通过BGP双活架构让两条专线同时跑起来,实现负载均衡与自动故障切换,让小白也能理解高可用网络的底层逻辑。文章还会说明如何判断配置是否生效,以及出现异常时应优先检查哪些环节。

混合云专线BGP双活:让IDC与公有云跑出“两条腿走路”的可靠节奏
封面图:ZuCDN · ZuCDN 原创

为什么需要混合云专线?

先看关键判断

说到IDC Direct,很多问题都出在细节上。企业上云不是非黑即白的单选题。很多公司保留本地数据中心(IDC)来运行核心交易系统或合规敏感数据,同时把弹性业务、大数据处理搬到公有云。但两个“家”之间怎么通信?如果用公网,延迟高、不稳定、有安全风险。所以出现了专线(Direct Connect)——一条物理上独占的、从本地机房直连到云服务商机房的网络链路,延迟低、带宽稳、不出互联网。

但问题来了:一条专线挂了怎么办?比如光纤被挖断、运营商设备故障,业务就彻底断联。所以高可用方案必须上——让两条专线同时工作,一条挂了另一条无缝接管。这就是BGP双活的核心场景。

BGP是什么?为什么双活需要它?

实际操作要点

BGP(边界网关协议)是互联网的“路由交换机”——它负责告诉网络设备“去某个IP段走哪条路”。在专线场景里,你的本地路由器需要告诉云上的虚拟网关:“我这里有192.168.0.0/16这个网段,请通过专线A或专线B访问我”。

单条专线时,配置很简单,静态路由或者单条BGP会话就能搞定。但两条专线同时启用,如果路由信息冲突,就会导致网络混乱。BGP提供了一套精确的控制机制,让你可以灵活地定义:

  • 同一段IP路由通过两条专线同时发布(双活
  • 流量按照带宽比例分配(负载均衡
  • 某条专线故障时自动移除路由,切换到另一条(故障自愈

没有BGP,你只能用VRRP或者静态路由主备模式,带宽浪费一半,切换还慢。

IDC Direct:BGP双活的工作原理(小白友好版)

配置前的检查

想象你开着两辆货车(两条专线)往返于IDC和云端之间,每辆车上都贴着一张“送货地址”(IP路由)。BGP的作用就是给每个地址贴上标签:

  • AS号(自治系统号):相当于你的车队编号,云和本地各有一个,用来确认身份。
  • IP前缀:你要通告的网段,比如本地IDC的IP段、云上VPC的IP段。
  • MED(多出口区分):可以理解成“优先值”,值越小优先级越高。通过设置不同的MED,可以控制云上流量优先走哪条专线。
  • Local Preference(本地偏好):云上的路由策略,通常用于让从某个专线进来的流量优先出去。

在双活场景下,把相同的IP前缀通过两条专线的BGP会话同时通告给云端,并设置相同的MED值或根据带宽设置不同MED,云端就会通过ECMP(等价多路径)将流量分摊到两条专线上。本地端同理,通过接收来自云端的BGP路由,实现双向流量负载均衡。

动手配置:两步搭建BGP双活

第一步:准备网络基础设施

  • 在IDC侧部署一台支持BGP的企业级路由器(或防火墙),连接到两条独立的物理专线。两条专线最好走不同的物理路由(如不同方向的光纤、不同运营商),避免同时故障。
  • 在公有云侧,创建两个虚拟私有网关(VGW)专线网关,分别绑定到两条专线。注意:云侧通常要求使用不同的BGP AS号(比如云侧64512,本地侧65001),且同一个VPC只能关联一个虚拟网关,但虚拟网关可以连接多条专线。

第二步:建立BGP会话并通告路由

以AWS Direct Connect为例,在本地路由器上配置:

interface GigabitEthernet0/0/0
description Direct-Connect-Link-1
ip address 10.1.1.1 255.255.255.252

ip route 0.0.0.0 0.0.0.0 null0 // 或者特定网段

router bgp 65001
neighbor 10.1.1.2 remote-as 64512
neighbor 10.1.1.2 description BGP-to-AWS-VGW-1
neighbor 10.1.1.2 activate
network 192.168.0.0 mask 255.255.0.0 // 通告本地IDC网段

! 第二条专线类似,IP不同
interface GigabitEthernet0/0/1
description Direct-Connect-Link-2
ip address 10.2.2.1 255.255.255.252
router bgp 65001
neighbor 10.2.2.2 remote-as 64512
neighbor 10.2.2.2 activate

云侧(控制台或CLI)需要接受这两个BGP对等体,并启用多路径(ECMP)。在AWS中,虚拟网关默认支持ECMP,只要两条BGP会话通告相同的前缀,流量就会自动负载均衡。

关键注意:本地IDC通告的前缀必须精确,不要通告0.0.0.0/0(默认路由),除非你明确需要所有公网流量走专线。另外,两条专线的BGP keepalive间隔建议保持一致(默认60秒),hold time设120秒,保证故障检测及时。

验证双活是否生效

故障定位思路

配置完成后,执行以下检查:

  • 查看BGP邻居状态
    show ip bgp summary
    应该看到两个邻居都是“Established”状态
  • 查看路由表
    show ip route
    本地路由表中应该看到来自云端的VPC网段,且下一跳指向两个不同的对端IP(两条专线的对端),表示ECMP生效。
  • 双向连通性测试
    从IDC的一台服务器ping云上虚拟机,同时从云上ping本地服务器。使用traceroute观察路径,正常情况下应该看到两条路径交替出现(如果使用等价路由),或者始终走一条但另一条备用(如果没有开启负载均衡)。
  • 模拟故障(建议在维护窗口):
    拔掉一条专线的光纤或shutdown本地路由器接口,观察BGP会话是否在几秒内转换为Down,然后路由表自动清除了这条路径,流量全部切换到另一条专线。ping不会中断超过几秒。

回滚方案:配置错了怎么办?——IDC Direct

验证与回滚

如果双活导致路由循环、非对称流量或部分业务不通,需要立即回退到单条专线的主备模式:

  • 在本地路由器上,暂时关闭其中一条专线的BGP会话(neighbor x.x.x.x shutdown),等业务稳定后重新排查BGP属性。
  • 如果问题出在云侧,可以在云控制台上禁用该专线的BGP通告,比如设置AS路径预处理(将路由的AS_PATH加长)让该路径优先级降低。
  • 恢复原始配置前,先保存当前运行配置,然后加载之前备份的配置文件。

建议:初次配置双活时,先在一台测试路由器上通过BGP发布一个实验IP段,验证路由传递和负载均衡效果,再应用到生产网段。

常见的坑和避坑指南

路由黑洞

如果只通告了IDC网段,但没有通告云上VPC网段给IDC,那么IDC回包时不知道云上地址走哪条路,导致单向不通。解决办法是双向通告:IDC侧接收云上BGP路由,云侧也要将VPC网段通过BGP返回给IDC。

非对称路由

由于两条专线的延迟或路由策略不同,去程走专线A,回程走专线B,这本身不一定是问题,但可能导致NAT状态不一致、防火墙策略冲突。可以通过调整BGP的MED属性,让去程和回程强制走相同专线,或者允许非对称但确保防火墙等中间设备能正确处理。

带宽不匹配

如果一条专线是1Gbps,另一条是100Mbps,直接启用ECMP会把流量均匀分配到两条上(按IP哈希),导致小带宽的专线被塞满而丢包。此时应该使用权重ECMP或通过BGP路由属性手动分流:对大带宽专线的路由设置更优的MED,让大部分流量优先走它,小带宽专线只承担少量流量。

总结:双活高可用的适用环境

容易忽略的细节

BGP双活不是银弹,它适合对网络连续性要求高的业务(金融交易、在线支付、实时通信),且两条专线物理上真正冗余。如果预算有限只有一条专线,也可以做单设备单线路+4G备份,但故障切换速度较慢。另外,如果IDC和云之间交互的数据量极大,双活可以充分利用带宽,避免主备浪费。

对于刚开始接触混合云的小白,建议先理解BGP的基本概念,然后按照云厂商的快速入门文档搭建一个测试环境。用两条小带宽(比如50M)专线体验BGP会话建立、路由通告和故障切换,比纸上谈兵有效得多。记住一个原则:网络高可用不是靠硬件堆砌,而是靠协议设计和持续运维。真正做好IDC Direct,靠的不是参数堆砌,而是持续验证。

延伸阅读