Skip to content

RTR 开发规范镜像

本目录保存 rpkiparrot 编写协议、验证和适配器代码时使用的官方资料,供离线阅读和全文检索。镜像日期为 2026-10-02(Asia/Shanghai),收录 35 份 RFC、7 份固定版本的 Internet-Draft、5 份 IANA 注册表文件,以及这些 RFC 的勘误快照。原有资料未因新增历史 profile 而自动刷新。

实现范围与版本以 设计文档 为准。开始协议工作时先查本索引和本地原文;仅在资料缺失、核对上游变化或准备升级规范时联网。收录文档不表示已实现其功能,也不将其中的所有协议要求纳入本库范围。

格式与来源

  • RFC 使用 RFC Editor 发布的 .txt 原文;草案使用 IETF 归档 中带修订号的 .txt 原文。保留原始字节,包括分页符、BOM 和版权说明,便于核对字段图与段落。
  • IANA 使用官方 CSV / XML 原文。注册表是下载时的快照,可能滞后于草案,也可能含本项目不实现的条目。
  • manifest.json 记录每个文件的用途、基线角色、来源 URL、最终 URL、实际下载时间(UTC)、上游 HTTP 元数据、字节数和 SHA-256。SHA256SUMS 供离线完整性检查。
  • errata/selected-rfcs.json 是从官方完整勘误 JSON 按 RFC 编号筛选并重新排版的派生文件,保留选中记录的全部字段;它不是完整勘误数据库。筛选条件和完整上游响应的哈希另记在 manifest 中。

设计固定的基线

实现内容 本地规范 阅读重点
RTR v1 RFC 8210 §5 PDU;§6 定时器;§7 协商;§8 交互;§9 传输;§12 错误
RTR v2,实验性 draft-ietf-sidrops-8210bis-27 §5 PDU,尤其 §5.12 ASPA;§6–8 状态机;§11 顺序与事务;§12 错误
RTR v2,显式历史兼容 draft-ietf-sidrops-8210bis-10 §5.12 的 AFI/count 和撤销 MUST-ignore;§6–8;§11 旧排序建议;§13 错误0–8;不能套用 -27 字段与新错误
RTR v2,无AFI历史兼容 draft-ietf-sidrops-8210bis-13 §5.12 16字节无AFI/count;§13 Error4非致命、错误0–8;NIST-BRIO实际线格式
ROV RFC 6811、RFC 8481 覆盖 VRP、ASN / 长度匹配、验证状态及澄清
ASPA 验证,实验性 draft-ietf-sidrops-aspa-verification-28 输入上下文、provider 查询、路径验证算法与不可判定条件
SLURM,扩展阶段 RFC 8416 VRP / Router Key 过滤、断言、文件组合;该 RFC 不定义 ASPA 策略

这些链接固定到设计已经选定的版本,不使用自动跳转到最新版的草案 URL。

草案 发布日期 文内到期日期 角色
8210bis-27 2026-08-13 2027-02-14 RTR v2 实验性基线
aspa-verification-28 2026-08-24 2027-02-25 ASPA 验证实验性基线
aspa-profile-29 2026-07-29 2027-01-30 上述两个基线草案共同引用的 ASPA 对象与载荷语义
8210bis-10 2022-06-16 2022-12-18 已过期历史草案,显式兼容 StayRTR 0.5.1;不替换默认 -27
aspa-profile-07 2022-01-31 2022-08-04 -10 引用的 AFI 授权语义;不实现签名对象验证,不切换当前路径算法
8210bis-13 2024-07-01 2025-01-02 已过期历史草案;显式匹配NIST-BRIO实际线格式
aspa-profile-18 2024-06-25 2024-12-27 -13引用的双族授权语义;不切换路径验证算法

草案仍是工作文档;归档存在不等于草案仍有效或已经成为 RFC。升级时应保留旧版本用于行为对照,并同步更新设计矩阵、实现报告和测试向量。

按代码任务查阅

代码任务 本地补充资料 适用边界
serial 比较、回绕和边界测试 RFC 1982 与各版本 RTR 的 serial 规则一起阅读
MUST / SHOULD 等要求与错误文本编码 RFC 2119、RFC 8174、RFC 3629 BCP 14 与 UTF-8
ROV、AS0、出口验证上下文 RFC 6483、RFC 7607、RFC 8893 补充基线;库不承担路由器的策略执行
AS_PATH 与 AS4_PATH 输入 RFC 4271、RFC 6793 明确调用方的路径重建责任;不是实现 BGP 会话
Confederation、集合段、畸形 UPDATE RFC 5065、RFC 9774、RFC 7606 与固定 ASPA 草案的输入规则一起阅读
邻居角色和路由泄漏术语 RFC 9234、RFC 7908 标准 ASPA API 所需上下文
BMP 观察上下文 RFC 7854 独立保守分析接口的参考;不增加 BMP 采集功能
Router Key、SKI、SPKI 与算法标识 RFC 5280、RFC 8208、RFC 8608 RFC 8210 引用 8208;v2 草案引用取代 8208 的 8608;不实现 BGPsec 路径验证
TLS 传输与服务身份 RFC 5246、RFC 8446、RFC 6125、RFC 9525、RFC 9325 保留 RTR 引用的版本及后续身份校验 / 安全使用参考;TLS 由标准库和宿主配置提供
SSH 认证和 subsystem RFC 4252、RFC 4254 扩展阶段适配器参考,SSH 协议交给可选依赖
JSON 与 SLURM 输入 RFC 8259 仅规定 JSON 语法;生产者格式与样例见 互操作资料
HTTP JSON 条件更新与缓存 RFC 9110、RFC 9111 重点看 9110 §8.8、§13、§15.4.5 与 9111 §4;HTTP 缓存新鲜度与 RPKI 数据有效期分别处理,304 不延长原始数据有效期
RPKI 与 ROA / VRP 背景 RFC 6480、RFC 9582 解释上游载荷来源;本库不做仓库抓取、证书链和签名对象验证
历史协议对照 RFC 6810 RTR v0 和原始编号;首版不实现 v0

