#foctet #mux #stream #framework

foctet-mux

Multiplexer for Foctet, enabling multiple streams over a single connection

1 unstable release

new 0.0.2 May 10, 2025

#661 in Asynchronous

Download history 67/week @ 2025-05-05

67 downloads per month
Used in 2 crates (via foctet-net)

MIT license

105KB
2K SLoC

[WIP] foctet

Foctet is a framework for secure and reliable peer-to-peer (P2P) communication.
Implemented in Rust, Foctet leverages QUIC, TCP (TLS), and multiplexing techniques to deliver exceptional throughput and minimal latency.

Features

  • Multiple Transport Protocols: Supports QUIC and TCP (TLS) for flexible communication.
  • Secure: Authenticated end-to-end encryption using TLS 1.3 for both QUIC and TCP/TLS connections
  • Multiplexing: Efficiently manages multiple streams over a single connection.
  • Reliable: Direct connection or fall back to Relay.
  • NAT Traversal & Relays: Seamless communication across NAT and firewalls using relay servers.

Architecture

Foctet is structured around a modular design:

  • foctet-core: Core data structures and frame handling.
  • foctet-net: Networking and transport layer implementation.
  • foctet-mux: Multiplexing and logical stream management.
  • foctet-relay: Relay server and NAT traversal.
  • foctet-cli: Command-line interface for sending and receiving content.

End-to-End Encryption

Foctet implements end-to-end encryption (E2EE) using TLS 1.3 for both QUIC and TCP/TLS connections.
All communications between peers are secured using rustls, providing robust confidentiality and integrity.

  • Self-Signed Certificates:
    • Each node uses a self-signed certificate to verify its identity.
    • The certificate includes the NodeId, ensuring that the peer's identity is verified.
  • Verifying Node Identity
    • During the TLS handshake, Foctet verifies that the NodeId derived from the certificate matches the intended NodeId.
  • Authentication:
    • Both client and server verify each other's certificate to ensure that the expected NodeId matches the certificate content.

Dependencies

~9–23MB
~370K SLoC