Proposal: Native SCION Transport & Multipath Support
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 6.9k
- Forks
- 1.3k
- Avg merge
- 13d 21h
- Merged PRs (30d)
- 1
Description
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-multiaddrPR is currently a blocker for opening our PR againstgo-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:
- Architecture: Do you see any issues with our "connection pooling" approach (multiple physical connections per logical peer) fitting into the current
Transportinterfaces? - Dependencies: Since we rely on the unmerged
go-multiaddrPR, what is the preferred workflow for proposing the transport implementation here? - External Components: Any concerns regarding a transport that relies on communication with a local daemon (the SCION dispatcher)?
Thanks!
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the go-libp2p Transport interfaces and the netsys-lab/go-libp2p feature/scion-quic-transport branch, then inspect the linked go-multiaddr and multicodec PRs. Determine whether pooled QUIC connections, SCION dispatcher communication, and the dependency workflow fit the project; done requires maintainer agreement on the architecture and integration path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100