BGP ORIGIN属性的操纵及其对互联网的影响

Hacker News Top 新闻

摘要

Cloudflare的调查显示,约70%的观测BGP路径中存在被操纵的ORIGIN属性,这对互联网流量路由决策产生了显著影响。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/24 20:03

# BGP ORIGIN 属性操纵及其对互联网的影响 来源:https://blog.cloudflare.com/bgp-origin-attribute/ 边界网关协议 (BGP (https://www.cloudflare.com/learning/security/glossary/what-is-bgp/)) 是互联网事实上的路由协议。它内置了多种机制,允许由自治系统 (AS) 代表的实体表达它们希望如何在互联网上发送和接收流量。其中一种机制是路径属性 (https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml#bgp-parameters-2),这些属性携带与其关联路由的基本路由信息和元数据。路径选择算法按确定序列 (https://datatracker.ietf.org/doc/html/rfc4271#section-9.1) 处理部分路径属性,以计算该特定前缀的最佳路径。 利用我们在互联网上的独特位置,我们对 BGP 中一个众所周知的强制性属性——**ORIGIN** (https://datatracker.ietf.org/doc/html/rfc4271#section-5.1.1) 属性进行了调查研究。ORIGIN 必须出现在每个 BGP 前缀通告 (https://datatracker.ietf.org/doc/html/rfc4271#section-4.3) 中,并且任何路由器在由始发路由器设置后都不应修改它。通过我们自己的实验,我们发现在众多观察点的观测路径中,约有 70% 的路径的 **ORIGIN** 值与始发自治系统设置的值 **不同**。正如我们将在本文中探讨的那样,这种 ORIGIN 属性操纵对互联网上的流量转发方式产生了重大影响。 ## BGP ORIGIN 及其运营历史 ORIGIN 属性指示路由 **如何** 被注入 BGP——不要与指示 **哪个** AS 通告路由的始发 AS 混淆。它有三个可能的值: (0) IGP:表示该路由位于始发 AS 内部 (1) EGP:一个历史值,表示该路由是通过旧的 Exterior Gateway Protocol (EGP) (https://datatracker.ietf.org/doc/html/rfc904) 学习到的,该协议已过时,不适用于现代互联网 (2) INCOMPLETE:表示该路由是通过未知或外部来源学习到的 在所有来自 RIPE RIS (https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris/) 和 RouteViews (https://www.routeviews.org/routeviews/) 的公共 BGP 收集器可观测到的路由中,89.8% 的 ORIGIN 设置为 IGP,3.5% 设置为 EGP,6.7% 为 INCOMPLETE。如上所述,EGP 应完全弃用,而 INCOMPLETE 在总路由中占少数。这些数据表明,虽然 IGP 是 ORIGIN 最常用的值,但仍有超过 10% 的路由具有 EGP 或 INCOMPLETE 值,这可能会影响路由决策。 作为 BGP 路径选择过程 (https://datatracker.ietf.org/doc/html/rfc4271#section-9.1) 的一部分,如果两条路由具有相等的本地优先级和 AS_PATH 长度,路由器会评估 ORIGIN,选择并安装 ORIGIN 值较低的路径。 除了路径选择决策之外,值得注意的是 RFC4271 对 ORIGIN 有如下规定 (https://datatracker.ietf.org/doc/html/rfc4271#section-5.1.1): `ORIGIN 属性由生成关联路由信息的发言者生成。其值不应由任何其他发言者更改。` 尽管建议不修改 ORIGIN 属性,但由于其在路由选择过程中评估较早,该属性已成为 AS 改变路由偏好、将流量引入或远离其网络的一个有吸引力的选项。 例如,在下面的图中,AS64501 以 ORIGIN 设置为 INCOMPLETE 的方式通告一个前缀,并将此通告传播给它的两个客户 AS64502 和 AS64503。正常情况下,它们都应在 AS_PATH 中前置自己的 AS,并将通告转发给共同的客户 AS64504,同时保留 INCOMPLETE 值。然而,为了增加其路由被选中以超过竞争对手的可能性,AS64503 将 ORIGIN 修改为 IGP。结果,AS64504 收到两条针对该前缀且 AS_PATH 长度相等的路由,但来自 AS64503 的路由携带了更优选的 IGP 值。因此,AS64504 将选择通过 AS64503 的路由向 AS64501 发送流量,从而为该提供商带来更多流量和收入。 这种简单且不准确但更优选的 ORIGIN 修改,使传输提供商能够吸引流量并获利。 网络运营商社区已默默接受了这样一个现实:传输提供商一直在将 ORIGIN 属性重写为 IGP,以吸引更多流量到他们的链路上。然而,James Bensley 在 RIPE 91 会议 (https://ripe91.ripe.net/programme/meeting-plan/sessions/30/GJ8PFJ/) 上是第一个强调主要网络普遍采用这种操纵技术的人。随后 Celsa Sánchez 在 LACNIC 45 会议 (https://www.youtube.com/watch?v=YaY0-4aGCnQ) 上的演讲调查了这种行为在 LACNIC(拉丁美洲和加勒比地区)的影响。虽然公开披露应阻止这种做法,但它凸显了路由选择是一场由收入驱动的军备竞赛。网络运营商更倾向于迅速采用重写 ORIGIN 的方法来创造公平竞争环境,而不是等待竞争对手恢复 RFC 合规。 互联网上日益不一致的 ORIGIN 处理方式促使创建了一份现已过期的互联网草案 (https://datatracker.ietf.org/doc/draft-marenamat-idr-scrub-bgp-origin/00/),建议弃用该属性。为了揭示这种现象的范围并追踪其参与者及其意图,我们进行了自己的实验,并在下一节中分享结果。 ## ORIGIN 属性操纵分析 在我们的实验中,我们使用 BGP 任播 (https://www.cloudflare.com/learning/cdn/glossary/anycast-network/) 从我们所有的对等位置通告了三个 IPv4 和三个 IPv6 前缀,每个前缀具有不同的 ORIGIN 值(IGP/EGP/INCOMPLETE)。在确认全球传播后,我们稍后撤销这些前缀以触发路径狩猎 (https://blog.cloudflare.com/going-bgp-zombie-hunting/#path-hunting) 过程,从而揭示更多通往测试前缀的路径,这给了我们更多发现被更改的 ORIGIN 的机会。如下图所示,我们使用 BGPKIT (https://bgpkit.com/) 工具包来解析来自 RIPE RIS (https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris/) 和 RouteViews (https://www.routeviews.org/routeviews/) 所有公共 BGP 收集器的多线程路由工具包 (MRT (https://datatracker.ietf.org/doc/html/rfc6396)) 转储中的 Update 消息,以及我们从边界路由器收集的本地 BMP 数据。请注意,我们选择分析 Updates 而非路由信息库 (RIB) 转储(RIB 转储是对等 AS 路由表的快照),以便在通告阶段和撤销阶段检索尽可能多的路由。 BGP 分析的一个基本困难是缺乏对互联网上 **所有** AS 的可见性 (https://www.routeviews.org/routeviews/2025/01/10/routeviews-peering-policy/#:~:text=The%20changing%20internet%20landscape),而这是针对单个路由通告的。这种差距因现代互联网的扁平化 (https://blog.apnic.net/2020/12/04/unpacking-a-flattened-internet/) 而扩大,超大规模云服务商和 CDN 绕过传统传输路由,转而采用直接本地对等互联。因此,公共监控器会错过给定前缀的很大一部分 BGP 拓扑,这意味着对 AS 属性的推断总是带有固有的不确定性。 ### 在两跳 AS_PATH 中查找 ORIGIN 重写者 首先,我们关注仅有 2 个 AS 的 AS_PATH:"ASX AS13335",我们称 ASX 为直接对等体。由于我们配置了路由器以特定的 ORIGIN 传播我们的通告,我们确信如果观察到不同的 ORIGIN,则 ASX 一定将其更改为了新值。下表显示了 352 个直接 IPv4 对等体的操纵行为,其中 "Advertised ORIGIN" 列显示我们三个前缀的通告值,右侧列列出了直接对等体 AS 观察到的 ORIGIN 值: Advertised ORIGIN (IPv4) | 直接对等体观察到的 ORIGIN --- | --- IGP | EGP | INCOMPLETE | IGP + EGP | IGP + INCOMPLETE --- | --- | --- | --- | --- IGP | 345 | 3 | 4 | 0 | 0 EGP | 32 | 31 | 34 | 3 | 0 INCOMPLETE | 32 | 33 | 14 | 0 | 3 我们想指出两个有趣的观察结果。首先,三个 AS 将 ORIGIN 改为 EGP,四个 AS 将其改为 INCOMPLETE,无论其原始值如何,这意味着它们可能试图降低这些路由的优先级。我们联系了其中一个 AS 的网络工程师,确认他们正在将从对等体或提供商收到的路由上的 ORIGIN 重写为 EGP(以使其不如客户路由受欢迎)。其次,对于非 IGP 前缀,有三个 AS 同时使用原始值和 IGP 传播路由(上表最右侧两列)。基于路由的其他属性,如团体 (https://datatracker.ietf.org/doc/html/rfc1997) 和 AGGREGATOR (https://datatracker.ietf.org/doc/html/rfc4271#section-5.1.7),我们推断这些 AS 在多个对等位置接收我们的路由,并将 ORIGIN 更新为 IGP,大概是为了通过首选点转发流量。将后一类 AS 与一致重写为 IGP 的 AS 合并,我们发现几乎 10% 的直接对等体将 ORIGIN 属性更改为 IGP。 在测试 IPv6 时,我们预计会得到类似的结果,但想指出同一 AS 在两个地址族之间操纵 ORIGIN 值的差异。下表展示了 315 个直接 IPv6 对等体的操纵行为: Advertised ORIGIN (IPv6) | 直接对等体观察到的 ORIGIN --- | --- IGP | EGP | INCOMPLETE | IGP + EGP | IGP + INCOMPLETE --- | --- | --- | --- | --- IGP | 308 | 3 | 4 | 0 | 0 EGP | 29 | 28 | 0 | 4 | 2 INCOMPLETE | 29 | 3 | 28 | 1 | 0 最值得注意的是,有两个直接对等体仅对 IPv4 前缀而不是 IPv6 将 ORIGIN 改为 IGP,这意味着两个地址族有不同的配置。 将分析范围缩小到 Tier-1 AS (https://bgp.tools/kb/what-is-a-upstream),16 个中有 6 个似乎将 ORIGIN 值改为 IGP,这与先前研究 (https://ripe91.ripe.net/programme/meeting-plan/sessions/30/GJ8PFJ/) 的结果相符。请注意,通过手动调查,我们发现一个 Tier-1 网络将从对等体学习到的路由上的 ORIGIN 值改为 IGP,同时保留客户路由的值。多个 Tier-1 网络中的这种行为模式反映了吸引最多流量并抵消其他 ORIGIN 修改者优势的驱动力。 ### 在更长 AS_PATH 中识别重写者 基于这些初步结果,我们扩展了方法以处理更长的路径并推断更多 AS 的行为。简要来说,我们的算法如下: 1. 我们将 *信任* 集合 *T* 初始化为包含 AS13335。*T* 保存所有保留 ORIGIN 的 AS。 2. 对于每个 AS_PATH: 1. 过滤掉 *T* 中的所有 AS。 2. 如果仅剩一个 AS,则可将 ORIGIN 归因于该 AS。记录映射 *AS → ORIGIN(s)*。 3. 对于每一对 *AS → ORIGIN(s)*: 1. 如果 *ORIGIN(s) == 原始值*,则将 AS 添加到 *T*。 2. 否则,将 AS 添加到 *M(odifiers)*。 4. 如果在步骤 3 中更新了 *T*,则从步骤 2 重复该过程。 将此方法应用于我们以 EGP 和 INCOMPLETE 发起的 IPv4 和 IPv6 前缀的路由,我们将 AS 归因提高到 AS_PATH 中可见的 802 个 AS 中的 606 个 (75.6%),其中 64 个 (10.6%) 正在将 ORIGIN 改为 IGP。受 Tier-1 采用此技术的启发,我们使用 CAIDA 的 AS 排名 (https://asrank.caida.org/) 研究了归因 AS 的重要性。AS 排名根据 AS 的客户锥(即它们自身以及所有可通过提供商-客户链路到达的 AS)提供排名。 在下面的图中,我们展示了归因 AS 的 AS 排名的累积分布 (CDF)。一个有趣的观察结果是,IGP 重写者高度集中在 AS 层级结构的顶部,20.3% 的重写者位于 AS 排名前 50 名之内。 ### 大型 AS 重写 ORIGIN 的影响 总体而言,前 50 名 AS 中的 26% 和前 100 名 AS 中的 20% 正在操纵 ORIGIN 属性,这突显出尽管它们总体百分比较低,但这些重置 ORIGIN 的 AS 在互联网上高度集中且具有影响力。 这一影响通过以下发现得到进一步加强:实验中观察到的唯一 IPv4 AS_PATH 中有惊人的 70%,IPv6 AS_PATH 中有 67% 的 ORIGIN 被重置为 IGP。我们还通过合并 BGP Updates 来计算每个对等 AS 的收敛活动路由表状态,研究了最佳路径选择上的变化。我们使用 ORIGIN 设置为 IGP 的前缀通告作为对照组 (https://www.britannica.com/science/control-group),以比较观察到的 AS_PATH 与我们 EGP 和 INCOMPLETE 通告的 AS_PATH。当这样做时,我们发现 IPv4 中总共 539 个 AS_PATH 中有 110 个 (20%) 穿越了 Tier-1 网络,并且将 ORIGIN 重置为 IGP 为 ORIGIN 重写者确保了额外的 12 条路径(增长 18%),否则这些路径将通过保留 ORIGIN 的网络。在 IPv6 中效果更强,重写者获得了 33 条额外路径(40%)。其中包括 11 条在我们的对照组中未穿越任何 Tier-1 网络的路径。这突出表明,当 ORIGIN 被操纵时,流量被重定向到大型 Tier-1 ISP,从而从其他 ISP 分流。 正如你所见,互联网路由受到 ORIGIN 属性操纵的显著影响。在我们的实验中,我们可以轻松观察到对 BGP 路径选择的影响,并证明重写 ORIGIN 是一种吸走流量并产生收入的方式。没有有效的 *技术* 理由要求重写 ORIGIN 属性,而且我们可以看到依赖 ORIGIN 作为决定采用哪条路由的驱动因素是没有意义的。 ## 弃用 ORIGIN 属性 鉴于我们发现 ORIGIN 操纵的普遍性,我们必须扪心自问,这个属性在现代互联网中是否还有有意义的作用。我们认为答案是 **没有**。 ORIGIN 的不一致处理在机会主义地更改它的网络和遵守 RFC 的网络之间造成了不公平。虽然立即弃用 BGP 中一个 **强制性** 属性是不可行的,但业界已经在 IETF 中提出了工作 (https://datatracker.ietf.org/doc/html/draft-marenamat-idr-scrub-bgp-origin-00),旨在使 ORIGIN 属性在 BGP 路径选择中不那么重要。我们认为,要求 BGP(供应商)实现在 **所有** 接收和通告的路由上设置 ORIGIN 为 IGP 是一个合理的起点。IGP 已经是绝大多数路由的 ORIGIN 设置值。 我们希望在社区和 IETF 中重新启动关于 ORIGIN 属性及其在互联网上的未来(或缺乏未来)的讨论。这包括续订已过期的草案 "Scrubbing BGP ORIGIN Attribute" (draft-marenamat-idr-scrub-bgp-origin-00 (https://datatracker.ietf.org/doc/html/draft-marenamat-idr-scrub-bgp-origin-00),或者可能包括全新的方法。如果没有 ORIGIN 属性施加影响,互联网路由将变得更好、更公平。

相似文章

@vpsing_de: reality偷域名从低到高分别是:偷大厂,偷邻居,偷自己。那怎么偷邻居的域名呢? 1、打开http://bgp.he.net,此时页面会显示你的网段是多少,比如1.1.1.1/21。图一 2、在搜索栏输入你的网段,回车,在显示的界面点击…

X AI KOLs Timeline

本文介绍如何利用Hurricane Electric BGP工具查找邻居IP段绑定的域名,并筛选出支持TLS 1.3和1.2的域名作为reality伪装使用,同时根据网站内容(纯文字或影音)适配流量类型。

Starting my own Content Delivery Network

Lobsters Hottest

作者通过拥有自己的自治系统(AS)和BGP任播,并利用DNS,搭建了一个分布在全球三台服务器上的个人内容分发网络(CDN),以优化用户连接延迟。文章详细介绍了BGP任播的工作原理和流量工程方法。

我的ASN之旅系列(2024)

Hacker News Top

一份全面的初学者指南,介绍如何获取和配置自己的ASN和IP地址,涵盖BGP设置、成本和限制。