BGP线路切换故障节点自动收敛需要多长时间,业务会断多久

BGP线路切换这件事,很多人听销售讲的时候会觉得很简单:一条线路挂了,自动切到另一条线路,业务继续跑。实际落到生产环境里,问题没有这么干净。BGP能自动收敛,但它不是毫秒级热切换;线路能切过去,但中间会有黑洞时间;业务会不会断,也不只看BGP,还要看应用层连接、DNS、客户端重试、TCP超时这些东西。

实际使用中发现,大家最关心的不是“BGP协议原理是什么”,而是下面几个问题:机房一条运营商线路挂了,访问会中断多久?高防节点被打挂后,回源会不会断?多线BGP是不是一定比单线稳?为什么有的故障30秒恢复,有的要几分钟?这些问题都和BGP收敛有关。

BGP自动收敛不是瞬间切换

BGP的核心逻辑是路由通告和路由撤销。比如一个机房对外宣告了某个IP段,电信、联通、移动、海外运营商都通过BGP学习到这条路由。正常情况下,用户访问这个IP,会按照运营商网络里的最优路径走到机房。

当某条线路、某个边界路由器、某个上游节点故障时,BGP需要完成几个动作:发现邻居不可用,撤销不可达路由,重新计算可用路径,把新的路由传播给上游和更远的网络。这个过程就是收敛。

这里有个容易误解的点:BGP切换的速度,不等于服务器内部网卡切换的速度,也不等于负载均衡切换的速度。BGP是公网路由层面的变化,它要经过运营商网络传播,不是你机房里一台交换机改个转发表那么快。

实际业务中常见的收敛时间范围

如果只给一个数字,容易误导。BGP故障收敛时间和故障类型、运营商策略、路由器配置、前缀长度、是否有BFD、是否跨境、是否涉及高防清洗都有关系。生产环境里比较常见的范围可以这样看:

同机房内BGP边界路由器单点故障,如果启用了BFD或者较短的Keepalive/Hold Timer,故障检测可能在1到5秒内完成,整体收敛大概5到30秒。

普通公网BGP上游线路中断,没有BFD,只依赖BGP Hold Timer,常见中断时间在30秒到180秒。有些传统运营商默认Hold Timer是90秒或180秒,邻居断开前会等一段时间,这段时间内流量可能还在往故障路径送,也就是黑洞。

跨运营商、跨区域、跨境线路切换,比如国内用户访问香港、韩国、美国节点,路由传播链条更长,收敛经常是1到5分钟。不是每次都这么慢,但遇到上游路由策略复杂、路径抖动、国际出口拥塞时,确实会出现分钟级恢复。

DDoS场景下的BGP牵引或高防切换,时间差异更大。如果是预先接入的高防BGP清洗,路由已经准备好,切换可能在几十秒到几分钟;如果是临时宣告、临时牵引,可能需要几分钟甚至更久,而且还要看上游是否接受你的路由前缀。

用一组更接近实战的数字看,会比较直观:

故障场景 | 常见检测方式 | 常见收敛时间 | 业务感知

服务器自身宕机,但BGP线路正常 | 负载均衡健康检查 | 3到30秒 | HTTP可能短暂502,长连接会断

单条上游线路中断,BGP有BFD | BFD检测+BGP撤路由 | 5到30秒 | 部分用户请求超时,重试后恢复

单条上游线路中断,无BFD | BGP Hold Timer | 30到180秒 | 明显中断,TCP连接大量超时

运营商骨干路由异常 | 运营商内部收敛 | 1到5分钟 | 不同地区恢复时间不一致

跨境BGP路径切换 | BGP传播+国际链路策略 | 1到10分钟 | 国内不同运营商表现差异明显

DDoS触发高防BGP牵引 | 高防平台宣告路由 | 30秒到5分钟 | 攻击期间可能先抖动再恢复

业务到底会断多久,要分“网络断”和“应用断”

很多排障记录里会写“BGP切换30秒完成”,但业务方反馈“断了2分钟”。这两个说法可能都对。网络层恢复不代表应用层立刻恢复。

