159 lines
5.7 KiB
Markdown
159 lines
5.7 KiB
Markdown
# 11. RTR(RPKI to Router Protocol)
|
||
|
||
## 11.1 目标与文档范围
|
||
|
||
RTR 用于把 RP/Cache 已完成密码学验证的 RPKI 数据下发给路由器。
|
||
|
||
本文按以下规范整理:
|
||
- RFC 6810(RTR v0)
|
||
- RFC 8210(RTR v1,更新 RFC 6810)
|
||
- draft-ietf-sidrops-8210bis-25(RTR v2,草案)
|
||
|
||
## 11.2 协议演进
|
||
|
||
### 11.2.1 RFC 6810(v0)
|
||
|
||
- 只定义 Prefix Origin 相关 payload(IPv4/IPv6 Prefix PDU)。
|
||
- 主要 PDU:Serial Notify / Serial Query / Reset Query / Cache Response / Prefix / End of Data / Cache Reset / Error Report。
|
||
|
||
### 11.2.2 RFC 8210(v1)
|
||
|
||
在 v0 基础上新增/强化:
|
||
- 新增 `Router Key PDU`(PDU Type 9,v1 可用,v0 保留)。
|
||
- 强化协议版本协商与降级行为。
|
||
- `End of Data` 在 v1 中携带 `Refresh/Retry/Expire` 三个计时参数。
|
||
|
||
### 11.2.3 Version 2(草案)
|
||
|
||
在 v1 基础上新增/强化:
|
||
- 新增 `ASPA PDU`(PDU Type 11,仅 v2)。
|
||
- 新增 “Races, Ordering, and Transactions” 章节,要求缓存按规定顺序输出 payload 以降低路由器短暂误判。
|
||
- 协议版本提升到 `2`。
|
||
- 明确 PDU 最大长度上限为 64k(65535)。
|
||
|
||
## 11.3 PDU 与版本矩阵
|
||
|
||
PDU 类型(按规范注册表):
|
||
|
||
| PDU Type | 名称 | v0 (RFC6810) | v1 (RFC8210) | v2 (8210bis-25) |
|
||
|---|---|---|---|---|
|
||
| 0 | Serial Notify | 支持 | 支持 | 支持 |
|
||
| 1 | Serial Query | 支持 | 支持 | 支持 |
|
||
| 2 | Reset Query | 支持 | 支持 | 支持 |
|
||
| 3 | Cache Response | 支持 | 支持 | 支持 |
|
||
| 4 | IPv4 Prefix | 支持 | 支持 | 支持 |
|
||
| 6 | IPv6 Prefix | 支持 | 支持 | 支持 |
|
||
| 7 | End of Data | 支持 | 支持(含计时参数) | 支持 |
|
||
| 8 | Cache Reset | 支持 | 支持 | 支持 |
|
||
| 9 | Router Key | 保留 | 支持 | 支持 |
|
||
| 10 | Error Report | 支持 | 支持 | 支持 |
|
||
| 11 | ASPA | 保留 | 保留 | 支持 |
|
||
|
||
通用字段约束:
|
||
- `Protocol Version`:8-bit。
|
||
- `PDU Type`:8-bit。
|
||
- `Session ID`:16-bit。
|
||
- `Length`:32-bit。
|
||
- 保留位(zero/reserved)发送必须为 0,接收时按规范处理。
|
||
|
||
## 11.4 关键 PDU 语义
|
||
|
||
### 11.4.1 Serial Notify(Type 0)
|
||
|
||
- 由 Cache 主动发送,提示有新序列可拉取。
|
||
- 是少数可不由 Router 请求触发的消息。
|
||
|
||
### 11.4.2 Reset Query(Type 2)与 Cache Response(Type 3)
|
||
|
||
- Router 启动或失配时发 `Reset Query` 请求全量。
|
||
- Cache 回复 `Cache Response`,随后发送全量 payload,最后 `End of Data`。
|
||
|
||
### 11.4.3 Serial Query(Type 1)
|
||
|
||
- Router 持有上次 `Session ID + Serial` 时请求增量。
|
||
- Cache 若可提供增量:返回变化集。
|
||
- Cache 若无法从该 serial 补增量:返回 `Cache Reset`,要求 Router 走全量。
|
||
|
||
### 11.4.4 Prefix / Router Key / ASPA payload
|
||
|
||
- `IPv4 Prefix`(Type 4)/ `IPv6 Prefix`(Type 6):表示 VRP 的 announce/withdraw。
|
||
- `Router Key`(Type 9,v1+):表示 BGPsec Router Key 的 announce/withdraw。
|
||
- `ASPA`(Type 11,v2 草案):表示 ASPA 数据单元的 announce/withdraw。
|
||
|
||
语义要点(v1 / v2 草案):
|
||
- 对同一 payload 键(如 Prefix 四元组、Router Key 三元组、ASPA customer 键)应维护清晰的替换/撤销关系。
|
||
- Cache 负责把历史变化“合并简化”后再发给 Router,避免无意义抖动。
|
||
|
||
### 11.4.5 End of Data(Type 7)
|
||
|
||
- 标识一次响应结束,并给出当前 serial。
|
||
- v0:不含定时器字段。
|
||
- v1/v2:携带 `Refresh Interval`、`Retry Interval`、`Expire Interval`。
|
||
|
||
## 11.5 协议时序
|
||
|
||
### 11.5.1 初始同步(Full Sync)
|
||
|
||
1. Router 建连后发 `Reset Query`(带支持的协议版本)。
|
||
2. Cache 回 `Cache Response`。
|
||
3. Cache 按规范发送 payload 集合。
|
||
4. Cache 发 `End of Data` 收尾。
|
||
|
||
### 11.5.2 增量同步(Incremental Sync)
|
||
|
||
1. Router 发 `Serial Query(session_id, serial)`。
|
||
2. Cache 若可增量,返回变化并以 `End of Data` 收尾。
|
||
3. 若不可增量,返回 `Cache Reset`;Router 退回 Full Sync。
|
||
|
||
## 11.6 版本协商与降级
|
||
|
||
- Router 每次新连接必须由 `Reset Query` 或 `Serial Query` 启动,携带其协议版本。
|
||
- 双方在协商完成后,本连接内版本固定。
|
||
- 遇到不支持版本时,可按规范降级(例如 v1 对 v0、v2 对 v1/v0)或返回 `Unsupported Protocol Version` 后断开。
|
||
- 协商期若收到 `Serial Notify`,Router 应按规范兼容处理(通常忽略,待协商完成)。
|
||
|
||
## 11.7 计时器与失效(v1/v2)
|
||
|
||
`End of Data` 下发三个参数:
|
||
- `Refresh Interval`:多久后主动刷新。
|
||
- `Retry Interval`:失败后重试间隔。
|
||
- `Expire Interval`:本地数据最长可保留时长。
|
||
|
||
规范边界(RFC 8210):
|
||
- Refresh: 1 .. 86400(推荐 3600)
|
||
- Retry: 1 .. 7200(推荐 600)
|
||
- Expire: 600 .. 172800(推荐 7200)
|
||
- 且 `Expire` 必须大于 `Refresh` 和 `Retry`。
|
||
|
||
## 11.8 Version 2(草案)新增关注点
|
||
|
||
### 11.8.1 ASPA PDU
|
||
|
||
- 新增 ASPA 传输能力(Type 11)。
|
||
- 针对同一 customer ASN,Cache 需向 Router 提供一致且可替换的 ASPA 视图。
|
||
|
||
### 11.8.2 排序与事务
|
||
|
||
- 草案新增 race 条件说明(如前缀替换、撤销先后导致短暂误判)。
|
||
- 对 Cache 输出 payload 的顺序提出约束。
|
||
- 建议 Router 使用“事务式应用”(例如接收到完整响应后再切换生效)降低中间态影响。
|
||
|
||
## 11.9 传输与安全
|
||
|
||
规范定义可承载于多种传输:
|
||
- SSH
|
||
- TLS
|
||
- TCP MD5
|
||
- TCP-AO
|
||
|
||
安全原则:
|
||
- Router 与 Cache 之间必须建立可信关系。
|
||
- 需要完整性/机密性时优先使用具备认证与加密能力的传输。
|
||
- 若使用普通 TCP,部署上应限制在可信受控网络中。
|
||
|
||
## 11.10 参考文献
|
||
|
||
- RFC 6810: https://www.rfc-editor.org/rfc/rfc6810.html
|
||
- RFC 8210: https://www.rfc-editor.org/rfc/rfc8210.html
|
||
- draft-ietf-sidrops-8210bis-25: https://www.ietf.org/archive/id/draft-ietf-sidrops-8210bis-25.html
|