2.8 KiB
2.8 KiB
📄 signaling.md — Mesh WebRTC Signaling & ICE Strategy
1. Objectif
Ce document décrit la signalisation WebRTC, la stratégie ICE / STUN / TURN, et les règles d’optimisation des flux pour Mesh.
Objectifs :
- Connexions client ↔ client directes par défaut
- Charge serveur minimale
- Fallback robuste (NAT strict)
- Sécurité et contrôle centralisé
2. Rappels d’architecture
- Control plane : Mesh Server (WebSocket)
- Media/Data plane : WebRTC P2P
- Le serveur ne transporte aucun flux média ou fichier
Client A ── P2P (RTP/DataChannel) ── Client B
│ ▲
└────── WS ─────┘
Mesh Server
3. WebRTC : rôles
- Offerer : initiateur du flux (call/share/file/terminal)
- Answerer : pair cible
- Signaling server : Mesh Server (WS JSON)
4. ICE configuration
STUN (obligatoire)
Utilisé pour la découverte d’IP publiques.
Exemples :
stun:stun.l.google.com:19302stun:stun.mesh.local:3478
TURN (fallback)
Utilisé uniquement si le P2P direct échoue.
- Recommandé : coturn
- Transport : UDP en priorité, TCP en fallback
turn:turn.mesh.local:3478?transport=udp
turn:turn.mesh.local:3478?transport=tcp
Authentification :
- Credentials temporaires (REST API TURN)
- TTL court
5. Politique ICE Mesh
Priorité des candidats :
- host
- srflx (STUN)
- relay (TURN)
Règles :
- Ne jamais forcer TURN
- Logguer si relay utilisé (diagnostic)
6. Séquence de signalisation (exemple : partage écran)
- Client A → Server :
screen.share.request - Server : vérifie droits + émet capability token
- Server → Client B :
screen.share.granted - A ↔ Server ↔ B : échange SDP (offer/answer)
- A ↔ Server ↔ B : ICE candidates
- A ↔ B : flux P2P direct
7. DataChannel (fichiers, terminal)
Paramètres recommandés
- ordered: true
- maxPacketLifeTime: null
- maxRetransmits: null
Sous-canaux logiques
file-transferfolder-syncterminal-streamterminal-input
8. Optimisations performance
- Chunking (64–256 KB)
- Backpressure (bufferedAmount)
- Pause/reprise
- Hash par chunk
9. Fallback HTTP (exceptionnel)
Si WebRTC impossible :
- Upload temporaire serveur
- URL signée + expiration
- Nettoyage automatique
10. Sécurité
- DTLS / SRTP natif WebRTC
- Capability token requis avant offer
- Vérification fingerprint SDP
- TTL court TURN
11. Diagnostics
Expose localement :
- mode ICE utilisé (host/srflx/relay)
- latence RTT
- débit moyen
- pertes
12. TODO
- ICE restarts
- QUIC (WebTransport)
- TCP-over-DataChannel
- Priorisation flux (media > data)
13. Changelog
0.1.0 – Base signaling + ICE
0.2.0 – DataChannel optimisation