比如一个用户正在和服务器保持TCP长连接,BGP路径突然中断。老路径黑洞后,TCP不会马上知道链路没了,它会重传,重传间隔逐步增大。等BGP新路径收敛完成后,新建连接可能已经能访问,但旧连接不一定自动恢复。Web请求还好,刷新或重试就过去了;游戏、金融行情、IM、远程桌面这类长连接业务,感知会更明显。

所以谈业务中断时间时,要拆成两层看:

网络不可达时间:从故障发生到公网路由恢复可达,一般是几秒到几分钟。

业务恢复时间:从用户请求失败到应用层重新建立连接、登录态恢复、缓存重新拉取,可能比网络恢复时间更长。

举个实际场景,韩国优化线路节点到国内访问,某次国际出口路径异常,BGP层面大概70秒后新路径稳定,但游戏客户端里部分玩家重连耗时接近2分钟。不是服务器还没通,而是客户端TCP重试、会话重建和游戏逻辑重新进房间叠加了时间。

BGP收敛慢,常见卡在这几个地方

BGP Hold Timer设置偏长

BGP默认不是为秒级故障切换设计的。传统配置里,Keepalive 60秒,Hold Timer 180秒很常见。也就是说,如果对端静默故障,本端可能要等到Hold Timer过期才认为邻居断了。这种情况下,自动收敛再怎么“自动”,前面已经等了几十秒到几分钟。

生产环境里如果对稳定性要求高,一般会配合BFD,把故障检测压到秒级甚至亚秒级。但BFD不是随便开就完事,链路质量不好、设备性能不足、跨运营商链路抖动时,BFD太激进反而可能导致误切换,路由频繁抖动比慢一点更难受。

上游运营商路由策略不一致

BGP不是全网统一听你指挥。你撤销一条路由后,不同上游、不同运营商、不同区域的路由更新时间可能不一样。有的节点几十秒刷新,有的节点要几分钟。国内三网、电信CN2、联通、移动、教育网、海外运营商之间的策略差异很明显。

这也是为什么同一个故障,有人反馈北京电信好了,广州移动还不行,上海联通访问绕路。不是业务系统分裂了,而是不同网络看到的BGP路径不一样。

路由前缀太细或宣告策略受限

公网BGP路由不是你想宣告多细就多细。IPv4里常见可接受的最小前缀是/24,更细的/25、/26很多运营商不会收,或者收了也不一定传播。如果高防、 Anycast、灾备方案里没有提前规划好IP段,临时切换时就可能遇到宣告不出去、传播不完整的问题。

这里补充一点:很多人买服务器只看“BGP多线”几个字,但真正到故障切换时,要看服务商有没有自己的BGP资源、上游质量、是否支持高防牵引、是否有线路监控和人工介入能力。购买时如果业务在游戏、企业站、高防、海外回国这类场景,可以看看129云这类有云服务器、G口大带宽、高防服务器和海外线路方案的服务商,落地前把线路类型、故障切换方式、回国优化路径问清楚,比后面出故障再排查省事。需要确认具体节点和方案,也可以直接打客服热线400-9177118。

故障不是“断”,而是“半死不活”

BGP最怕的不是链路彻底断,彻底断反而容易判断。麻烦的是丢包、抖动、延迟飙高,但BGP邻居还活着。比如线路丢包30%,BGP Keepalive还能过去,邻居不掉,路由不撤,用户访问却已经很差。

这种情况下,单纯依赖BGP协议本身不够,需要业务探测、链路质量监控、主动降权、流量调度配合。比如HTTP探测连续失败就从SLB摘除节点,游戏网关探测RTT超过阈值就不再分配新连接,跨境节点发现回国链路丢包升高就切换备用线路。

不同业务对BGP切换的感知差别很大

同样是60秒网络抖动,不同业务感受完全不同。

普通企业官网:用户刷新一次就恢复,监控里可能看到一小段5xx或超时。只要不是频繁发生,业务侧一般能接受。

