Crate ant_quic

Source
Expand description

ant-quic: QUIC transport protocol with advanced NAT traversal for P2P networks

This library provides a clean, modular implementation of QUIC-native NAT traversal using raw public keys for authentication. It is designed to be minimal, focused, and highly testable, with exceptional cross-platform support.

The library is organized into the following main modules:

  • transport: Core QUIC transport functionality
  • nat_traversal: QUIC-native NAT traversal protocol
  • discovery: Platform-specific network interface discovery
  • crypto: Raw public key authentication
  • api: High-level P2P networking API

Re-exports§

pub use quinn_high_level::Accept;
pub use quinn_high_level::Connecting;
pub use quinn_high_level::Connection as HighLevelConnection;
pub use quinn_high_level::Endpoint;
pub use quinn_high_level::RecvStream as HighLevelRecvStream;
pub use quinn_high_level::SendStream as HighLevelSendStream;
pub use crypto::raw_public_keys::key_utils::derive_peer_id_from_key_bytes;
pub use crypto::raw_public_keys::key_utils::derive_peer_id_from_public_key;
pub use crypto::raw_public_keys::key_utils::generate_ed25519_keypair;
pub use crypto::raw_public_keys::key_utils::public_key_from_bytes;
pub use crypto::raw_public_keys::key_utils::public_key_to_bytes;
pub use crypto::raw_public_keys::key_utils::verify_peer_id;
pub use candidate_discovery::CandidateDiscoveryManager;
pub use candidate_discovery::DiscoveryConfig;
pub use candidate_discovery::DiscoveryError;
pub use candidate_discovery::DiscoveryEvent;
pub use candidate_discovery::NetworkInterface;
pub use candidate_discovery::ValidatedCandidate;
pub use connection::Chunk;
pub use connection::Chunks;
pub use connection::ClosedStream;
pub use connection::Connection;
pub use connection::ConnectionError;
pub use connection::ConnectionStats;
pub use connection::Datagrams;
pub use connection::Event;
pub use connection::FinishError;
pub use connection::ReadError;
pub use connection::ReadableError;
pub use connection::RecvStream;
pub use connection::SendDatagramError;
pub use connection::SendStream;
pub use connection::StreamEvent;
pub use connection::Streams;
pub use connection::WriteError;
pub use connection::Written;
pub use endpoint::AcceptError;
pub use endpoint::ConnectError;
pub use endpoint::ConnectionHandle;
pub use endpoint::DatagramEvent;
pub use endpoint::Endpoint as LowLevelEndpoint;
pub use endpoint::Incoming;
pub use nat_traversal_api::BootstrapNode;
pub use nat_traversal_api::CandidateAddress;
pub use nat_traversal_api::EndpointRole;
pub use nat_traversal_api::NatTraversalConfig;
pub use nat_traversal_api::NatTraversalEndpoint;
pub use nat_traversal_api::NatTraversalError;
pub use nat_traversal_api::NatTraversalEvent;
pub use nat_traversal_api::NatTraversalStatistics;
pub use nat_traversal_api::PeerId;
pub use quic_node::NodeStats as QuicNodeStats;
pub use quic_node::QuicNodeConfig;
pub use quic_node::QuicP2PNode;
pub use shared::ConnectionId;
pub use shared::EcnCodepoint;
pub use shared::EndpointEvent;
pub use transport_error::Code as TransportErrorCode;
pub use transport_error::Error as TransportError;
pub use cid_generator::RandomConnectionIdGenerator;
pub use config::AckFrequencyConfig;
pub use config::ClientConfig;
pub use config::EndpointConfig;
pub use config::MtuDiscoveryConfig;
pub use config::ServerConfig;
pub use config::TransportConfig;

Modules§

api
High-Level NAT Traversal API
auth
Authentication module for P2P connections using Ed25519 keys
candidate_discovery
Candidate Discovery System for QUIC NAT Traversal
chat
Chat protocol implementation for QUIC streams
cid_generator
coding
Coding related traits.
config
connection
crypto
Traits and implementations for the QUIC cryptography protocol
discovery
Network Interface Discovery
endpoint
frame
nat_traversal
NAT Traversal Protocol Implementation
nat_traversal_api
High-level NAT Traversal API for Autonomi P2P Networks
optimization
Performance optimization modules for ant-quic
packet
quic_node
QUIC-based P2P node with NAT traversal
quinn_high_level
High-level async API for QUIC
shared
stats_dashboard
Connection Statistics Dashboard
terminal_ui
Terminal UI formatting and display helpers for ant-quic
tracing
Zero-cost tracing system for P2P network debugging
transport
Core QUIC transport layer
transport_error
transport_parameters
QUIC connection transport parameters

Macros§

if_trace
Conditional code block that only compiles with trace feature
trace_candidate_discovered
Trace a NAT traversal candidate discovered
trace_conn_established
Trace a connection established event
trace_event
Primary trace event macro - compiles to nothing when disabled
trace_hole_punching_started
Trace hole punching started
trace_observed_address_received
Trace an observed address received
trace_observed_address_sent
Trace an observed address event
trace_packet_received
Trace a packet received event
trace_packet_sent
Trace a packet sent event
trace_stream_opened
Trace a stream opened event

Structs§

SimpleConnectionEstablishmentManager
Simplified connection establishment manager
SimpleEstablishmentConfig
Simplified configuration
StreamId
Identifier for a stream within a particular connection
Transmit
An outgoing packet
VarInt
An integer less than 2^62
VarIntBoundsExceeded
Error returned when constructing a VarInt from a value >= 2^62

Enums§

CandidateSource
How an address candidate was discovered
CandidateState
Current state of a candidate address
Dir
Whether a stream communicates data in both directions or only from the initiator
NatTraversalRole
Role in NAT traversal coordination
Side
Whether an endpoint was the initiator of a connection
SimpleConnectionEvent
Simplified events

Constants§

DEFAULT_SUPPORTED_VERSIONS
The QUIC protocol version implemented.