23 lines
1.1 KiB
Markdown
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).
|