1.1 KiB

Packet Flow & Allocation Handling

Komponenten

  • UDP Listener (udp_reader_loop): Empfängt STUN/TURN Nachrichten auf bind Adresse.
  • AllocationManager: Verwaltet Relay-Sockets je Client (allocate_for).
  • TLS Listener (tls::serve_tls): Optional, Wrappt dieselbe Logik über TCP/TLS.

Ablauf (UDP)

  1. UdpSocket::recv_from liest Paket, parse_message prüft STUN-Header.
  2. Enthält MESSAGE-INTEGRITY → Username wird aus CredentialStore geladen und verifiziert.
  3. Bei ALLOCATEAllocationManager erstellt Relay-Port, sendet XOR-RELAYED-ADDRESS zurück.
  4. Ohne gültige Credentials → Antwort 401 Unauthorized mit NONCE.

Ablauf (Relay)

  • Für jedes Allocation wird ein Task gespawnt, der Pakete vom Relay-Socket liest und sie zurück zum Client sendet.
  • TODO: Channel-Bindings und PeerData-Handling implementieren.

TODOs

  • Allocation Timeout & Refresh Requests.
  • Permission Handling (CreatePermission).
  • Bandbreitenlimits, Statistik (Prometheus).
  • Shared Secret Mechanismus für Long-Term Credentials (RFC 5389/5766).