01 · 测量方法论
RPKI 弹性研究的核心命题是:在"局部必然失效"的前提下,能否及时发现失效、量化失效影响、验证缓解措施有效。这要求建立一套可复现的测量方法论,分为主动测量与被动测量两条互补路径。
1.1 主动测量(探测式)
由测量方主动拉取并验证 RPKI 数据,刻画"基础设施本身"的健康度:
- 信任锚与存储库可达性:按 5 个 RIR 的 TAL 逐一下载,并对 CA 证书 SIA 中列出的每个 RRDP 通知文件 / rsync 路径发起探测,记录 HTTP 状态码、TCP/TLS 握手时延、对象下载成功率。
- 证书与签名对象新鲜度:解析每个 Manifest 的
thisUpdate/nextUpdate与每个 CRL 的有效期,计算"距过期剩余时长"与"已 stale 时长",识别沉默故障(第4、5页)。 - VRP 时效与一致性:从多个独立验证器导出 VRP 集合并做 diff,识别因 stale / 非原子发布导致的视图差异(第5页 §05 的"验证器行为差异")。
1.2 被动测量(观测式)
不主动拉取,而是利用已有的全局数据观察"RPKI 对路由的实际影响":
- 路由收集器比对:将验证器产出的 VRP 与 RIPE RIS、Route Views 等公共 BGP 收集器的路由表比对,统计 Valid / Invalid / NotFound 三态分布与随时间变化(NIST RPKI Monitor 即采用此范式)。
- ROV 部署面测量:向全球各 AS 注入探测前缀/伪造通告,观察在哪些 AS 被过滤,刻画 RPKI 过滤的实际覆盖率(如 ROV Deployment Monitor、Cloudflare "Is BGP Safe Yet?")。
- 时间序列异常检测:对 VRP/ROA 数量、Manifest stale 比例按日/时做趋势与突变检测,关联 RIR 公告事件(如 AFRINIC 反复 Manifest 失效)。
1.3 关键指标定义
| 指标 | 定义 | 健康判据(参考) |
|---|---|---|
| Manifest 新鲜度 | 当前时间与 nextUpdate 之差;负值即 stale | 所有 Manifest 在有效期内;AFRINIC 2022-11 顶级 Manifest 过期致 73.95% ROA 消失约 7 小时,且 2023 年起反复发生、至今未见 AFRINIC 公开技术报告或修复 |
| CRL 过期窗口 | CRL nextUpdate 距过期的剩余时长 | 重签自动化,避免 CRL 过期导致对象被丢弃 |
| VRP 发布时延 | ROA 创建/变更到被验证器纳入 VRP 的时延 | RRDP 通常分钟级;rsync 受周期与重试影响更大 |
| 存储库可用性 | 探测成功比例与 P95 拉取时延 | 单 AS 托管易跌破 SLA(第4页案例) |
| 验证器一致性偏差 | 多验证器 VRP 输出不一致的前缀数 | 理想为 0;非零需排查 stale/实现差异 |
方法论要点:主动测量回答"基础设施是否健康",被动测量回答"失效是否被路由感知"。二者缺一不可——仅做主动测量会忽略"数据有效但无人过滤"的部署盲区;仅做被动测量则无法定位"是哪个 RIR/仓库出了故障"。
02 · 工具生态与监测平台
本课题不重复造轮子。下列工具均来自 RIR、标准化组织与开源社区,经过生产环境检验,可直接支撑第 01 节的测量方法论。
2.1 依赖方(RP)软件
RP 软件负责从信任锚拉取并验证全量 RPKI 数据、生成 VRP、并通过 RTR 协议供给路由器。主流开源实现:
| 软件 | 维护方 / 语言 | 特点与定位 |
|---|---|---|
| Routinator | NLnet Labs / Rust | 应用最广泛的 RP 之一;内置 RTR 服务与 Web UI,提供 /metrics 指标端点(详见 §03) |
| rpki-client | OpenBSD 项目 / C | 轻量、经安全审计,已移植到主流 Linux 发行版;设计简洁、生产可用 |
| OctoRPKI | Cloudflare / Go | Cloudflare 维护的依赖方软件(cfrpki);常与 GoRTR(RTR 服务)配合 |
| Fort Validator | NIC.MX / FORT 项目 / C | 活跃维护,自带 RTR 服务,支持 RTR v0(RFC 6810)与 v1(RFC 8210) |
| Krill | NLnet Labs / Rust | 注意:不是 RP,而是 CA + 发布服务器(Publication Server),用于在自有基础设施运行 RPKI 签发的软件 |
| RIPE NCC Validator 3 | RIPE NCC / Java | 已于 2021-07-01 停止维护并归档,公共实例已迁移至 Routinator;不建议新部署 |
多实现对冲:第5页指出不同 RP 在 stale / 非原子场景下的处理存在偏差。因此建议生产环境至少混部两种实现(如 Routinator + rpki-client),既是冗余,也是对"实现 bug 导致集体误判"的对冲。
2.2 监测平台与数据集
| 平台 / 数据集 | 用途 | 数据来源 |
|---|---|---|
| NIST RPKI Monitor (v2.0) | 量化全球 RPKI-ROV 的完整性、正确性、稳定性,含异常自动报告 | Route Views + RIPE RIS 收集器、各 RIR 仓库 |
| RIPE NCC RPKI Dashboard | RIR 自身的 RPKI 服务状态、证书/ROA 管理面板 | RIPE NCC 基础设施 |
| Cloudflare RPKI (rpki.cloudflare.com / IsBGPSafeYet / Radar) | 单前缀 ROA 状态查询、各 ISP 是否过滤 Invalid、宏观 BGP 健康 | Cloudflare 全球 Anycast + BGP 视图 |
| ROV Deployment Monitor (rov.rpki.net) | 测量"有多少 AS 实际部署了 ROV" | PEERING 探测 + BGP 监测 |
| MANRS / RIPEstat | 路由安全治理与单前缀 RPKI/路由历史可视化 | RIPE 社区数据 |
| bgp.tools / BGPalerter | 社区级前缀/AS 可见性;BGPalerter 提供实时异常告警 | 社区路由数据 + 实时监测 |
| CAIDA / RIPE RIS / Route Views | RPKI 数据集与 BGP 收集器原始数据,供自建测量 | 学术/运营社区公共数据 |
| BGPalerter | 开源 BGP 监控与告警工具;2020-08 起首次自动检测信任锚故障(ARIN 事件),是社区级 TA 健康监测的标杆 | 实时 BGP/RPKI 数据源,可自托管 |
| PacketVis | NTT《信任锚故障 3.5 年回顾》所用的可视化/监测工具链(Massimo Candela),附 21+ 起 TA 故障结构化档案 | NTT 全球网络观测 + 社区报告 |
读源提示:NIST RPKI Monitor 明确声明"不提供可用于网络运营的信息,仅供设计与标准化讨论",其结论基于 Route Views 与 RIPE RIS 的 BGP 轨迹数据,解读时需考虑收集器覆盖偏差(如伪造属性、覆盖盲区)。把它当作"基础设施态势"信号,而非"本网点对点 ROV 已生效"的证明。
03 · 测量实践:以 Routinator 为例
把方法论落地到具体工具。以部署最广泛的 Routinator 为例,可直接获取结构化健康指标:
- 连接健康看板:Routinator UI 的
/connections显示每次刷新时间、各仓库拉取耗时与结果,可用于绘制"存储库可用性"时序图(对应 §01.1)。 - 对象级指标:
/metrics端点按信任锚给出 ROA、VRP、Manifest、CRL 的数量与状态,并标记被本地过滤的对象——可直接对接 Prometheus/Grafana 做告警。 - 仓库状态页:
/repositories列出所有宿主与委托仓库的 VRP 数量及 Manifest/CRL 状态,便于故障定位(如某 RIR 区域 manifest 大面积过期)。 - 与 BGP 视图比对:将 Routinator 输出的 VRP 与 RIPE RIS 当前路由表比对,统计三态分布;当某区域 VRP 突降(如 AFRINIC ROA 大量消失)时,应能立即在告警中体现。
# 典型 Routinator 指标抓取(接入监控;默认 HTTP 端口 8323,RTR 默认 3323,按本地配置调整)
curl -s http://localhost:8323/metrics # VRP/ROA/Manifest/CRL 计数与状态
curl -s "http://localhost:8323/api/v1/validity/64496/203.0.113.0/24" # 单前缀验证状态(v0.9+)
# 旧版端点为 /validity?asn=64496&prefix=203.0.113.0/24,升级前请核对本地版本
# RTR 会话供给路由器:
# router bgp <ASN> → rpki server <validator-ip> port 3323实践准则:监控的"北极星"不是"RPKI 是否启用",而是"当上游失效时,本网的降级行为是否符合预期"。因此告警应同时覆盖"数据消失"(repo down / stale)与"策略越界"(Invalid 被放过 / NotFound 被误拦)另请注意:Routinator 默认 HTTP 端口为 8323(RTR 默认 3323),单前缀验证端点在 v0.9+ 为 /api/v1/validity/{asn}/{prefix};容器或云部署时请以本地配置为准。
04 · 实施路线图(面向网络运营方)
将本子课题的全部结论转化为可执行的五阶段路线。每个阶段都可被第 01 节的指标度量、被第 02 节的工具支撑。
| 阶段 | 目标 | 关键动作 | 出口判据 |
|---|---|---|---|
| Phase 0 评估 | 摸清依赖面 | 确认已签 ROA、上游/对端 ROV 状态、关键前缀清单、所依赖 RIR 区域 | 形成"关键前缀 × 当前授权"清单 |
| Phase 1 观测 | 先看见,不拦截 | 部署 ≥1 验证器(monitor-only);接入 /metrics;订阅 NIST Monitor / RIR 公告 | 看板能呈现 VRP 新鲜度与仓库健康 |
| Phase 2 加固 | 冗余与降级 | ≥2 验证器异地互备;RRDP 优先 + rsync 兜底;RTR 多会话 + 本地缓存;SLURM 仅对关键前缀白名单;RTR 启用安全传输 | 主验证器宕机时路由不中断、不误拦 |
| Phase 3 演练 | 验证弹性 | 故障注入:关 repo / 注入 stale manifest / 断 RTR / 模拟某 RIR 不可达 | 降级行为符合预期、告警被触发 |
| Phase 4 强化 | 可持续运营 | 跟踪 draft-ietf-sidrops-prefer-rrdp、draft-li 存储库问题;评估跨区/社区镜像;定期复审 SLURM;纳入变更与事件响应 | 形成季度复审与演练常态化机制 |
05 · 运维检查清单
可直接用于上线前自查与定期复审的精简清单(✓ 为必须满足项):
06 · 子课题结论与风险矩阵
综合本子课题 8 页研究,RPKI 的弹性并非某一单点补丁,而是"信任锚冗余 × 存储库多节点 × 验证器互备 × 优雅降级 × 可观测治理"的乘积。任一因子归零,整体弹性即坍塌。下面的风险矩阵将前 7 页的核心风险收束为可操作的索引。
| 组件 | 失效模式 | 典型影响 | 对应缓解(页) |
|---|---|---|---|
| 信任锚 | 锚密钥泄露 / 区域整体停服 | 全局或区域 ROV 失效,伪造授权可传播 | 多锚加载、密钥轮换(RFC 6489)、CP/CPS 审计(P3/P7) |
| 存储库 | 单 AS 托管宕机、非原子发布 | 沉默故障、ROA 大面积消失(AFRINIC 案例) | RRDP+CDN、多发布点、原子发布(P4/P7) |
| CRL / Manifest | stale / 过期未重签 | 对象被丢弃或误判有效期 | 重签自动化、宽松 NotFound、监控新鲜度(P5) |
| RTR 通道 | 会话中断、中间人篡改 | 路由被清空为 NotFound 或遭投毒 | 多会话、本地缓存、IPsec 安全传输(P6/P7) |
| 委托 CA 私钥 | 内部滥用 / 越权签发 | 伪造 ROA 污染下游 | RFC 8211 不利行为约束、RBAC、审计(P6) |
| 依赖方软件 | 实现 bug / 单实现偏差 | 集体误判(stale 处理不一致) | 多实现混部、一致性测试(P5/P7) |
研究收束:RPKI 已显著降低 BGP 路由劫持的可行性与成本,但其"基础设施层"仍存在可量化的单点:信任锚的五大区域格局、存储库的"单 AS 托管 + 循环依赖"、撤销机制对自动化重签的依赖、以及 RTR 通道的暴露面。提升弹性不必等待标准完善——运营商今天即可通过"双验证器 + RRDP/CDN + SLURM 兜底 + 主动测量"获得显著韧性提升;标准化工作(RRDP 优先化、存储库治理)则决定了全行业弹性上限的进一步抬高。
本节参考来源(第8页)
以下来源支撑本页的测量方法论、工具生态与实施路线,均为可公开核验的官方/社区资源。
NIST RPKI Monitor(v2.0)Methodology & User's Guide:量化 RPKI-ROV 的完整性/正确性/稳定性:rpki-monitor.antd.nist.gov/Methodology。
NIST RPKI Deployment Monitor(Robust Inter-Domain Routing 项目):nist.gov;监测平台:rpki-monitor.antd.nist.gov。
RIPE NCC RPKI Validator 退役与迁移至 Routinator(RIPE Labs, N. Trenaman):labs.ripe.net。注:RIPE NCC Validator 3 于 2021-07-01 停止维护。
RIPE NCC《RPKI Tools and Resources》(依赖方软件清单与 router 集成示例):ripe.net。
NLnet Labs Routinator 项目主页与 /metrics 指标说明:nlnetlabs.nl;Krill(CA + 发布服务器):nlnetlabs.nl/krill。
OpenBSD rpki-client:rpki-client.org;Cloudflare OctoRPKI / GoRTR:github.com/cloudflare/cfrpki。
FORT Validator(NIC.MX / FORT 项目):fortproject.net;RTRlib(RTR 客户端库,FU Berlin/HAW Hamburg):rtrlib.realmv6.org。
ROV Deployment Monitor:rov.rpki.net;Cloudflare RPKI / Is BGP Safe Yet?:isbgpsafeyet.com;MANRS 路由安全:manrs.org。
RIPE RIS 与 Route Views 公共 BGP 收集器、CAIDA RPKI 数据集(被动测量数据来源)。相关 RFC:RTR RFC 6810 / RFC 8210;SLURM RFC 8416;RP 要求 RFC 8897;RRDP RFC 8182;密钥轮换 RFC 6489;宽松 NotFound RFC 7115。
IETF RFC 9691《A Profile for RPKI Trust Anchor Keys (TAKs)》(2024);RFC 9697《Detecting RRDP Session Desynchronization》(2024-09);RFC 9325(BCP 195,取代 RFC 7525 的 TLS 最佳实践)。
Massimo Candela (NTT), PacketVis《RPKI Trust Anchor Malfunctions: A Review of the Last 3.5 Years》(2020-08 以来 21+ 起 TA 故障档案):packetvis.com;RIPE NCC CPS(RIPE-851)。