API接口服务:影响会更明显。调用方如果没有重试和熔断,可能直接报错;如果有超时重试,短暂BGP切换可以被覆盖一部分,但要注意重试风暴,别把恢复后的服务打爆。

游戏业务:最敏感。BGP切换几十秒,在线玩家可能掉线,语音、战斗、匹配都会受影响。游戏更适合用多节点接入、就近调度、连接迁移、断线重连保护,不要把所有希望压在BGP自动收敛上。

直播和音视频:短抖动可以靠缓冲抗住,长一点就会卡顿、重连。推流端比播放端更敏感,推流断了后,CDN恢复链路也需要时间。

高防业务:攻击触发清洗时,BGP牵引本身需要时间,清洗中心也要识别、建策略、回源。防护能力够不够是一方面,牵引是否提前接入、回源是否稳定、源站是否隐藏,都会影响最终中断时长。

多线BGP能降低故障影响,但不是零中断

多线BGP的价值在于,当某个运营商路径出问题时,还有其他路径可用;不同网络的用户可以走相对更优的路由;服务商可以通过Local Preference、MED、AS Path等策略控制出入口方向。

但多线BGP不是双活数据库,也不是应用层无感迁移。公网路由切换一定存在传播时间,TCP连接大概率会受影响。它解决的是“有没有路”和“路能不能自动换”,不保证“用户完全无感”。

多说一句,如果业务方要求“单节点故障用户完全无感”,不能只靠BGP。需要把架构往上做:多可用区、多地域、SLB健康检查、客户端重连、DNS调度、Anycast、会话保持降级、数据复制,这些都要一起看。

韩国、海外回国线路的切换时间要更保守估计

海外节点回国访问,尤其是韩国、日本、香港、美国到中国大陆,线路质量差异很大。精品线路、CN2、GIA、优化回国和普通国际线路,在正常延迟、丢包、故障绕路时差别非常明显。

比如韩国普通线路到国内可能平时延迟还可以,但一旦国际出口拥塞或绕路,延迟可能从40ms到80ms跳到150ms以上,丢包也会上来。精品线路或回国优化线路的价值,不只是低延迟,还包括路径更稳定、故障时可控性更好。

如果是面向国内用户的韩国业务节点,可以关注129云的韩国-B型和韩国-C型,配置里带傲盾防火墙、精品线路、回国优化,比较适合游戏加速、企业访问、轻量应用和需要海外节点但又在意国内访问质量的场景。韩国-B型是2核4G、50GB SSD、6Mbps带宽,韩国-C型是4核4G、60GB SSD、7Mbps带宽,业务量稍大一点可以直接看C型。

国内建站和单运营商优化线路怎么理解

不是所有业务都必须上多线BGP。很多企业站、展示站、区域性业务,如果用户主要来自电信网络,选择电信优化线路反而性价比更高。比如内蒙电信-A型,2C、2G DDR4 ECC、40G SSD、30Mbps峰值、电信优化线路,适合建站、后台系统、下载量不大的企业应用。

但单运营商线路的预期要讲清楚:电信用户体验通常不错,联通、移动用户可能会跨网,故障切换也没有多线BGP那么灵活。如果业务覆盖全国三网,或者客户对可用性要求高,就要考虑多线BGP、高防BGP或多节点调度。

怎么估算一次BGP故障的实际中断时间

现场排障时,不建议只看“ping什么时候通”。更准确的做法是把时间线拆出来。

故障发生时间:链路开始丢包、路由器接口Down、上游告警、流量突降,这几个时间点可能不一样。

BGP邻居Down时间:看路由器日志,确认BGP session什么时候断开。如果邻居一直没断,但业务访问失败,说明可能是质量劣化,不是硬中断。

路由撤销时间:看本端是否撤销前缀,上游是否收到撤销。多上游环境下,每个上游都要看。

外部可达恢复时间:从不同运营商探测,电信、联通、移动、海外节点分别记录。只从机房内部ping公网IP意义不大。

业务恢复时间:看Nginx 5xx、应用错误率、TCP重连数、在线人数、订单失败率、API超时率。网络通了但错误率还高,说明应用层还在恢复。

