课题研究 RPKI路由安全 子课题04 · 第4页 / 共8页
04子课题 · RPKI基础设施弹性与单点故障研究

存储库单点故障与可用性评估第4页:存储库单点故障与可用性评估

RPKI 存储库是每个 CA 发布已签名对象的"货架"。当货架不可达或内容处于非原子不一致状态时,依赖方(RP)便无法获取最新 ROA,ROV 决策随之退化。本页系统评估 rsync 与 RRDP 两种发布机制的可用性差异,建立"失效影响窗口"模型,并以 2020—2024 年 RIPE NCC、ARIN、JPNIC、AFRINIC 等公开事故构建案例库,最后给出可运营的可用性度量与冗余实践。

RepositoryrsyncRRDPCDN非原子发布可用性度量冗余RP研究状态:研究中
前置知识第2页 · 存储库发布机制;第3页 · 信任锚集中化
本页焦点存储库 SPOF / 真实案例库 / 度量与冗余
后续衔接第5页 · CRL/Manifest 撤销机制可靠性

01 · 存储库角色与"沉默的故障"

存储库是 RPKI 信任链的"最后一公里"。CA 签好对象后,必须把它们发布到 SIA 指向的存储库发布点,RP 才能拉取并验证。存储库的故障往往是一种"沉默的故障":它不像路由劫持那样立刻引发可见的流量异常,而是让 ROV 悄悄退化为"基于陈旧/缺失数据的验证"——防御在不知不觉中被削弱。

  • 不可达(Unreachable):网络分区、DNS 误配、源站过载,使 RP 拉取失败。
  • 非原子不一致(Non-atomic):Manifest 已更新但所引用文件尚未就位(或反之),RP 抓到中间态,将对象判为缺失/损坏。
  • 内容陈旧(Stale):存储库可达但内容长时间未更新(如 CA 发布流程卡死),RP 持续使用旧 VRP。
  • 被污染(Tampered):在 RRDP 场景下的中间人 withhold/replay,使 RP 无法获知更新(完整性+可用性双重威胁,第6页详述)。

02 · rsync vs RRDP:可用性对比

维度rsyncRRDP(HTTPS/CDN)
源站负载高:每个 RP 连接都需服务端大量 CPU/内存,易被 DoS低:内容发布后不可变,可经 CDN 缓存分发
抗 DoS / 扩展性弱:源站直接承压强:可借助 CDN 边缘节点吸收流量
部署成熟度高:历史最久、几乎全兼容高:主流 RP 与 RIR 均已支持,但仍有少数 RP 仅 rsync
新威胁面较少(但缺乏传输层完整性保护意识)引入对 CDN/TLS 的依赖,及 withhold/replay 威胁(需 TLS 校验 + 对象签名兜底)
弹性结论作为兜底保留应作为首选(draft-ietf-sidrops-prefer-rrdp 方向)
存储库托管集中度(实测)
draft-li 对 63 个 RPKI 存储库的实测:绝大多数由单一 AS 托管,仅少数位于 CDN
数据来源:draft-li-sidrops-rpki-repository-problem-statement。口径说明:63 个存储库中 60 个由单一 AS 托管;9 个位于 CDN(8 个 Cloudflare AS13335、1 个 Amazon AS16509)。两组数字统计口径不同、允许重叠(CDN 之后的源站仍属于某个 AS),与原文表述一致;占比为时点快照。

03 · 失效影响窗口建模

存储库失效对 ROV 的影响并非瞬时"全有全无",而是一个随时间的窗口。设存储库在 t0 失效,RP 的本地 VRP 缓存有生存时间(取决于 RP 刷新周期与 RTR hold time),则影响窗口 W 可粗略表示为:

W ≈ 失效持续时长 + RP缓存过期时延 + RTR会话保持时间 + 运维发现/恢复时延

若失效期间有"新ROA需生效"或"旧ROA需撤销":
  影响 = max(未被及时授权的合法路由被误拦, 未被及时撤销的恶意/错误路由被放行)
  • 对"新增授权"的影响:新签发的 ROA 无法被拉取 → 对应前缀的 ROV 仍基于旧视图(可能仍为 NotFound),但不会立即造成误拦(除非旧视图恰有冲突 ROA)。
  • 对"撤销/更新"的影响:更危险——若某 ROA 需被撤销以阻止劫持,而存储库失效使其仍停留在 RP 缓存中,则防护失效窗口 = 缓存存活期。
  • 对非原子不一致:影响是"对象被整片判为不可见",表现为该 CA 子树 ROA 大面积消失(见第3页 AFRINIC 案例)。

