南方數據技术观察
首页 行业新闻 教程 技术文章 AI 对话 官网 咨询与报价
首页 / 技术文章

用 Looking Glass 验证路由的实际方法

The user wants a blog article in Simplified Chinese (简体中文), about using Looking Glass to verify routing, with the angle "从自己的视角跳出去看" (looking from outside your own vantage point). Required points: - 公开 LG 的局限 - 多点验证 - 与 RIPE Atlas 配合 - 记录基线, structure: clear opinion opening → 2-4 sections with headings → actionable checklist at end. - Length: 900-1300 Chinese characters. - Output HTML fragment only using allowed tags:

    1. . No markdown, no html/body. - Don't fabricate statistics, market share, prices, or customer cases. Use plausible example values, noting they are examples. - No vague conclusions. Let me draft the article. Title idea / opening opinion: 你的 Looking Glass 只能看到你自己的位置,路由问题往往只在别人眼里才存在。验证路由必须跳出去看。 Sections: 1. 公开 LG 的局限 2. 多点验证怎么做 3. 配合 RIPE Atlas 4. 记录基线 Checklist at end as
        or
          . Let me think about technical content: 公开 Looking Glass 局限: - 视角受限:只反映 LG 服务器所在位置/所在 AS 的 BGP 视图,看到的是该 vantage point 的 Loc-RIB,不一定代表真实转发路径(数据平面 vs 控制平面)。 - 很多公开 LG 输出被裁剪:只给 BGP 路由表摘要,不给 community、不给 AS-Path 完整细节、不给 route origin validation 状态。 - 查询频率限制、缓存、接口不统一。 - LG 常只在"能通"时有用;对数据平面问题(丢包、asymmetric path、MTU)无能为力——它只展示控制平面。 - 有些 LG 反映的是 iBGP 最佳路径,可能和实际 egress 选择不同(如 local-pref、MED 在 LG 上看不到)。 - traceroute from LG 是 ICMP/UDP 探测,可能被策略影响。 多点验证: - 不能只查一个 LG;至少选不同地区、不同类型的 AS(Tier1、IX 节点、区域 ISP、大内容商)。 - 选择 vantage point 的原则:你客户的上游、你_peer 的_peer、对标 AS(如 15169 Google, 13335 Cloudflare, 16509 AWS)。 - 具体做法:发布一条新前缀或改 prepending 后,用 5-10 个 LG 覆盖三大洲;记录每个 LG 看到的 AS-Path、_next-hop、community。 - 用 bgp.tools / RIPE RIS / RouteViews 的 raw MRT 数据做补充——RIS RRC 节点本身就是多视角。 - 检查 propagation 时间:BGP 收敛通常几分钟内,但跨大洋的 RRC 可能滞后;等待窗口。 与 RIPE Atlas 配合: - LG 是控制平面,Atlas 是数据平面。Atlas probes 分布全球,可以做 traceroute/ping/DNS。 - 用Atlas 的 traceroute(尤其是 with BGP mapping via bgp.tools 或 RIPEstat 的 traceroute with ASN)验证实际转发路径是否和 LG 看到的 AS-Path 一致。 - 方法:RIPE Atlas API / App,选 probe(按 ASN、国家、前缀覆盖),建 oneoff measurement,例如 10 个 probe traceroute 到你的 anycast 节点。 - 注意:Atlas probe 不能直接给你 "AS-Path",需要借助 IP-to-ASN mapping(RIPEstat 或 bgp.tools 的 traceroute-to-ASN 功能),中间跳的 ASN 映射可能失真(IX LAN、未注册 IP)。 - Credit 有限,oneoff measurement 成本低但要控制 probe 数量和频率。 - 反向验证:从你的机器向 Atlas probe ping?不行,probe 不接受入站。可以做 DNS 测量(内网权威 DNS anycast 验证)。 - 也可以用 M-Lab、CLAW 等,但保持范围。 记录基线: - 平时(没故障时)就要采样并归档:每条公告前缀在每个 LG 的 AS-Path、每条 Atlas 常态测量的 RTT/traceroute。 - 存什么:时间戳、vantage point、prefix、AS-Path、next-hop、community、RPKI status、RTT 分位数。 - 用脚本(cURL + cron)定期抓 LG 和 RIPEstat API,存 JSON/CSV 到 git 或时序库。 - 故障时 diff 基线,快速定位"哪一侧变了"——是上游 prepending、还是第三方宣布了冲突前缀、还是 peer 撤销。 - 基线也帮助回答"这是我们的问题还是 ISP 的问题"。 Checklist at end: - 公告变更前后各用 ≥3 大洲、≥5 个独立 AS 的 LG 核对 AS-Path - LG 与真实 traceroute(Atlas)对不上时先怀疑数据/控制平面差异 - 建立 cron 抓取 + 归档,至少覆盖自家所有前缀 - 用 RIS/RouteViews raw 数据交叉验证 LG 的裁剪输出 - 故障演练:随机抽一天对比当日与基线的 diff Also mention communities: 看不到 community 是一个常见局限。Some LGs (e.g., some) hide communities. 开头观点:Looking Glass 看到的是"某一台路由器认为的世界",不是世界本身。验证路由的核心是制造视角差——从和你位置、策略都不同的点去看。 Length: aim ~1100 Chinese characters. Let me write carefully. Let me count roughly as I write. Chinese characters count; code/technical terms also count-ish. I'll aim for around 1100-1250. Structure:

          opening (opinion): "每个网络工程师都会查 Looking Glass,但多数人把它当事实来源,而不是视角来源。LG 的输出只代表某一台路由器在某一个位置的 Loc-RIB……验证路由的真正方法,是有意识地制造视角差:跳出到和你策略不同、位置不同的点上反过来看自己。"

          公开 LG 的三个局限:它连控制平面都只给你一半 - 视角单一 - 输出被裁剪 - 只有控制平面

          多点验证:按"谁会用你的路由"来选 vantage point

          or just list. Maybe h2 with paragraphs + list.

          把 RIPE Atlas 当作 LG 的数据平面补充

          没有基线,多视角只是噪音 Then checklist

          检查清单

          with
            . Include a small table maybe for baseline fields? Could be useful: 字段/说明 table. That adds structure. Table: 字段 | 作用. Rows: as-path, next-hop/egress, community, rpki status, rtt p95, timestamp+vantage. Good use of table tag. Include example commands? Use for things like `bgpq4`, `curl https://stat.ripe.net/data/...`, but avoid fabricating API endpoints that are wrong. RIPEstat data API: https://stat.ripe.net/data/announced-prefixes/data.json?resource=AS... — that's real. Also traceroute-to-asn? There's "traceroute-to-asn" widget data? There is RIPEstat data API "bgp-as-path"? Hmm. Safer: mention RIPEstat's traceroute mapping in Atlas results, and the API https://stat.ripe.net/data/ris-prefixes/data.json? Or "looking-glass" data API exists: https://stat.ripe.net/data/looking-glass/data.json?resource=AS64512 — yes, RIPEstat has a "looking-glass" data endpoint that aggregates RIS route collectors. I believe that exists. To be safe, I can say "RIPEstat 的 looking-glass 数据接口" without full URL, or give URL with caveat. I'll keep it generic: stat.ripe.net 数据接口. That's safe. Example values: "示例:对外公告 203.0.113.0/24" — use documentation prefix 203.0.113.0/24 (TEST-NET-3) — good practice, it's explicitly a documentation prefix, not fabricated stats. AS numbers: use AS64512–AS64534 (private use range) for examples, clearly marked as 示例. Atlas oneoff: "创建一个一次性测量:10 个 probe,traceroute 到 203.0.113.1,间隔一次" — plausible example. Mention RRC nodes: RIPE RIS route collectors (RRC00–RRC 20+). Say "RIS 的十几个 route collector(RRC)" — number of RRCs is around 25 now; saying "二十多个" is roughly right. Or avoid the count: "RIS 各地的 route collector". Safe. bgp.tools also fine to mention. Prepending example: "把 203.0.113.0/24 对上游 AS64530 prepending 一次" — fine. Let me write the HTML now, watching length. Draft:

            查 Looking Glass 是每个网络工程师的肌肉记忆,但很多人把 LG 当成事实来源,而它本质上只是视角来源。你看到的输出,是某台路由器在某个位置的 Loc-RIB 快照,不是全球路由的真实状态。验证路由变更是否生效、故障到底出在哪一侧,正确姿势是反过来做:刻意跳出到和你位置、商业关系、路由策略都不同的点上去看自己。下面按实际操作顺序展开。

            Count: ~150 chars.

            公开 LG 的局限:它连控制平面都只给你一半

            三个必须心里有数的坑。第一,视角单一且不透明:你不一定知道那台 LG 设备的 local-pref、import policy,它显示的 best path 可能和你流量实际走的 egress 不是一回事。第二,输出被裁剪:不少公开 LG 隐藏 BGP community、只显示最佳路径不显示备选路径、甚至不显示 RPKI 状态——而 community 恰恰是排查 prepending 和流量工程时最有用的字段。第三,只有控制平面:LG 告诉你"路由表里有这条前缀",但丢包、非对称路径、中间路由器 ACL 都不会体现在 LG 上。控制平面看着健康、数据平面一塌糊涂的情况并不罕见。

            ~200 chars.

            多点验证:按"谁会用你的路由"来选 vantage point

            单点 LG 只能证明"某一个点能收到你的公告"。正确做法是把 vantage point 当采样集来设计,而不是随便挑两台。选择原则按优先级:

            • 你客户的对端:公告最终要被这些 AS 用于转发,它们的视角最接近"真实效果"。
            • 不同大洲、不同类型:至少覆盖三级运营商、IX 附近、区域性 ISP 各一类,避免全是一类视角的镜像偏差。
            • route collector 而非只有 LG:RIPE RIS 与 RouteViews 的 raw MRT 数据可以看到全部备选路径,比单台 LG 的 best-path 更适合交叉核对。

            举例(示例值):变更 203.0.113.0/24 的 prepending 后,从至少 3 个大洲、5 个互相独立的 AS 的 LG 核对 AS-Path,同时用 RIS collector 确认 prepending 只影响了预期上游、没有把某些选择器推过阈值导致路径翻转。注意 BGP 收敛需要时间,公告后等几分钟再采样,跨洋 collector 往往滞后更久。

            ~330 chars.

            把 RIPE Atlas 当作 LG 的数据平面补充

            LG 说"我收到了",Atlas 回答"流量真的这么走吗"。方法是一次性测量:在 RIPE Atlas 上创建 oneoff traceroute,选 10 个左右分布在目标区域的 probe 探测你自己的地址,然后把结果中的 IP 跳段用 IP-to-ASN 映射(RIPEstat 或 bgp.tools 的 traceroute-to-ASN 功能)转成 AS 级路径,再和 LG 看到的 AS-Path 对比。两条路径一致,说明控制平面和数据平面没有脱节;不一致,先怀疑中间有 Policy-Based Routing、anycast 命中差异或 IX 交换机不回 ICMP。

            注意 Atlas 的映射失真点:IX 局域网段和未注册 IP 会映射不出 ASN,probe 的 credit 消耗虽小但 probe 数量要克制。反向测量做不了(probe 不接受入站),验证 anycast 时应从 Atlas 侧向你的节点发探测,而不是反过来。

            ~280 chars.

            没有基线,多视角只是噪音

            故障时刻最贵的问题不是"现在路由什么样",而是"和平时差在哪"。基线要在没有变更、没有故障的日子建立:用脚本定期抓取自家所有前缀在各 vantage point 的输出并归档,最简单的方案是 cron + curl 调 RIPEstat 数据接口,落成 JSON 存进 git。建议至少记录:

            table:
            字段作用
            时间戳 + vantage point确定"谁、什么时候"看到的,收敛有先后
            AS-

            本文由 南方数据技术博客编辑整理,涉及具体环境时请以官方文档与实际配置为准。

            返回列表