RPKI 校验与落地
RPKI 用签名过的授权对象(ROA)声明「某个前缀由哪个 AS 始发、最长可到多少位掩码」。路由器把收到的路由与 ROA 比对,得到三个状态:valid、invalid、notfound。落地时不要一步到位丢弃 invalid,而要分阶段推进:先统计观察,再对少量邻居启用丢弃,复核影响面后逐步扩大。
基本信息
| 数据来源 | RPKI 校验器(如 Routinator、rpki-client 等)提供 ROA 校验结果 |
|---|---|
| 校验对象 | 前缀、掩码长度与始发 AS 三者关系 |
| 状态取值 | valid / invalid / notfound |
| 常见动作 | 只统计、告警、对 invalid 丢弃(drop) |
| 平台差异 | Cisco、华为、Juniper、FRR 的匹配语句与语法各不相同,需按本平台文档核对 |
典型使用场景
- 新部署阶段:只统计三个状态的路由数量,评估本网实际分布
- 上线试点:挑选影响面小的邻居先应用 invalid 丢弃
- 复核与扩大:对比变更前后前缀数量与业务通达情况,再决定推广范围
- 应急处置:发现误伤时快速关闭该邻居的 RPKI 过滤,回到观察模式
- 月度巡检:关注 invalid 前缀数量变化趋势,及时发现配置错误或劫持迹象
策略示例与刷新(FRR 语义)
策略示例与刷新(FRR 语义)
# 丢弃 invalid,放行 valid 与 notfound
route-map RM-RPKI deny 10
match rpki invalid
route-map RM-RPKI permit 20
match rpki valid notfound
router bgp 65001
neighbor 10.0.0.2 route-map RM-RPKI in
# 策略变更后对已学路由重新评估
clear bgp 10.0.0.2 soft in
# 统计各状态数量(按平台命令核对具体语法)
show bgp rpki table三种状态逐项读法
| 状态 | 含义 | 常见处理 |
|---|---|---|
| valid | 存在覆盖该前缀的 ROA,始发 AS 与掩码长度均符合 | 正常放行,可作为优选依据之一 |
| invalid | 存在覆盖前缀的 ROA,但始发 AS 或掩码长度不符 | 通常丢弃;务必先评估误伤面 |
| notfound | 没有任何 ROA 覆盖该前缀 | 一般放行,仅记录统计 |
| 无效数据 | 校验器失效或数据过期时状态可能整体异常 | 监控校验器自身健康度,避免误伤扩大 |
不同实现对 rpki 匹配语句的支持与写法差异较大,部分版本只支持统计不支持匹配。启用前用本平台文档核对支持情况,并在演练环境验证语法,避免策略下发后被整段拒绝。