04 · 真实事件案例库(2020—2024)

以下案例均来自 RIR 公开邮件列表与第三方监测(如 packetvis.com、IEEE 综述),按"现象—影响—根因—缓解"结构化归档,是 RPKI 弹性研究最宝贵的实证素材:

时间 / 主体现象与影响根因缓解
2020-02 RIPE NCC磁盘故障致 CRL 过期、ROA 无法发布磁盘问题使 CRL/Manifest 未能按期重签需执行完整 CA 密钥轮换才恢复
2020-04 RIPE NCC连接数突增,存储库对许多 RP 显示为"宕机"约 7 小时(RIPE 服务已在 CDN 上)突发连接风暴/容量不足扩容与限速策略
2020-05-15 JPNIC硬件故障,存储库停服约 10 小时(JPNIC 官方公告)硬件失效硬件更换
2021-02-15/16 RIPE NCCRPKI 软件故障,08:07—18:06 UTC 无法发布更新;现有对象(有效期 8h 内)仍有效,无数据丢失;RIPE 自承未达 CPS 的 1h 撤销/8h 发布承诺CA 软件故障致发布停滞重启系统恢复;加强监控(rpki-client 未察觉、Routinator 记录告警)
2021-03-18 RIPE NCCManifest 引用了仓库中不存在的证书(原子性问题),RIPE 区域 ROA 批量消失;社区提交详细分析后 RIPE NCC 迅速处置,并发布了透明的事故报告发布点操作缺乏原子性原子发布与一致性检查;透明的事后报告
2022-02-16 RIPE NCCrrdp.ripe.net 不可达,所有验证器回退 rsync 致其过载,形成级联DNS 误配 + 两处监控缺失 + rsync 过载DNS 修复 + 监控补强(RIPE 公开优秀事后报告)
2022-08 ARINRRDP 服务中断约 1.5 小时,同时 ROA 发布延迟;rsync 兜底未受影响RRDP 服务故障rsync 回退生效
2022-09 ARINRRDP 证书过期,阻止了 ARIN 区域所有 RPKI 实例的更新RRDP TLS 证书过期证书更新
2022-01-26~02-02 JPNIC访问日志占满磁盘,CRL/Manifest 无法更新 nextUpdate;2022-02-01 大量 ROA 险些在约 2 小时内过期,JPNIC 在到期前约 1 分钟完成处置(JPNIC 官方公告 + packetvis 记录)磁盘满人工恢复发布;惊险避免大规模失效
2022-11—2024-01 AFRINIC反复顶级 Manifest 失效,ROA 消失 22%—78% 不等(详见第3页 §05)非原子发布 + Manifest 过期尚未见公开技术报告/修复
2020-08-12 ARINBGPalerter 首次自动检测到 ARIN 区域多个前缀"不再被 ROA 覆盖";系 HSM 升级后新签名软件 bug签名软件缺陷修复软件,随后数日数据清理
2020-04-06 RIPE NCC连接数突增,已对 RP 呈现不可达(RIPE 服务当时已位于 CDN 之上)突发连接负载容量与限流策略
2021-02-06 TWNIC/APNIC委托 CA TWNIC 硬件故障,其下全部 ROA 消失硬件故障硬件恢复
2021-06-17 LACNICLACNIC 在 rsync 上整体消失,短时修复但无公开报告未公开—(无公开报告)
2023-04-15~06-06 LACNIC三次 TA 整体消失:负载均衡后端以相同 RRDP Session ID 呈现不同步内容;部分 RP 需重置 RRDP 会话恢复负载均衡 + RRDP 会话 ID 复用 bug建立新 RRDP 会话临时缓解,软件补丁跟进;此后未再复发
2023-05-15/16 nic.br/LACNIC损坏的根 Manifest 致单一委托 CA 影响 LACNIC 区域 41.37% 的 ROA签名软件 bug(5-31 修复)打补丁
2023-05-14 AFRINICRRDP 间歇性不可达持续 10 天以上,用户实测下载速率低至 3KB/s;作为缓解临时禁用 RRDP;同事故中仓库 IPv6 不可达服务器过载 + 带宽问题临时禁用 RRDP;增补 IPv6 监控
2024-01-18 LACNIC12:20 UTC 先告警 100% ROA 即将过期,14:38 UTC 再告警全部 ROA 消失签名软件更新引入 bug软件修复
2024-02-11 nic.brManifest 更新缺口约 6 小时,大量 ROA 先告警即将过期、随后消失、再恢复Manifest 重签流水线中断6 小时后恢复
2024-07-10~12 Routinator 观测部分 Routinator 实例未能同步到 RIPE NCC 数据,持续约两天(社区报告,draft-li 引用)RP 侧同步异常社区排查

案例来源与置信度说明:上表 2020-08 起各事故均可在 packetvis.com《RPKI Trust Anchor Malfunctions: A Review of the Last 3.5 Years》(NTT 工程师 Massimo Candela)逐条核对;JPNIC 事故有 JPNIC 官方公告(nic.ad.jp);RIPE 2022-02-16 有 RIPE NCC 官方事后报告。表中 2020-02 RIPE、2022-08/09 ARIN 三行转引自 IEEE 综述(10.1109/ANRP.2023.10178769),一手报告待补,置信度中等。2020-08 以来全球至少发生 21 起信任锚故障,约 37% 源于发布点操作缺乏原子性,AFRINIC 与 LACNIC 合计约占 80%(packetvis 统计)。

AFRINIC 历次 Manifest 失效的 ROA 损失比例
单次事件中"消失的 ROA 占该区域比例"(据 packetvis.com 统计),直观体现存储库/发布层 SPOF 的破坏力
说明:数值为事件中受影响 ROA 占比的公开统计;单位为百分比。非原子不一致类事件(2023 多次)波动较大,顶级过期类(2022-11、2023-01)破坏最严重。

05 · 可用性度量方法

为把"弹性"从口号变为可量化指标,本课题建议对每一 RIR 信任锚及其存储库持续采集以下指标(具体采集实现见第8页):

指标定义弹性含义
存储库可达率探测周期内 rsync/RRDP 端点成功响应的比例直接反映 SPOF 可用性
同步时延CA 发布新对象到被 RP 观测到的中位/尾延迟反映"撤销/更新"类防护的有效性
双栈可用率RRDP 与 rsync 同时可用的比例反映回退能力;双栈皆不可 = 严重
原子一致性抓取时 Manifest 与其引用文件一致的样本比例反映非原子发布风险(AFRINIC 教训)
VRP 新鲜度RP 输出的 VRP 距"最新已发布状态"的延迟端到端最终体现 ROV 视图的新鲜程度
MTTR从故障发生到 RIR 公开报告/恢复的中位时长反映运营成熟度与透明度

06 · RRDP 优先化与存储库问题陈述

  • draft-ietf-sidrops-prefer-rrdp《RPKI Repository Requirements》:IETF sidrops 提出的 RRDP 优先化渐进方案(分阶段设想,以草案原文为准)——Phase 0:RIR 同时支持 rsync 与 RRDP;Phase 1:RIR 必须实现 RRDP;Phase 2:RP 软件优先 RRDP;Phase 3:RIR 以 RRDP 为主、rsync 仅兜底。目标是把对 rsync 的运营依赖降为"回退选项",缓解源站过载与 DoS 风险。注意:该草案最新版为 -01(2021-10),此后多年未见更新,请以 datatracker 实时状态为准。
  • draft-li-sidrops-rpki-repository-problem-statement:系统陈述存储库问题——(1)多数存储库由单一 AS 托管,可达性高度依赖该 AS;(2)循环依赖:14 个存储库恰好承载其所在 AS 的 ROA,一旦仓库宕机、该 AS 路由因 ROV 被降级,反而更难访问仓库,形成"先有鸡还是先有蛋"的死锁;(3)随着委托 CA 增多,存储库数量将爆发式增长(预测全量部署时可达约 10K 仓库、140K RP),刷新成本与"恶意 CA 耗尽 RP"风险上升。
  • RFC 9697(2024-09):《Detecting RPKI Repository Delta Protocol (RRDP) Session Desynchronization》定义了 RRDP 会话 ID/序列号失步的检测与恢复机制——直接回应 LACNIC 2023 年"多后端复用相同 Session ID 致 TA 整体消失"类事故,RP 软件应支持该机制。

