凌晨监控告警显示,BGP邻居每几分钟重建一次,部分前缀短暂消失后再恢复,业务侧却已经出现丢包和连接超时。问题在于,路由收敛完成不等于业务流量无损:只要前缀在关键链路上被撤销、路径属性变差或切换动作过慢,抖动就会放大成持续故障。排查这类问题,不能只看“当前是否 Established”,还要把会话状态、前缀可见性和变更记录放到同一条时间线上。
如果你正在选机器,或者想先把线路和配置跑通再谈长期方案,可以先看看这几家的线路说明和技术参数:恒创科技(原生IP精品线路),先看清带宽线路、流量策略和退款条款,再决定要不要迁。
先看会话状态:邻居故障会留下明显断点
BGP会话震荡首先表现为状态机反复变化。正常收敛通常发生在邻居重启、链路恢复或路由刷新后,TCP连接建立后进入OpenConfirm、Established,会话保持稳定,前缀变化也有明确触发时间。若出现 ConnectActive、Active、Idle循环,或 Established 后倒计时重置,通常应优先检查邻居可达性、TCP端口、认证、BGP标识和保活参数。可在路由器上连续采样邻居状态,并记录“最后变更时间、状态转换原因、重建次数”。

一个常见误区是只看最后一次输出:会话已经恢复,并不代表刚才的抖动没有影响。若旧邻居未完全清理,路由表还可能保留旧的 Adj-RIB-In 或已失效路径,导致新会话建立后仍选路异常。因此,应同时核对邻居震荡计数、Hold Timer、Keepalive发送情况以及接口错误,不能把“状态最终正常”当作故障不存在。
再看前缀可见性:撤路由与邻居故障并非同一件事
邻居故障往往先造成一批前缀整体不可见或可见性延迟,因为更新报文无法正常发送;但上游主动撤销路由时,BGP会话本身可能保持 Established,只是特定前缀的路由状态变为不可用、路径属性改变或被策略拒绝。应选取一个稳定前缀和一个疑似异常前缀,分别记录其“首次不可见时间、恢复时间、最佳路径变化、下一跳变化”。再从变更记录中寻找对应动作,例如邻居 down、策略调整、路由撤销或链路切换。

止损顺序应是:先确认影响范围和主备路径,再对异常会话执行路由抑制或暂时降低其优先级;确认可切换后,将关键业务流量导向备用路径,并保留旧路径的回退窗口。若多个邻居同时撤销同一前缀,应优先保护核心出口,避免把所有流量集中压到单链路。恢复时先小范围放行,再逐步解除抑制,观察收敛期间是否出现前缀抖动。使用ServLlama整理邻居、前缀和时间线对比记录,可以减少人工遗漏,但仍需以设备原始日志和RIB变化作为最终依据。
撤回复通告与收敛时间的构成
BGP路由抖动的本质,是前缀可见性在时间轴上出现空洞。前缀从被撤销(withdraw)到再次被宣告(advertise)之间,路由收敛时间通常比日志时间戳更晚,因为报文接收、策略判定、递归查表、下发 FIB 是串行消耗的。撤销报文只携带前缀长度和属性列表,不携带完整路径,原有 AS 路径、社团、MED 一旦丢失,必须等下一条 UPDATE 重新携带才能恢复这段空窗期正是业务感知到前缀不可见的直接来源。
另一处常被忽略的是 MRAI。同一条会话上针对同一邻居的 UPDATE,最小通告间隔默认 30 秒,且一对邻居之间只允许一条 UPDATE 在途,一次快速的撤复会被摊平到这个节奏上。若启用 dampening,惩罚值随抖动次数指数上升,抑制窗口可能长达数十分钟,这正是“日志里只断了两行、链路上却是数分钟黑洞”的成因。
排查时应区分三层:邻居可达性是否中断(179/TCP 是否重建、Keepalive 是否超时),控制面是否收到撤销与更新报文,数据面是否真正查得到条目。前两层正常而第三层缺失,往往指向 FIB 下发、递归下一跳不可达或策略过滤。

常见误区与可执行检查清单
容易踩的坑有三个:只看邻居状态计数,把会话重建当成唯一证据,忽略路由撤复完全可能在会话稳定时发生;把收敛时间全算在 BGP 头上,忽略前缀可见性还叠加了 RFD、IGP 递归收敛与下游 FIB 更新;用 ping 丢包倒推 BGP 状态,ICMP 可能被 ACL 或限速丢弃,反而掩盖真实问题。
可执行检查清单,按顺序执行并逐项留证:① 会话层,查邻居状态变更计数、Hold 超时、TCP 重传与认证失败记录,确认BGP会话震荡;② 属性层,抓取 UPDATE,比对撤销与重播间隔,判断是否触及路由收敛时间下限;③ 策略层,核对 prefix-list、route-map、as-path filter 在 flap 期间是否命中变化;④ 递归层,确认下一跳所依赖的 IGP 收敛是否慢于 BGP;⑤ 抑制层,查看 dampening 惩罚值与复用阈值;⑥ 收尾,把前缀可见性曲线与邻居可达性日志时间戳对齐,再决定是否调整计时器或抑制参数。
排查 BGP 路由抖动,核心不是盯住一条会话反复重连,而是把前缀可见性的变化拆成“报文有没有发策略有没有放递归有没有解FIB 有没有落”四段,逐段量化耗时。收敛时间是结果指标,只有每段耗时都能对上时间戳,抖动才会从“网络抖”变成可定位、可整改的具体问题。


喜欢
顶
难过
囧
围观
无聊





