Skip to content

Add RTR v2 ASPA PDU parsing/encoding #289

Description

@digizeph

It would be useful to add basic RTR v2 ASPA PDU parsing/encoding support.

This is separate from the BGP path-attribute work: ASPA is not a BGP path attribute, it is RPKI/RTR data that can later be used for AS_PATH verification.

Initial scope:

  • add RTR protocol version 2
  • add ASPA PDU type 11
  • parse/encode the ASPA PDU fields:
    • flags
    • AFI flags
    • provider AS count
    • customer ASN
    • provider ASNs
  • add basic round-trip and malformed-length tests

Out of scope for this issue:

  • ASPA AS_PATH verification logic
  • parsing ASPA RPKI/CMS objects directly

Relevant drafts:

Success criteria

The implementation is done when:

  • RtrProtocolVersion supports RTR v2.
  • RtrPduType supports ASPA PDU type 11.
  • There is a public model for ASPA PDUs that exposes at least:
    • protocol version
    • flags
    • AFI flags
    • customer ASN
    • provider ASNs
  • The RTR parser can parse ASPA PDUs from bytes without panicking.
  • The RTR encoder can serialize ASPA PDUs back to bytes.
  • Round-trip tests pass for:
    • ASPA announcement with one provider ASN
    • ASPA announcement with multiple provider ASNs
    • ASPA withdrawal/delete with zero provider ASNs
  • Malformed input tests pass for:
    • PDU length too short
    • provider AS count inconsistent with payload length
    • unsupported RTR version / unsupported PDU handling remains correct
  • Existing RTR v0/v1 tests still pass unchanged.
  • Public docs/comments clearly state that ASPA support is draft-based and does not implement AS_PATH verification.
  • The full test suite passes with:
cargo test --all-features

Optional but nice:

  • Add a small example or doc test showing how to inspect an ASPA PDU.
  • Add changelog entry noting RTR v2 ASPA PDU parsing/encoding support.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions