Payload Replay Scripts
本目录提供基于本地 payload archive 的手工 replay 入口。
multi_rir_case_info.py
用于从 multi-RIR bundle 中解析指定 rir 的输入路径、对照 CSV、fixture、以及 Routinator replay timing 基线。
示例:
python3 scripts/payload_replay/multi_rir_case_info.py \
--bundle-root ../../rpki/target/live/20260316-112341-multi-final3 \
--rir afrinic
也支持输出 shell 环境变量:
python3 scripts/payload_replay/multi_rir_case_info.py \
--bundle-root ../../rpki/target/live/20260316-112341-multi-final3 \
--rir afrinic \
--format env
run_multi_rir_replay_case.sh
统一的 multi-RIR 入口。给定 rir 和模式后,它会自动选择该 RIR 的:
- snapshot/base replay 输入
- delta replay 输入
- 对照 CSV
- TAL / TA fixture
- trust anchor 名称
用法:
./scripts/payload_replay/run_multi_rir_replay_case.sh <rir> [describe|snapshot|delta|both]
示例:
./scripts/payload_replay/run_multi_rir_replay_case.sh afrinic describe
./scripts/payload_replay/run_multi_rir_replay_case.sh lacnic snapshot
./scripts/payload_replay/run_multi_rir_replay_case.sh arin delta
./scripts/payload_replay/run_multi_rir_replay_case.sh ripe both
脚本会自动:
- 从 multi-RIR bundle 中选择指定 RIR 的 snapshot/base 与 delta 输入
- 读取该 RIR 的 Routinator
base-replay/delta-replaytiming 基线 - 使用该 RIR
timings/base-replay.json与timings/delta-replay.json的startedAt作为 replay--validation-time - 在
target/live/multi_rir_replay_runs/<rir>/下生成:- snapshot replay 产物
- delta replay 产物
- per-RIR 合并 case report(含 correctness + timing compare)
默认 bundle 根目录为:
../../rpki/target/live/20260316-112341-multi-final3
也可以通过 BUNDLE_ROOT 覆盖。
run_apnic_replay.sh
默认使用:
tests/fixtures/tal/apnic-rfc7730-https.taltests/fixtures/ta/apnic-ta.certarget/live/payload_replay/payload-archivetarget/live/payload_replay/locks.json
运行:
./scripts/payload_replay/run_apnic_replay.sh
产物默认输出到:
target/live/payload_replay_runs/
包含:
- replay DB 目录
report.jsonrun.logmeta.jsonsummary.md
环境变量
可覆盖:
TAL_PATHTA_PATHPAYLOAD_REPLAY_ARCHIVEPAYLOAD_REPLAY_LOCKSVALIDATION_TIMEMAX_DEPTHMAX_INSTANCESOUT_DIRRUN_NAMEDB_DIRREPORT_JSONRUN_LOGMETA_JSONSUMMARY_MD
说明
- 该脚本依赖
rpkiCLI 已支持:--payload-replay-archive--payload-replay-locks
- replay 模式必须搭配离线 TAL/TA 输入,不会去访问真实 RRDP / rsync 网络源。
report_to_routinator_csv.py
把 rpki 生成的 report.json 转成 Routinator 风格的 VRP CSV:
python3 scripts/payload_replay/report_to_routinator_csv.py \
--report target/live/payload_replay_runs/<run>_report.json \
--out target/live/payload_replay_runs/<run>_vrps.csv \
--trust-anchor apnic
输出列为:
ASNIP PrefixMax LengthTrust Anchor
compare_with_routinator_record.sh
把 ours 生成的 VRP CSV 与 Routinator 的 record.csv 做对比:
./scripts/payload_replay/compare_with_routinator_record.sh \
target/live/payload_replay_runs/<run>_vrps.csv \
target/live/payload_replay/record.csv
会产出:
- compare summary Markdown
only_in_ours.csvonly_in_record.csv
run_apnic_replay.sh 现有额外产物
脚本现在除了 report/meta/summary,还会额外生成:
vrps.csv- 若
ROUTINATOR_RECORD_CSV存在,则生成:- compare summary
only_in_ours.csvonly_in_record.csv
run_apnic_delta_replay.sh
使用 APNIC delta demo 数据集运行 base + delta replay:
./scripts/payload_replay/run_apnic_delta_replay.sh
默认输入:
target/live/apnic_delta_demo/20260315-170223-autoplay/base-payload-archivetarget/live/apnic_delta_demo/20260315-170223-autoplay/base-locks.jsontarget/live/apnic_delta_demo/20260315-170223-autoplay/payload-delta-archivetarget/live/apnic_delta_demo/20260315-170223-autoplay/locks-delta.jsontests/fixtures/tal/apnic-rfc7730-https.taltests/fixtures/ta/apnic-ta.cer
输出目录默认:target/live/payload_delta_replay_runs/
run_apnic_delta_replay.sh compare outputs
脚本现在在 delta replay 结束后还会额外生成:
vrps.csv- compare summary Markdown
only_in_ours.csvonly_in_record.csv
默认 compare 输入是:
target/live/apnic_delta_demo/20260315-170223-autoplay/record-delta.csv
也可以通过环境变量覆盖:
TRUST_ANCHORROUTINATOR_RECORD_CSVVRPS_CSVCOMPARE_SUMMARY_MDONLY_IN_OURS_CSVONLY_IN_RECORD_CSV
write_multi_rir_case_report.py
把某个 RIR 的 snapshot replay 与 delta replay 的 meta.json、compare summary 以及 Routinator timing 基线合并成一个 per-RIR Markdown/JSON 报告。
该脚本通常由 run_multi_rir_replay_case.sh <rir> both 自动调用。
run_multi_rir_replay_suite.sh
顺序执行 5 个 RIR(或环境变量 RIRS 指定的子集)的 both 模式,并最终生成 multi-RIR 汇总报告。
./scripts/payload_replay/run_multi_rir_replay_suite.sh
可覆盖环境变量:
BUNDLE_ROOTSUITE_OUT_DIRRIRS
最终输出:
<suite_out_dir>/<rir>/<rir>_case_report.md<suite_out_dir>/multi_rir_summary.md<suite_out_dir>/multi_rir_summary.json
write_multi_rir_summary.py
汇总 5 个 RIR 的 per-RIR case report,生成 correctness + timing 总表与几何平均比值。