BGP Looking Glass 排障实战:路由不通排查步骤
标签:BGP、LookingGlass、路由排障、RPKI、路由劫持、路由泄露
前言
上一篇我们整理了常用公共 BGP Looking Glass 资源列表。拿到 LG 地址只是第一步,真正考验工程师的是标准化排查思路。很多时候用户反馈 “国外访问不通、部分地区丢包、某运营商无法接入”,盲目 traceroute 很容易被表象带偏。
本文给出一套可直接落地的排查流程:先确认路由可见性、多视角交叉比对、定位过滤 / 劫持 / 黑洞、最后区分是 BGP 层面问题还是链路 / ACL 层面问题。流程适用于前缀发布验证、单侧不通、路由劫持、RPKI 拒收、路由泄露等场景。
前置约定:优先选取 3 个不同区域的 LG 做交叉验证:HE(6939,全球)、Arelion(1299,欧洲)、NTT(2914,亚太);配合 RIPEstat、bgp.tools 做全网传播校验。
一、先区分故障大类(第一步定性)
先回答两个问题,快速锁定方向:
- 是所有外部视角都访问不通,还是仅某一家运营商 / 某区域不通?
- 全部不通:大概率自身未发布路由、上游过滤、RPKI Invalid、BGP 会话没起来
- 仅单家 Tier1 / 局部不通:对方入方向策略过滤、本地黑洞、路由优选异常、对端 RPKI 严格校验
- 是路由表里面根本没有这条前缀,还是路由存在但是 ping/traceroute 不通?
- 无 BGP 路由:发布、传播、过滤问题
- 路由存在但不可达:下一跳不可达、骨干黑洞、ACL / 安全组拦截、TTL、链路丢包
重要提醒:LG 看到路由 ≠ 流量一定能到达。BGP RIB 只代表路由学习到,不代表下一跳可达。
二、标准排查流程(Step 1 ~ Step 7)
Step1:在本地边缘确认路由正常发出(先排除自己问题)
不要上来就查公网 LG,先自查:
- 确认 BGP 邻居状态 Established,无抖动
- 确认前缀在出口设备 BGP 表中,并且已经向 upstream/IXP 邻居发布(
advertised) - 检查出方向策略:前缀列表、route-map、AS-Path prepend、Community 标记
- 核对:前缀长度是否在运营商允许范围、是否为 Bogon 地址
常见踩坑:本地有静态路由,但 BGP network 写错;或者被 route-map deny,路由根本没发给上游。
✅ 结论:本地确认正常发布 → 再去公网 LG 验证;本地发不出去,后面所有 LG 排查都没有意义。
Step2:多 LG 并行查询,验证前缀公网可见性
同时在 2~3 个独立 Tier1 LG 执行 show ip bgp x.x.x.x/24,记录结果: 场景 A:所有 LG 都查不到前缀
- 上游 Transit/IXP 没有把你的路由向外传递(出口过滤、IRR 对象缺失)
- 刚发布路由,收敛时间不足(BGP 全网传播一般几分钟,RPKI ROA 生效经常需要 15~60 分钟)
- 前缀被 dampening(路由惩罚,频繁 flap 后被抑制)
场景 B:部分 LG 能看到,部分 LG 看不到
- 看不到的运营商启用 RPKI ROV 校验,ROA 不匹配标记 Invalid,直接丢弃路由
- 对方入方向前缀白名单过滤、不接受大于 / 小于指定掩码的前缀
- 对等关系策略限制,不向客户转发该前缀
场景 C:所有 LG 都能正常看到前缀
- 路由传播没问题,故障不在 BGP 发布层面;转向连通性、下一跳、黑洞排查
命令参考(Cisco 风格)
show ip bgp 203.0.113.0/24
show bgp ipv6 2400:db8::/32
Step3:校验 Origin AS、AS-Path,排查劫持与泄露
拿到 BGP 结果后重点看两个字段:
- Origin AS(最后一段 AS 号) 你备案的源 AS 是 AS100,但是 LG 返回 Origin 是 AS200 → BGP 劫持,立刻应急。
- AS-Path 路径是否符合预期 正常:
AS-Tran -> AS-Upstream -> AS-You异常:出现意料之外的 AS、路径跳跃、客户向提供商方向传播(典型路由泄露特征)
辅助工具:RIPEstat /bgp.tools,查看该前缀历史更新记录,确认异常路由是什么时间点注入网络。
Step4:RPKI 校验(高频根因)
RPKI 是现在运营商拒收路由头号原因:
- Valid:ROA 存在,前缀 + 源 AS 匹配,正常放行
- Invalid:ROA 存在但是源 AS 不匹配,大量 Tier1 默认丢弃 Invalid 路由
- Not Found:没有 ROA 记录,取决于运营商策略,部分运营商放行、部分拒绝
排坑:刚刚新增 / 修改 ROA,缓存和各个运营商 RPKI Validator 同步延迟很高,不要改完立刻下结论,等待足够时间复测。 同时核对 IRR route 对象,部分运营商依赖 IRR 做入方向过滤。
Step5:从故障视角 LG 执行 Ping + Traceroute,定位黑洞点
当 LG 里存在 BGP 路由,但不通,这一步是核心:
- 在该 LG 上执行 traceroute 到目标 IP
- 逐跳观察在哪一个 AS 开始中断、超时、返回 ICMP unreachable
- 中断点在运营商骨干内部:该运营商骨干黑洞、链路故障
- 中断点到达你的上游边界:上游拦截、你的边缘 ACL / 防火墙、云厂商安全组拦截
- 最后一跳之前全部正常,最后一跳不通:你的服务器 / 主机侧策略、丢包、端口拦截
区分:BGP 路由是控制平面;ping/traceroute 是数据平面。控制平面正常 ≠ 数据平面通。
Step6:路由优选与次优路径排查(访问慢、部分线路绕路)
用户反馈 “延迟高、走很远的线路”,查 LG 多条路径:
- 查看多条 BGP 路径的 Local Pref、AS-Path 长度、MED、Origin
- 检查是否误配置 AS-Path Prepend,导致路径被优选为备用链路
- 检查 BGP Community 是否被上游设置流量工程策略,强制引导路由
- 不同 PoP LG 优选路径不一样属于正常现象,互联网是无中心选路
Step7:汇总证据,输出结论与工单
整理输出给上游运营商的信息模板:
- 目标前缀:x.x.x.x/24
- 测试时间
- 测试 LG 节点:HE / NTT / Telia
- BGP 查询结果:是否收到、Origin AS、AS-Path
- RPKI 状态:Valid / Invalid / Not Found
- Traceroute 断点、丢包位置
- 结论建议:
- 例:NTT 侧 RPKI Invalid 导致路由拒收,请核查 ROA;
- 例:路由全网可见,但 traceroute 在 ASxxxx 骨干黑洞,请上游排查。
三、4 个典型故障案例速查
案例 1:刚上线上游能看到,公网 Tier1 全部看不到
根因:上游只和你建立 BGP,但是没有把你的前缀向外 export,漏加客户前缀放行策略。 动作:联系上游 Transit,确认 export 策略。
案例 2:HE 能看到,Telia、NTT 看不到
根因:Telia/NTT 开启严格 RPKI ROV,ROA 配置错误 / 缺失,路由被丢弃。 动作:修正 ROA,等待同步,复测。
案例 3:所有 LG 都能查到路由,但是从 LG ping 目标全部超时
根因:路由发布正常,但是你的边缘防火墙、云安全组拦截 ICMP / 业务流量;或者上游下一跳不可达。 动作:自查边界 ACL、主机防火墙,确认回程路由正常。
案例 4:LG 查询发现前缀 Origin AS 不是自己
根因:BGP 劫持,其他 AS 错误发布你的前缀。 动作:立刻核查,联系 RIR、上游运营商,配合 RPKI 处置劫持路由。
四、排障避坑清单(非常容易踩)
- LG 只是单路由器视图,不能代表整个运营商全网;同一家运营商不同 PoP 选路、过滤策略可能不一样
- LG 存在缓存,部分站点结果不是实时;重要故障多换几个 LG 交叉验证
- Traceroute 有 ICMP 限速、某些节点不返回 TTL 超时,不能单凭 trace 断定黑洞
- Dampening(路由惩罚):短时间反复 reset BGP 邻居,会导致前缀被抑制一段时间
- IPv4 和 IPv6 策略独立,IPv4 通不代表 IPv6 路由策略一致,分开查询
- Looking Glass 只读,无法执行 clear bgp、调整策略,只能观测
五、配套工具组合使用建议
- 快速多视角路由查看:lg.he.net
- 路由历史、RPKI、变更时间线溯源:RIPEstat
- AS 关系可视化、快速截图汇报:bgp.tools
- 批量传统 CLI 查询:RouteViews(ssh/telnet)
结语
BGP Looking Glass 排障的核心思路一句话总结:先确认自己发得出,再看外面收不收;多视角比对区分是全局问题还是单运营商策略;分清控制平面(BGP 路由)和数据平面(连通性),最后用 RPKI 和 AS-Path 定位劫持、过滤、泄露。