IANA 快照与已知差异

本地文件 官方来源 用途
rpki.xml RPKI 注册表 完整注册信息、引用和更新时间;本次标记更新于 2026-07-28
rpki-rtr-pdu.csv PDU 编号 protocol version / PDU type 对照
rpki-rtr-error.csv 错误码 RTR 错误码快照
service-names-port-numbers.csv 服务名与端口表 完整表中 rpki-rtr 为 TCP 323,rpki-rtr-tls 为 TCP 324
ssh-parameters-15.csv SSH subsystem 表 注册名称 rpki-rtr

实现时需留意本次快照中的以下差异:

  • IANA PDU 表中 v2 条目仍引用 RFC-ietf-sidrops-8210bis-10。该引用用于追踪登记来源,不能替代本项目固定的 8210bis-27 字段格式与行为。
  • IANA 错误表仍将 9–254 标记为未分配;8210bis-27 §12 / §14 定义了错误码 9 ASPA Provider List Error。实验性 v2 按固定草案实现,不能直接用 IANA CSV 生成全部 v2 行为。
  • 8210bis-27 §5.9 的一处文字将 Corrupt Data 写为错误码 1,与同文 §12 / §14 的错误码 0 不一致。镜像保留原文;编写相关处理与测试时应记录这一冲突并核对上游澄清,不默默修订镜像或混入另一草案的语义。

勘误

本次从 RFC Editor 官方勘误 JSON 筛出 191 条记录:69 条 Verified、60 条 Held for Document Update、52 条 Rejected、10 条 Reported。记录涵盖已收录的 RFC,具体筛选编号见 manifest。

勘误没有直接合入 .txt 文件。Verified 是已核实的修正;Reported 尚未完成审查;Held for Document Update 留待文档更新处理;Rejected 不作为修正依据。无匹配记录只表示该次官方导出中没有记录,不保证规范不存在问题。草案不使用 RFC 勘误库,需查其固定原文与后续修订。

例如,RFC 8416 有一条 §3.4.2 的勘误 7080,状态为 Held for Document Update;本次导出中 RFC 6810、6811、8210、8481 均没有记录。

在仓库根目录查询某份 RFC 的完整勘误:

python3 - <<'PY'
import json
from pathlib import Path

records = json.loads(Path('docs/rfc/errata/selected-rfcs.json').read_text())
print(json.dumps([r for r in records if r['doc-id'] == 'RFC8416'],
                 ensure_ascii=False, indent=2))
PY

离线检索与校验

在仓库根目录运行:

rg -n 'Serial Number|Session ID|Expire Interval' docs/rfc/rfc8210.txt
rg -n 'Provider AS|ASPA Provider List Error' docs/rfc/drafts/
rg -n 'rpki-rtr' docs/rfc/iana/
(cd docs/rfc && sha256sum -c SHA256SUMS)

SHA256SUMS 覆盖 manifest 列出的 46 个资料文件;README、manifest 和校验清单自身由 Git 跟踪,不在该清单内。校验保证本地资料与本次下载记录一致,不代表上游尚无更新。资料目录不参与运行时联网、构建下载或自动刷新。

更新方式

  1. 先确定需要补充或升级的规范及确切版本。按 manifest 的官方 URL 下载 RFC / 注册表,草案使用带修订号的归档 URL;新草案使用新文件名,保留用于对照的旧版本。
  2. 下载到临时文件,检查 HTTP 成功状态、文档编号 / 修订号和实际格式,避免把错误页保存成规范。原文不改格式、不插入本地注释;说明写在索引中。
  3. 更新勘误时重新取得官方完整 JSON,按 manifest 中的 RFC 编号筛选,保留全部状态及字段。记录完整源响应的字节数和 SHA-256,再保存筛选结果。
  4. 同步更新 manifest 的来源、时间、用途、字节数和哈希,以及 SHA256SUMS、索引中的日期、数量和已知差异。检查 CSV / XML 的相关条目和本地链接。
  5. 如果改变实现基线,另行审查协议与算法差异,同步修改设计矩阵、实现和测试向量。单纯刷新镜像不自动改变设计基线。

原文权利说明

镜像保留各原文的版权和许可声明。RFC / Internet-Draft 的使用按其原文及所指向的 IETF Trust 条款;IANA 数据按 IANA 许可说明。这些上游资料不因存放在仓库中而改用本项目的软件许可证。