101 lines
4.9 KiB
Markdown
101 lines
4.9 KiB
Markdown
# panda-rpki
|
|
|
|
`panda-rpki` is the staging workspace for the independently distributable RPKI
|
|
synchronization and validation component. The first component is
|
|
`panda-rpki-validator` (Cargo package and CLI); its Rust import path is
|
|
`panda_rpki_validator`.
|
|
|
|
This directory is currently a **private staging repository**. It has no copied
|
|
history from the existing private `rpki` repository. The normal synchronization
|
|
and validation path has now been extracted, together with its daemon and
|
|
Docker lifecycle wrapper. The first M5 canonical snapshot/delta baseline and
|
|
amd64/arm64 staging image checks are complete; remaining profile/performance
|
|
gates still block any public release. Do not use this staging build as a
|
|
production validator.
|
|
|
|
## Current milestone
|
|
|
|
M4/M5 contain the first functional extraction from source commit
|
|
`74cbebbd3334ac0063761c1a97a88ee000cc2a57`: normal RRDP/rsync synchronization,
|
|
RPKI validation, RocksDB state, CIR/CCR/report/CSV outputs, the run daemon, and
|
|
the snapshot/delta lifecycle wrapper. The `verification-only` mode is
|
|
intentionally deferred. The project license is intentionally **TBD**; no
|
|
external contributions or public release are accepted until ownership and
|
|
licensing are approved.
|
|
|
|
## Build and test the staging component
|
|
|
|
```bash
|
|
cargo build --locked -p panda-rpki-validator
|
|
cargo test --locked -p panda-rpki-validator
|
|
cargo fmt --all --check
|
|
cargo clippy --locked -p panda-rpki-validator --all-targets -- -D warnings
|
|
./scripts/docker/build_image.sh --arch amd64 --allow-dirty --no-save
|
|
```
|
|
|
|
The extracted test suite currently passes `735` tests with `1` ignored test in
|
|
the normal profile. The APNIC offline snapshot/delta profile has also passed
|
|
the M5 canonical comparator and a five-run pinned release smoke baseline; the
|
|
full cache/fallback/failure/profile matrix is still pending.
|
|
|
|
For a deterministic single-RIR run against the checked-in test repository,
|
|
build the binaries first and invoke the lifecycle wrapper with
|
|
`RPKI_EXTRA_ARGS=--disable-rrdp --rsync-local-dir ...`; the wrapper writes the
|
|
normal run ABI under `RUN_ROOT/runs/run_0001/`.
|
|
|
|
## Docker smoke
|
|
|
|
```bash
|
|
./scripts/docker/build_image.sh --arch amd64 --allow-dirty
|
|
./scripts/docker/verify_image.sh \
|
|
--image panda-rpki-validator:0.1.0-dirty-amd64
|
|
```
|
|
|
|
The runtime image contains both `panda-rpki-validator` and
|
|
`panda-rpki-validator-daemon`, the complete normal-run wrapper, and the
|
|
redistributable TAL/TA fixtures. It uses one persistent data root mounted at
|
|
`/var/lib/panda-rpki-validator`; `run`, `run-validator`, and `daemon` are
|
|
entrypoint subcommands. The wrapper preserves the output contract documented
|
|
in
|
|
[`docs/output-abi.md`](docs/output-abi.md).
|
|
|
|
For native or container A/B output checks, run the ABI verifier and canonical
|
|
comparator against two retained run directories:
|
|
|
|
```bash
|
|
tests/compat/verify_run_abi.sh /path/to/run_0001
|
|
tests/compat/compare_runs.py \
|
|
/path/to/original/runs/run_0001 \
|
|
/path/to/panda/runs/run_0001
|
|
```
|
|
|
|
The comparator has matched the original runtime for the APNIC offline
|
|
snapshot/delta baseline. Five serial release samples on that small single-RIR
|
|
profile stay within the current wall-time gate under a pinned CPU. A live APNIC
|
|
run also produced an identical decoded CCR state (MFT/VRP/VAP/TA/RK); only the
|
|
time-bearing `producedAt` byte differed in the raw DER. A concurrent all-RIR
|
|
(`all5`) run is retained as network/fallback evidence, but its source was not an
|
|
atomic snapshot (the original image timed out on the ARIN RRDP notification),
|
|
so its different CCR state is not a code-parity verdict. See the detailed
|
|
[`M5 live RIR comparison report`](../specs/develop/20260901/m5_live_rir_image_artifact_comparison_milestone_report.md).
|
|
The follow-up remote-231 serial all5 run (old image first, then this image;
|
|
one snapshot plus three warm deltas per image with cache/prefetch/parallel
|
|
flags) also completed 4/4 runs on each side and retained full artifacts. Its
|
|
live CCR/CIR and timing differences are documented separately and are not a
|
|
frozen-input parity result: [`remote-231 all5 cache/prefetch report`](../specs/develop/20260901_2/m5_live_all5_cache_prefetch_serial_4run_milestone_report.md).
|
|
The new image also completed a separate remote-231 all5 long sequence of one
|
|
snapshot plus ten deltas; the timing and cache counters are retained as live
|
|
health evidence, not as a frozen-input parity gate: [`one snapshot + ten delta
|
|
timing report`](../specs/develop/20260901_2/m5_new_image_all5_snapshot_10delta_timing_report.md).
|
|
Cache, RRDP/fallback, constraints, replay and failure-path profiles remain in
|
|
M5.
|
|
|
|
## Repository status
|
|
|
|
- `verification-only`: deferred to a separate backlog item.
|
|
- License and copyright owner: TBD; do not add a speculative `LICENSE` file.
|
|
- Staging Git remote: `https://git.nasp.fit/yuyr/panda-rpki.git` (private
|
|
staging target selected); public visibility, registry prefix, signing identity,
|
|
and release tags remain unselected until release governance is complete.
|
|
- Source provenance baseline: `provenance/source-baseline.toml`.
|