common

module
v0.0.0-...-6b0caea Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2025 License: MIT

README

eduP2P

An authenticated peer-to-peer network overlay.

Development notes can be found in DEVELOPING.md.

Library usage can be found in toversok/.

A proof-of-concept minimal implementation (wrapping the library) can be found in cmd/dev_client/.

Documentation for the test suite can be found in test_suite/

eduP2P is currently in the proof-of-concept stage, no fully fledged clients exists yet, but there is a working terminal-based development program in cmd/dev_client/, as mentioned above.

Documentation on how to use the PoC (from scratch) can be found here

Design

Toversok - the internal common-component library - provides the core of the overlay network that makes peer-to-peer connections possible.

On a high level;

  • It connects to a control server, to receive peer definitions, keys, assigned IP addresses of those peers, and information about relay servers.
  • On-demand, it connects to one relay server permanently, and will connect to other relay servers on-demand when sending data to their attached peers.
  • It will opportunistically try to establish direct connection to peers, using relays as a fallback.

For an in-depth overview of the design, you can look at ARCHITECTURE.md.

Funding

This project received funding through NGI Assure, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.

NLnet foundation logo NGI Assure Logo

Furthermore, the test suite of the project received funding through NLnet's VPN Fund, which is established in collaboration with The Commons Conservancy. A description of the test suite features made possible thanks to this funding can be found in the test suite documentation.

NLnet foundation logo The Commons Conservancy Logo

Directories

Path Synopsis
cmd
test_suite
Package toversok contains the main types of its peer-to-peer running engine.
Package toversok contains the main types of its peer-to-peer running engine.
actors
Package actors is the "meat and bones" of the toversok engine; it has an actor-message system to facilitate dynamic/resilient configuration with many peers.
Package actors is the "meat and bones" of the toversok engine; it has an actor-message system to facilitate dynamic/resilient configuration with many peers.
actors/peerstate
Package peer_state contains a state machine that tries to drive a direct connection with another peer to establishment.
Package peer_state contains a state machine that tries to drive a direct connection with another peer to establishment.
Package types is a super-package that contains all library code that toversok would need to interact with.
Package types is a super-package that contains all library code that toversok would need to interact with.
control
Package control pertains to all code related to contacting, serving, and talking to control.
Package control pertains to all code related to contacting, serving, and talking to control.
control/controlhttp
Package controlhttp pertains to implementing control interfaces in a HTTP client/dialer and server handler.
Package controlhttp pertains to implementing control interfaces in a HTTP client/dialer and server handler.
dial
Package dial contains an implementation of TCP/HTTP dialing.
Package dial contains an implementation of TCP/HTTP dialing.
ifaces
Package ifaces contains interface definitions commonly shared amongst code in `types`.
Package ifaces contains interface definitions commonly shared amongst code in `types`.
key
Package key contains Session, Node, and Control key definitions, private and public, and associated functions.
Package key contains Session, Node, and Control key definitions, private and public, and associated functions.
msgactor
Package msgactor contains definitions for messages directly sent and received between actors of the toversok stage.
Package msgactor contains definitions for messages directly sent and received between actors of the toversok stage.
msgcontrol
Package msgcontrol contains types, constants, and interfaces related to control messages.
Package msgcontrol contains types, constants, and interfaces related to control messages.
msgsess
Package msgsess contains session message definitions and parsing methods, to be sent over relay or directly.
Package msgsess contains session message definitions and parsing methods, to be sent over relay or directly.
relay
Package relay contains all code necessary to establish a connection with a relay server, create a relay server, and communicate with one.
Package relay contains all code necessary to establish a connection with a relay server, create a relay server, and communicate with one.
relay/relayhttp
Package relayhttp contains an implementation of a relay server in HTTP.
Package relayhttp contains an implementation of a relay server in HTTP.
stage
Package stage contains some miscellaneous types required in both toversok and types/ifaces.
Package stage contains some miscellaneous types required in both toversok and types/ifaces.
stun
Package stun contains all the code pertaining to STUN resolution.
Package stun contains all the code pertaining to STUN resolution.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL