Skip to content

pan: Roadmap #286

@rolbk

Description

@rolbk

The goal is to eventually merge pan into scionproto/scion. However, the library is not yet production-ready. The following items need to be addressed before it is ready for wider use.

API Redesign

  • Redesign API: State should be shared between connections without being global
    • Possible solution: Client struct encapsulating all shared state
    • Remove global singleton host context (hardcodes SCIOND connection)
    • Remove global pathpool and stats singletons
    • Make path pool configurable (currently no configuration options)
    • Reduce long parameter lists via options pattern or shared client state

Type Cleanup

  • Use original types: Use types from snet and other SCION components instead of redefining it
    • addr.IA
    • maybe pan.Path -> snet path.Path
    • possibly other types

PingingSelector Improvements

  • API: SetActive() must be called at the correct time - refactor to call automatically
  • Replace object-wide mutex with RWLock (currently locks for every packet sent)
  • Fix reliability issues with proper testing
  • Port internal ping package to use SCION CLI ping logic (currently copied from early SCION version)

Policy Improvements

  • Fix "With" pattern: Calling WithPolicy() multiple times only sets the last policy - should build chain policy automatically

Code Organization

  • Restructure into subpackages: Currently ~6000 LOC in 34 files, all in root package
  • Drop RAINS support: Not actively used, adds maintenance burden

Testing

  • Add unit tests: Improve test coverage across the library

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