循环依赖警示:上述"存储库所在 AS 的 ROA 由该存储库承载"的 14 个案例,是弹性设计的反面教材——它说明 RPKI 的可用性可能与其自身的路由安全状态相互绑架。部署时应确保验证器至少能通过一条"不受本仓库 ROA 约束"的路径访问仓库(如经独立管理网的 RRDP/CDN)。

6.1 恶意 CA 与 RP 资源耗尽(规模化风险)

随委托 CA 与存储库数量增长(draft-li 预测全量部署时可达约 10K 仓库、140K RP),RP 面临的不仅是可用性问题,还有被恶意 CA 拖垮的规模化风险:

  • 树深度与对象量防护:主流 RP 已内置深度/数量限制——Routinator v0.14.1 默认 RPKI 树搜索深度为 32,rpki-client 默认为 12(draft-li 实测),可限制单个恶意 CA 制造的验证负担;但限制本身也可能被滥用为"通过深树隐藏恶意对象"的规避手段。
  • 学术验证的攻击面:Stalloris(USENIX Security 2022)演示了 RPKI 状态降级攻击;rpkiller(arXiv 2022)研究对 RPKI 生态的系统性攻击;Beyond Limits(CCS 2023)与 Behind the Scenes of RPKI(IMC 2022)测量并揭示了 RPKI 信任结构中被忽视的弱点。上述研究均以防御为目的公开发表,其共同结论是:RPKI 的可用性与信任集中度问题需要系统性缓解,而非单点修补。
  • 治理含义:draft-li 建议为存储库建立合理的准入与治理机制,避免"仓库数量爆炸"同时带来运维成本与攻击面膨胀。

07 · 冗余与高可用实践

实践要点
部署 ≥2 个验证器 geographically 分散,独立网络/供电;RTR 客户端配置多会话,避免单验证器成为 SPOF(第6、7页详述)
RRDP 优先 + rsync 兜底验证器同时配置两种协议 URI,主源失败自动回退;优先 RRDP 以借力 CDN
多 RRDP 镜像/CDN对关键区域配置多个 RRDP 端点;利用 CDN 边缘降低单点
本地 VRP 缓存与 SLURM缓存备份、设定 hold time;用 SLURM(RFC 8416)对关键前缀做本地白名单兜底,避免仓库失效导致误拦
发布点健康监控CA 侧监控 Manifest/CRL 新鲜度、原子一致性,并维护 Ghostbusters(RFC 6493)紧急联系人

本节参考来源(第4页)

以下来源支撑本页的案例、对比与度量方法。

[1]

RIPE NCC Routing-WG 邮件列表(2020—2022 多起 RPKI incident 公开复盘,含 2021-02、2022-02-16 等):ripe.net routing-wg。

[2]

packetvis.com《RPKI Trust Anchor Malfunctions: A Review of the Last 3.5 Years》(AFRINIC/JPNIC/ARIN/RIPE 故障统计):packetvis.com/blog/rpki-trust-anchor-malfunctions。

[3]

IETF RFC 8182《The RPKI Repository Delta Protocol (RRDP)》(2017):rfc-editor.org/rfc/rfc8182。

[4]

IETF draft-ietf-sidrops-prefer-rrdp《Resource Public Key Infrastructure (RPKI) Repository Requirements》(RRDP 优先化渐进方案):datatracker.ietf.org。

[5]

IETF draft-li-sidrops-rpki-repository-problem-statement《RPKI Repository Problem Statement and Analysis》(托管集中、循环依赖、规模预测):datatracker.ietf.org。

[6]

The RPKI Survey (IEEE):汇总 2020—2024 RPKI 基础设施 outage 案例(RIPE/JPNIC/ARIN/AFRINIC):ieeexplore.ieee.org/10296041。

[7]

IETF RFC 8416《SLURM》本地 VRP 覆盖:rfc-editor.org/rfc/rfc8416;RFC 6493《Ghostbusters Record》:rfc6493。