01 · RPKI对象模型:测量对象的解剖
RPKI是一套以X.509资源证书为基础(复用RFC 5280证书规范并加入IP/AS资源扩展)的密码学基础设施。测量的第一步是弄清"被部署的对象到底是什么"。RPKI存储库中部署与验证涉及的对象类型如下:
| 对象 | 定义与作用 | 标准依据 |
|---|---|---|
| 信任锚证书(TA Certificate) | 每个RIR自行签发的自签名根证书,是所有验证链的起点;RP软件通过TAL(信任锚定位符)获取 | RFC 6490(TAL原始版,已被RFC 7730废黜);RFC 8630(现行TAL);RFC 6484(证书策略) |
| CA证书(资源证书) | RIR向下级(NIR、LIR、最终用户)签发的资源证书,以RFC 3779扩展携带IP前缀块/AS号段授权 | RFC 6487(已被RFC 7318、RFC 8209、RFC 9829更新) |
| ROA(路由源授权) | 由EE证书签名的CMS对象,{asID, ipAddrBlocks(prefix, maxLength)}三元组的权威声明 | RFC 6482(已被RFC 9582更新)、RFC 6488(签名对象模板,已被RFC 9589更新) |
| Manifest(清单) | 某CA发布目录下全部对象的哈希清单,供RP校验存储库完整性与检测对象被删除/替换 | RFC 6486(v1,已被RFC 9286废黜更新) |
| CRL(证书撤销列表) | EE证书撤销状态列表;配合Manifest共同支撑"对象消失"类攻击检测 | RFC 6481、RFC 6486;RFC 9829(2026年,CRL序号扩展处理) |
| Ghostbusters记录 | 发布者联系信息记录,供异常处置时联络资源持有者 | RFC 6493(现状态为Historic) |
1.1 信任链示例
以一条RIPE NCC区域的ROA验证链为例:
RIR信任锚(RIPE NCC, 自签名)
└─ CA证书(LIR:某会员机构,获授权 203.0.113.0/24)
└─ EE证书(一次性签发,仅用于签署单个ROA)
└─ ROA:{ asID: AS64496, prefix: 203.0.113.0/24, maxLength: 24 } ← CMS签名对象
RP软件验证:TA指纹(TAL内嵌)→ 证书链逐层校验 → 资源授权包含性检查 →
有效期/撤销状态检查 → 提取VRP (203.0.113.0/24, max=24, AS64496)测量启示:信任链中任何一环失效(证书过期、Manifest不一致、CRL不可达、RRDP同步失败),都会导致VRP缺失或验证失败。因此"部署测量"不仅是数ROA个数,还需沿整条信任链逐环节做可用性测量——这正是第4页覆盖质量维度与第3页管道设计的依据。
02 · ROV三态判定算法:效能测量的基准线
路由起源验证的判定规则由RFC 6483定义、RFC 6811给出操作框架:对BGP宣告{prefix p, origin AS a},在本地VRP库中寻找匹配项:
for each VRP {prefix v, maxLength m, authorized AS asn}:
if p ⊆ v 且 length(p) ≤ m:
if a == asn → 判定 Valid(存在授权,且起源一致)
else → 判定 Invalid(存在授权,但起源不一致 → 疑似劫持)
if 无任何VRP覆盖 p:
判定 NotFound(无证据,默认接受 → 无防护状态)- 最长前缀匹配优先:多条VRP同时覆盖时,以最长匹配VRP为准;VRP库中相同前缀可能存在多条记录(不同授权AS)。
- maxLength语义:声明"授权宣告允许的最长掩码"。若LIR只宣告/24却签署maxLength=24覆盖整个/16,攻击者仍无法以/25劫持(maxLength约束),但若maxLength=16而实际宣告/24,则合法宣告反而被判Invalid——这是ROA配置错误的主要来源之一(第7页展开)。
- 判定结果只是"输入":路由器对Invalid路由的策略(discard / de-prefer / log-only)由本地配置决定,RPKI本身不强制任何动作——这导致"全球ROA覆盖率"与"全球实际防护率"之间必然存在落差(第5、6页的测量重点)。
- 验证状态可传播:RFC 8097定义了携带起源验证三态结果的BGP扩展团体属性,边界路由器的OV判定可沿iBGP传递给域内其他路由器,支撑"一处验证、域内一致策略"的部署形态——测量执行率时,"全网统一discard"与"仅边界执行"是两种不同的执行强度档位。
03 · RTR协议(RFC 8210):执行测量的关键观测面
RTR是RP软件与路由器之间的验证结果分发协议,v1版由RFC 8210(2017)定义,废黜了2013年的v0(RFC 6810)。协议要点:
- 传输与会话:运行于TCP之上(约定服务端口323),通过Serial Number机制支持增量同步;支持IPv4/IPv6双栈VRP下发。
- PDU类型:Serial Query / Serial Notify / Reset Query / Cache Response / IPv4 Prefix PDU / IPv6 Prefix PDU / End of Data / Error Report等;Prefix PDU携带前缀、掩码、最大长度与起源AS,即VRP的线上编码。
- 会话重置:RP侧缓存重置或路由器会话异常时,触发全量刷新(Reset Query → Cache Response → 全量PDU → End of Data)。
- 安全考量:协议本身不强制加密(RFC 8210建议部署方以TCP-AO或隧道等方式保护会话),同一RP可为多台路由器服务,形成"一点验证、多点分发"结构。
测量启示:RTR是ROV执行链路中唯一存在可观测交互的环节——虽然无法从全球视角直接观测,但可通过"路由器侧公开配置案例、IXP开放测量、RP软件部署统计"三角互证来估计RTR生态规模;而"是否对Invalid执行discard"仍属路由器本地决策,只能间接推断(第5页方法)。
3.1 RTR版本演进与兼容现状
| 版本 | 标准 | 状态说明 |
|---|---|---|
| RTR v0 | RFC 6810(2013) | 原始版本,仅支持IPv4/IPv6前缀PDU基础集;已被RFC 8210废黜 |
| RTR v1 | RFC 8210(2017) | 现行版本:扩展PDU格式、明确错误处理与会话语义;主流RP软件与路由器厂商均支持 |
04 · 存储库分发:rsync与RRDP双轨制
RPKI对象从RIR存储库到RP软件的同步存在两套机制,直接影响覆盖测量的采集时效:
| 机制 | 标准 | 特征 | 测量影响 |
|---|---|---|---|
| rsync | RFC 6481(目录结构) | 早期唯一方式;目录树按CA层级组织;全量镜像开销大、延迟高 | 快照时点粗糙,难以支撑分钟级测量;仍在部分遗留管道中使用 |
| RRDP | RFC 8182(2017) | 基于HTTPS的XML机制:notification.xml(版本通知)+ snapshot.xml(全量)+ delta(增量);仅传输变更对象 | 同步延迟从小时级降至分钟级;是现行测量管道的事实标准 |
RRDP的引入是RPKI测量史上的分水岭:2017年之前,全局覆盖统计只能做到"日级甚至更粗"的快照;RRDP普及后,RP软件(如rpki-client、Routinator)可将全部五大RIR对象的同步周期压缩至10—15分钟,使"接近实时的全球ROA覆盖仪表盘"成为可能(NIST RPKI Monitor、RIPE NCC统计均基于此)。
同步失败=测量盲区:若某RIR存储库短时不可用或RRDP证书配置异常,RP侧的VRP集会暂时缺失该区域数据,BGP侧对应前缀会大面积"退化为NotFound"。覆盖测量必须剔除或标注此类同步异常窗口,否则会把基础设施故障误读为"ROA被撤销"(第3页数据治理)。
05 · 部署模式:托管与委托
资源持有者参与RPKI有两种模式,测量时必须区分(两者在存储库拓扑、证书控制权上差异显著):
| 模式 | 机制 | 优点 | 局限 |
|---|---|---|---|
| 托管(Hosted) | 在RIR提供的Web平台直接点击签发ROA,密钥与CA由RIR托管 | 零门槛、无运维负担;出错率低;适合中小LIR | 依赖RIR平台可用性;细粒度控制有限 |
| 委托(Delegated) | 自建CA,从RIR获取委托资源证书,自行运营发布点(需支持RRDP/rsync+Manifest/CRL完整栈) | 完全控制密钥与ROA生命周期;可自动化签发(RFC 8181发布协议、RFC 8183带外配置) | 运维复杂度高;证书/Manifest管理不当会导致验证失败 |
不同RIR的托管/委托成熟度不同:RIPE NCC与ARIN的托管服务较早成熟,APNIC提供托管与委托双轨,AFRINIC/LACNIC亦提供托管平台。测量上,托管比例高的区域ROA增长更快、错误率更低,这是区域对比(第4页)的重要解释变量。
06 · 信任锚体系与例外处理
- 五大信任锚:APNIC、ARIN、RIPE NCC、LACNIC、AFRINIC各自运营信任锚;IANA将号码资源按区域委托给RIR,RPKI信任结构与此一一对应(RFC 6491描述RIR代表IANA签发的对象)。
- 跨区迁移的历史对象:资源在RIR之间转移(如欧洲LIR迁入ARIN区域)时,历史ROA可能在旧RIR侧残留、新RIR侧未签,形成"幽灵VRP"——测量覆盖时若仅以"当前宣告前缀∩ROA"计算,会低估实际冲突风险;Testart等(IMC 2019)将此列为Invalid宣告的重要来源之一。
- SLURM本地层(RFC 8416):RP软件支持管理员本地添加或过滤VRP。它是灰度上线(先log-only观察)与例外处置的标准手段,但也意味着"RP侧实际生效的VRP集"可能偏离"全球客观ROA集"——严肃测量应区分两集合并记录差异。
- 路由器和RP的角色分离:RP软件(验证者)与路由器(消费者)可同机或分离部署;大型网络常采用中心RP集群+边缘RTR分发结构,测量RTR会话规模时需按"每对会话"而非"每组织"计数。
本节参考来源(第2页)
以下均为真实可查的IETF标准原文与权威文档。
IETF RFC 6482《A Profile for Route Origin Authorizations (ROAs)》(2012):rfc-editor.org/rfc/rfc6482;RFC 6483《Validation of Route Origination Using RPKI》(2012):rfc-editor.org/rfc/rfc6483。
IETF RFC 6811《BGP Prefix Origin Validation》(2013):rfc-editor.org/rfc/rfc6811;RFC 7115《Origin Validation Operation Based on the RPKI》(2014):rfc-editor.org/rfc/rfc7115。
IETF RFC 8210《The Resource Public Key Infrastructure (RPKI) to Router Protocol, Version 1》(2017):rfc-editor.org/rfc/rfc8210。
IETF RFC 8182《The RPKI Repository Delta Protocol (RRDP)》(2017):rfc-editor.org/rfc/rfc8182。
IETF RFC 6486《Manifests for the RPKI》(2012):rfc-editor.org/rfc/rfc6486;RFC 6490《Trust Anchor Locator》(2012):rfc-editor.org/rfc/rfc6490。
IETF RFC 8416《Simplified Local Internet Number Resource Management with the RPKI (SLURM)》(2018):rfc-editor.org/rfc/rfc8416。
IETF RFC 8181《A Publication Protocol for the RPKI》(2017):rfc-editor.org/rfc/rfc8181;RFC 8183《An Out-of-Band Setup Protocol for RPKI Production Services》(2017,废黜RFC 6492):rfc-editor.org/rfc/rfc8183。
IETF RFC 8209《A Profile for BGPsec Router Certificates, Version 2》(2017,更新RFC 6487):rfc-editor.org/rfc/rfc8209;RFC 7935《The RPKI Algorithms and Key Size Profile》(2016,更新RFC 6485):rfc-editor.org/rfc/rfc7935。
rpki-client文档:rpki-client.org;NLnet Labs Routinator:nlnetlabs.nl;Fort Validator:fortproject.org;Cloudflare OctoRPKI:github.com/cloudflare/cfrpki。
IETF RFC 7730《RPKI Trust Anchor Locator》(2016,废黜RFC 6490):rfc-editor.org/rfc/rfc7730;RFC 8630(2019,TA格式):rfc-editor.org/rfc/rfc8630(RIPE NCC CPS亦引用8630作为其TA依据)。
IETF RFC 9286《Manifests for the RPKI》(2022,废黜RFC 6486):rfc-editor.org/rfc/rfc9286;RFC 9829《Handling of RPKI CRL Number Extensions》(2026):rfc-editor.org/rfc/rfc9829。
IETF RFC 9582(ROA配置文件更新版,废黜RFC 6482):rfc-editor.org/rfc/rfc9582;RFC 9589(签名对象模板更新):rfc-editor.org/rfc/rfc9589。
IETF RFC 8097《BGP Prefix Origin Validation State Extended Community》(2017):rfc-editor.org/rfc/rfc8097(OV三态结果的BGP域内传播机制)。