23 lines
1.1 KiB
Markdown

# 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 `ALLOCATE``AllocationManager` 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).