SKNK 中文技术指南
什么是 RPKI?它如何降低错误路由和劫持风险
RPKI 为 IP 前缀和起源 ASN 建立可验证的授权关系。本文解释 ROA、ROV、Valid、Invalid、NotFound,以及 RPKI 能做什么、不能做什么。
技术内容
由 Shikanoko Networks 编写与维护
RPKI(Resource Public Key Infrastructure,资源公钥基础设施)是一套用于验证 BGP 路由起源授权的体系。它让网络运营者能够确认:某个 ASN 是否被授权宣告某段 IP 前缀。RPKI 不替代 BGP,也不检查整条 AS_PATH;它主要解决“谁有权作为这条路由的起源”。

RPKI 提供可验证的授权依据;路由是否接收,仍由每个网络自己的策略决定。
为什么 BGP 需要额外的验证
BGP 诞生时,互联网参与者规模较小,协议本身并没有强制验证“一个网络是否真的有权宣告某段地址”。
这会带来两类常见风险:
- 运维人员输错前缀或 ASN,意外发布不属于自己的路由;
- 攻击者故意宣告他人的前缀,试图截获或丢弃流量。
过去,网络主要依靠人工联系、IRR、过滤列表和运营经验处理。RPKI 提供了一个可自动验证的授权来源。
RPKI、ROA 和 ROV 分别是什么
这三个词经常一起出现,但职责不同。
RPKI
RPKI 是整个信任和分发体系,包括资源证书、签名、资料库和验证器。
ROA
ROA(Route Origin Authorization)是一条具体授权,说明某个 ASN 可以宣告某个前缀,以及允许宣告到多具体的长度。
例如:
Prefix: 2001:db8:1234::/48
Origin ASN: AS65001
maxLength: /48
ROV
ROV(Route Origin Validation)把实际收到的 BGP 路由与已经验证的 ROA 数据进行比较,然后给出 Valid、Invalid 或 NotFound。
可以这样理解:
- ROA 是授权书;
- RPKI 是验证授权书真伪的体系;
- ROV 是拿实际路由去核对授权书;
- 网络运营商自己的策略决定核对后如何处理。
三种验证状态
Valid
路由的前缀、Origin ASN 和长度都符合至少一条 ROA。
这说明起源授权匹配,但不保证路由一定全球可达,也不说明整条路径安全。
Invalid
存在覆盖该前缀的 ROA,但实际路由的 Origin ASN 不被授权,或者路由长度超过 maxLength。
不少网络会拒绝或降低 Invalid 路由的优先级,因此它可能造成明显的可达性问题。
NotFound
没有任何 ROA 覆盖该前缀。
NotFound 不等于 Invalid,也不等于恶意。它只表示没有可用于起源验证的授权数据。部分平台把这一状态显示为 Unknown,含义相同;不同网络会根据本地策略决定是否接受。
| 状态 | 含义 | 常见处理 |
|---|---|---|
| Valid | 起源和长度符合授权 | 通常正常接受 |
| Invalid | 与已有授权冲突 | 可能拒绝或降级 |
| NotFound | 没有覆盖 ROA | 处理方式取决于运营商 |
RPKI 能防住什么
RPKI 对以下问题很有效:
- 错误 ASN 宣告某个前缀;
- 未授权网络冒充前缀起源;
- 更具体前缀超过授权长度;
- 配置变更后 Origin ASN 与 ROA 不一致。
它尤其适合自动化过滤。网络不必依赖手工判断每一条路由,可以在策略中使用统一的验证状态。
RPKI 不能解决什么
不能验证完整 AS_PATH
一条路由的 Origin ASN 可以合法,但中间路径仍可能异常。当前广泛部署的 ROV 只验证起源。
不能保证全球可达
即使路由是 Valid,也可能因为上游过滤、IRR 缺失、前缀过长、BGP 配置错误或线路故障而不可达。
不能加密业务流量
RPKI 保护的是路由授权,不是 HTTPS、VPN 或应用数据。
不能替代网络监控
路由泄漏、会话中断、路径突变和局部不可达仍需要 BGP 监测和主动测量。
RPKI 和 IRR 有什么区别
IRR 中的 route、route6 对象用于描述路由意图,许多运营商仍根据 IRR 构建过滤器。
ROA 具有加密验证链,用于起源验证。两者不是互相替代关系。
实际部署中通常需要同时维护:
- IRR:满足上游和 Peering 的路由过滤要求;
- RPKI/ROA:提供可验证的起源授权;
- BGP 监控:确认真实路由符合预期。
谁负责创建 ROA
关键取决于 IP 前缀的资源关系。
- 如果组织直接控制对应资源证书,可以通过 RIR 提供的 RPKI 系统创建;
- 如果使用 Sponsoring LIR 管理的 PA 前缀,ROA 通常由该 LIR 创建、修改和撤销;
- 如果使用云或运营商地址,往往由资源提供方负责。
客户使用 LIR 提供的 PA /48 时,应在申请前确认 ROA 修改流程。不能假设拿到 ASN 后就自动拥有该前缀的 RPKI 管理权限。
一次正确的上线流程
- 列出准备宣告的每个前缀;
- 确认每个前缀的 Origin ASN;
- 按真实路由设计创建 ROA;
- 等待授权发布并被验证器获取;
- 使用多个 RPKI 查询工具核对;
- 再让上游启用或调整 BGP 宣告;
- 检查路由状态、AS_PATH 和全球可见性;
- 持续监控 Invalid 和意外 Origin。
“先宣告,出问题再改 ROA”会增加不可控窗口。更稳妥的方式是先发布授权,再切换路由。
常见故障
更换 Origin ASN 后变成 Invalid
ROA 仍然授权旧 ASN。应在切换前更新授权,并等待验证器同步。
宣告更具体前缀后变成 Invalid
路由长度超过 ROA 的 maxLength。需要重新评估是否真的应该宣告更具体前缀,而不是直接把 maxLength 放得很宽。
有 ROA,路由仍然不通
RPKI Valid 只说明起源授权正确。继续检查上游过滤、IRR、BGP Session、导出策略和远端路由表。
删掉 ROA 后立刻恢复了吗
不一定。RPKI 资料库和验证器需要时间同步,不同网络的缓存刷新时间也可能不同。
中国网络团队部署 RPKI 时应注意
跨境部署经常同时涉及国内团队、海外机房和海外上游。建议把以下信息固定记录:
- 前缀及资源提供方;
- Origin ASN;
- ROA 管理联系人;
- 正常和紧急修改渠道;
maxLength设计;- 上游的 ROV 策略;
- 每次变更的时间和审批记录。
不要只在聊天记录里保存 ROA 变更。网络故障时,清晰的变更记录比“记得当时改过”可靠得多。
常见问题
没有 ROA 的路由会被全部丢弃吗?
通常不会因为没有 ROA 就自动丢弃,它会显示为 NotFound。实际处理取决于接收网络的策略。
RPKI 是否只支持 IPv4?
不是,IPv4 和 IPv6 都可以使用。
有 ASN 但没有自己的前缀,需要做 ROA 吗?
ROA 针对 IP 前缀和 Origin ASN 的组合。没有需要自行宣告的前缀,就没有对应 ROA 可创建。
Valid 是否代表路由安全?
它只代表起源 ASN 和长度符合授权。完整路由安全还需要过滤、监控、运维流程和其他机制。
小结
RPKI 给 BGP 增加了一层可验证的起源授权。它不能解决所有路由安全问题,却能显著减少错误起源和部分劫持风险。
部署时最重要的不是“打开 RPKI”这个动作,而是让 ROA 与真实路由设计保持一致,并在每次 Origin ASN、前缀长度和资源关系变化前完成更新。
参考资料
- RIPE NCC:BGP Origin Validation
- RIPE NCC:RPKI Validation 数据说明
- RFC 9582:Route Origin Authorization Profile