Page 472 - 《软件学报》2026年第1期
P. 472
张泽源 等: RPKI 测量研究综述 469
45 000 60
40 000 APNIC 50
AS 数量 (个) 30 000 ARIN RPKI 覆盖路由前缀比例 (%) 40
35 000
25 000
RIPE
30
20 000
AFRINIC
15 000
20
10 000
All
5 000 LACNIC 10
0 0
2018
2016/1/1 2017/1/1 2018/1/1 2019/1/4 2020/1/1 2021/1/1 2022/1/1 2023/1/1 2024/1/1 2012 2014 2015 2016 2017 年份 2019 2020 2022 2023 2024
日期
(a) 部署 RPKI 的 AS 规模变化 (b) RPKI 的 IP 覆盖规模变化趋势
图 3 RPKI 的 AS 和 IP 规模变化趋势
2.2 RPKI 数据质量测量
RPKI 数据质量直接影响着 RPKI 的可信度和声誉, 数据质量不佳也是阻碍 RPKI 发展的一个原因. 近年来有
许多测量工作陆续发现了 RPKI 中存在的数据质量问题, 包括如下.
● ROA 与实际路由不一致: 由于人为失误、缺乏 BGP 专业知识、更新不及时等原因, 签发的 ROA 与实际路
由信息存在冲突, 导致路由在 RPKI 起源验证中被验证为 invalid, 其后果是部署 RPKI 过滤的 AS 会与合法目的地
断开连接.
● ROA maxLength 设置过长: maxLength 设置过长会导致 ROA 认证前缀范围比实际路由声明前缀范围大, 容
易受到伪造起源子前缀劫持 (forged-origin subprefix hijack) 攻击 [46] .
● 互联网号码资源授权冲突: 互联网号码资源授权冲突指资源拥有者将同一个 IP 地址前缀或 AS 号码授权给
不同的 ISP, 产生资源的重复授权或者资源拥有者将不属于自己的资源授权给 ISP.
(1) ROA 与实际路由不一致
Xu 等人 [47] 发现部分 AS 签发 ROA 时未考虑流量工程、前缀聚合失败或 IP 前缀所有权转移的情况, 导致声
明的路由被验证为 invalid. 但这些路由实际应该是合法的. Xu 等人提出了 6 种容易出现 ROA 配置错误的场景. 经
过 2018 年 2–5 月的测量, Xu 等人发现超过 60% 的 invalid 路由是由 ROA 配置错误导致, 实际应该是合法的路由.
此外, 他们还发现 ROA 配置错误导致的 invalid 路由都会长期存在, 与前缀劫持攻击持续时间短的特点不相符.
Chung 等人 [42] 探究了导致路由验证结果为 invalid 的原因. 他们发现原因之一是路由中前缀的长度超过了
ROA 中前缀的长度. 这类 invalid 路由的占比在 48.0%–51.5% 之间, 其中超过 90% 是因为 ROA 中未设置 maxLength
而非实际的前缀劫持. 另一个导致路由被验证为 invalid 的原因是路由的起源 AS 与 ROA 中 AS 不相符, 这类
invalid 路由更符合前缀劫持攻击的特点. 但 Chung 等人发现其中部分 invalid 路由是 ROA 配置错误而非前缀劫持
导致的. 这些 ROA 配置错误包括: 1) AS 归属于同一 ISP, ISP 在两个 AS 都对同一前缀发布了路由但只对其中一
个 AS 发布了 ROA; 2) AS 将子前缀分配给客户, 但没有更新 ROA; 3) AS 使用了 DDoS 防护, 在不同 AS 发布了同
一前缀的路由, 但未及时更新 ROA. 与文献 [47] 类似, Chung 等人的测量也发现 ROA 配置错误导致的 invalid 路
由存在时间相对较长的特点.
Hlavacek 等人 [48,49] 提出了区分 ROA 配置错误和实际前缀劫持的两个分类器. 第 1 个分类器使用 invalid 路由
存在时间作为分类依据, 将持续时间较长的 invalid 路由分类为 ROA 配置错误导致的; 第 2 个分类器根据路由中
起源 AS 与前缀的相关性进行分类, 若起源 AS 与前缀存在足够高的相关性, 则判断为是 ROA 配置错误而非前缀
劫持, 其中相关性的证据可来自各种外部数据源, 例如 IRR 数据库、DNS 记录、whois 数据库等.
文献 [48,49] 对 2019 年 1 月的 89 730 起路由与 ROA 冲突进行识别并向相关运营商进行了核实, 分类器识别
出 132 例冲突为 ROA 配置错误引起, 其中 123 例分类正确; 33 例冲突为劫持攻击引起, 其中 18 例分类正确.
(2) ROA maxLength 设置过长
Gilad 等人 [50] 在 2017 年发现 Loose ROA 的问题. Loose ROA 指 ROA 中包含的 maxLength 长度的子前缀未
全部在 BGP 中宣告, 其原因在于 ROA 中 maxLength 设置过长. 例如 AS 999 仅声明 1 个/20 前缀——45.110.0.0/20

