某站同时接入两条 BGP 出口,销售把 A 线路标成低时延,监控也显示链路可用,实际访问却被送往绕行更远的 B 出口。改带宽、加监控往往无效,真正要查的是:BGP 是否选中宣传路径,以及更具体前缀是否覆盖了它。下面从属性优先级、厂商差异和判断顺序拆开。
如果你正在选机器,或者想先把线路和配置跑通再谈长期方案,可以先看看这几家的线路说明和技术参数:justg(原生IP精品线路),先看清带宽线路、流量策略和退款条款,再决定要不要迁。
一、先分清:BGP 选路与最长前缀匹配不是一步
同一个目的地址可能收到多个 BGP 前缀。设备先为每个前缀挑出最佳路径,再写入 IP 路由表;转发查询才按最长前缀匹配选择最具体条目。例如 /16 的低时延路径存在,但某邻居下发 /24,访问该范围仍会命中 /24。这能解释“后台看 BGP 正常,业务却走另一条路”的反差。

排查可把决策压缩为五层:第一层看候选是否合法,邻居策略、AS 环路、下一跳可达性会先淘汰路径;第二层看本地意图,标准属性本地优先级越高越优先,常见实现主要在本 AS 内比较,部分厂商还提供前置的本地权重;第三层看AS 路径长度,同等条件下越短越优,prepend 正是靠拉长路径降低优先级;第四层看 Origin 与MED 属性,Origin 按 IGP、EGP、Incomplete 依次降级,MED 通常越小越优;第五层才看 eBGP/iBGP、下一跳 IGP 指标、路由器标识和路径新旧等决胜项。具体顺序并非所有实现完全一致,不能只背一张表。
二、从路由表与路径结果还原真实选择
先在路由表锁定目标前缀,确认最佳标记、下一跳、出接口和路由来源;再查看该前缀的全部候选,逐项对照本地优先级、AS_PATH、Origin、MED 与厂商权重。若宣传线路因 MED 较高落败,要确认两条路由是否来自同一相邻 AS。很多实现仅比较同一相邻 AS 的 MED,少数支持跨 AS 或可配置规则,这正是常见厂商差异。

若 BGP 最佳路径符合预期,转查转发与底层:检查 VRF、聚合路由和更具体前缀,再核对下一跳的 IGP 成本、隧道策略及探针结果。ServLlama可汇总路由与路径探测记录,减少翻表遗漏。若最佳路径本身不符合预期,则回到入口策略、Local_Preference、prepend 与 MED 处理规则定位。结论应记录“哪个前缀、哪个候选、哪项属性使其落选”,不要仅凭 traceroute 或单次延迟下判断。
把剩余选路规则串成决策链
完整BGP决策流程不能只看属性数值,而要把比较顺序串起来。第一步是最长前缀匹配:同一目的地址存在不同掩码时,更具体的路由先进入后续比较;即使较短前缀拥有更高的本地优先级,也不能覆盖更具体前缀。这一步划定候选集合,之后的属性只在相同前缀之间决胜。
候选集合确定后,常见设备再比较本地优先级、AS路径长度和MED属性。本地优先级越高越优,且通常在同一AS内生效;AS路径越短越优;MED越小越优。MED默认通常只比较来自同一相邻AS的路由,不同邻居AS的MED不能直接混排,应确认always-compare-med及confederation配置,并区分MED缺失与显式为0。后续还会参考Origin、eBGP优于iBGP、下一跳IGP度量;仍相同时,再看路由存续时间、Router ID和邻居地址。
最常见的坑,是把“属性更优”等同于“路由已生效”。路由可能因前缀列表、AS路径过滤、Route Map、邻居策略、下一跳不可达或递归失败而被拒绝,也可能只是有效但未选中的候选。通过反射器学习的路由不会自动获得可达下一跳,因此还要核对邻居实际通告的属性。

按证据完成可执行检查清单
检查时按“邻居通告BGP候选主路由表”取证。以通用语法为例,先用show bgp ipv4 unicast或对应的IPv6命令确认前缀、属性和最佳标记,再用show ip bgp PREFIX展开候选及无效原因,并记录邻居地址和下一跳。
随后执行show bgp neighbors NEIGHBOR received-routes与advertised-routes,核对对端发送、接收内容;检查入站和出站Route Map、前缀列表、AS路径过滤及community匹配。最后对照show ip route或show route,确认最佳路由进入主表、下一跳可解析,并测试故障切换后的收敛与回切。
若结果异常,先保存配置,一次只调整一个条件,再重复核对通告、候选和主表三处证据。不要只凭一条show bgp输出下结论,也不要同时修改MED、路径过滤和下一跳策略,否则即使路由恢复,也难以定位真正生效的条件。


喜欢
顶
难过
囧
围观
无聊