一条比较真实的时间线可能是这样:

10:00:00 上游链路开始丢包。

10:00:08 监控发现HTTP超时率升高。

10:00:35 BGP邻居Hold Timer触发,session断开。

10:00:42 本端撤销故障上游路由,备用上游成为最优路径。

10:01:10 电信访问恢复。

10:01:35 联通访问恢复。

10:02:20 移动部分地区恢复。

10:03:00 应用错误率回到正常范围。

这次故障如果只看BGP设备,会说收敛大约70秒;业务侧会说影响3分钟。两个口径不同,复盘时要说明白。

减少业务中断,BGP之外还要做的事

健康检查不要只检查ICMP

ping通不代表业务可用。应用健康检查至少要覆盖TCP端口、HTTP状态码、关键接口、数据库依赖。很多节点网络没断,但应用线程池满了、磁盘IO打满了、数据库连接耗尽了,BGP不会帮你切。

长连接业务要设计重连策略

游戏、IM、音视频、WebSocket业务,要把断线重连当成常态处理。客户端重连间隔不能太激进,也不能太慢。常见做法是1秒、2秒、5秒、10秒递增,并加随机抖动,避免大量客户端同时冲回来。

DNS调度不能替代BGP收敛

DNS可以做多节点调度,但DNS缓存不可控。即使TTL设置30秒,运营商Local DNS、客户端、浏览器、APP内部缓存都可能让旧解析继续存在。DNS适合做区域调度和灾备切换,不适合单独承担秒级故障恢复。

高防场景要提前接入,不要等被打了再临时改

DDoS来了以后再临时接高防,时间通常不可控。DNS切换有缓存,BGP牵引要等路由传播,源站IP如果已经暴露还可能被继续打。高防业务最好提前规划:源站隐藏、回源白名单、BGP牵引策略、清洗阈值、备用节点都要提前压测。

比较合理的业务预期

如果机房和线路配置比较规范,BGP有BFD,上游质量稳定,单线路硬故障导致的自动收敛,业务中断通常可以控制在10到60秒级别。

如果是普通BGP默认计时器,没有BFD,或者跨运营商、跨境链路,业务中断按1到5分钟预估更稳妥。

如果是DDoS、高防牵引、运营商骨干异常、国际出口拥塞,不要承诺固定几十秒恢复。可以给出区间,比如30秒到10分钟,并说明不同运营商、不同地区恢复时间可能不同。

真正对外做SLA时,建议不要写“BGP自动切换无中断”。更准确的说法是:BGP支持故障自动收敛,常见线路故障可在秒级到分钟级恢复,具体业务感知取决于故障类型、路由传播、应用连接和客户端重试机制。

排查时几个命令和指标比较有用

网络侧可以看BGP邻居状态、路由表变化、前缀宣告、AS Path变化、上游接收情况。常用方向包括show bgp summary、show bgp ipv4 unicast、show route advertising-protocol、looking glass、多地traceroute、多运营商探测。

业务侧重点看请求成功率、P95/P99延迟、TCP重传、连接数、5xx比例、客户端重连数。BGP故障经常不是所有请求一起失败,而是某些运营商、某些地区、某些路径先异常。

监控最好按运营商维度拆开。只放一个北京探测点,会漏掉很多问题。国内业务至少放电信、联通、移动三个方向;海外回国业务要加国内多省份探测;高防业务还要看清洗前后路径和回源质量。

一个比较现实的判断标准

BGP线路切换故障节点自动收敛,快的时候几秒到几十秒,普通情况下几十秒到几分钟,复杂公网和跨境场景可能到5到10分钟。业务会断多久,不能只看BGP收敛时间,还要叠加TCP重连、应用恢复、客户端重试和不同运营商路由传播差异。

如果业务只是网站访问,几十秒抖动可能只是用户刷新一次;如果是游戏、高频API、支付、实时音视频,同样的BGP切换就可能表现成掉线、接口失败、推流中断。选线路和做架构时,按最敏感的业务来设计,不要按最乐观的BGP收敛时间来承诺。