Skip to content

Proposal: Native SCION Transport & Multipath Support #3458

@martenwallewein

Description

@martenwallewein

Hi everyone,

We have developed a native transport for SCION (a path-aware, next-gen Internet architecture) in go-libp2p. We want to align with the core team before opening a PR, as our implementation introduces some unique multipath behaviors.

1. SCION Addressing (Multiaddr)

To enable dialing and listening on SCION, we have defined a new multiaddr format that encapsulates the SCION ISD-AS (Isolation Domain - Autonomous System) identifier.

Format: /scion/<ISD-AS>/<Host-Multiaddr>

Example:
For a node in ISD 19, AS ffaa:1:f, wrapping a standard UDP/IP endpoint:

/scion/19-ffaa:1:f/ip4/10.0.0.1/udp/123

Status:

  • We have registered the codec in multicodec PR #325.
  • We have submitted a PR to implement this in go-multiaddr: multiformats/go-multiaddr#285.
  • Note: The merge of the go-multiaddr PR is currently a blocker for opening our PR against go-libp2p, as the transport relies on validation logic within that library.

2. Multipath Transport (QUIC)
To leverage SCION's multipath capabilities, our transport differs from standard QUIC:

  • Path Pinning: Instead of migrating a single connection, we establish distinct QUIC connections for each available SCION path.
  • Pooling: These connections are pooled to allow upper layers (like Bitswap) to stripe requests across multiple paths simultaneously.
  • Current Code: netsys-lab/go-libp2p/feature/scion-quic-transport, needs to be rebased on newest version of go-libp2p

Questions for Maintainers:

  1. Architecture: Do you see any issues with our "connection pooling" approach (multiple physical connections per logical peer) fitting into the current Transport interfaces?
  2. Dependencies: Since we rely on the unmerged go-multiaddr PR, what is the preferred workflow for proposing the transport implementation here?
  3. External Components: Any concerns regarding a transport that relies on communication with a local daemon (the SCION dispatcher)?

Thanks!

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