94 lines
2.0 KiB
Markdown
94 lines
2.0 KiB
Markdown
# 📄 signaling.md — Mesh WebRTC Signaling & ICE Strategy (v2)
|
||
|
||
## 1. Objectif
|
||
Décrire la **signalisation WebRTC** (média) et la stratégie de connexions pour Mesh.
|
||
|
||
Mesh utilise :
|
||
- **WebRTC** pour audio/vidéo/partage écran entre navigateurs
|
||
- **QUIC P2P** pour transferts data (fichiers/dossiers/terminal) via Agent Rust
|
||
|
||
---
|
||
|
||
## 2. Rappels d’architecture
|
||
- **Control plane** : Mesh Server (WS)
|
||
- **Media plane** : WebRTC (clients web)
|
||
- **Data plane** : QUIC (agents Rust)
|
||
|
||
Le serveur ne transporte pas de média.
|
||
|
||
---
|
||
|
||
## 3. WebRTC (média) — ICE
|
||
### STUN (obligatoire)
|
||
Découverte IP publique.
|
||
|
||
### TURN (fallback)
|
||
Relais en cas d’échec P2P direct.
|
||
|
||
Politique candidats :
|
||
1. host
|
||
2. srflx
|
||
3. relay
|
||
|
||
Recommandations :
|
||
- Ne jamais forcer TURN
|
||
- Logguer si relay utilisé
|
||
|
||
---
|
||
|
||
## 4. WebRTC — séquence standard
|
||
1) Client A demande action (call/screen) au serveur
|
||
2) serveur valide ACL + émet `cap_token`
|
||
3) échange SDP/ICE via WS (`rtc.offer/answer/ice`)
|
||
4) flux média direct A↔B
|
||
|
||
---
|
||
|
||
## 5. QUIC P2P (data) — stratégie
|
||
- QUIC = TLS 1.3 natif, multiplexing streams, perf élevée
|
||
- Démarrage : création de session via `p2p.session.request`
|
||
- Le serveur fournit `session_token` + endpoints
|
||
- Les pairs se connectent directement (UDP)
|
||
|
||
### NAT / connectivité
|
||
- QUIC peut nécessiter :
|
||
- UDP sortant autorisé
|
||
- parfois des contraintes NAT/CGNAT
|
||
|
||
Recommandations :
|
||
- privilégier LAN direct
|
||
- sur Internet : documenter ouverture/autorisation UDP
|
||
- fallback HTTP temporaire (exception)
|
||
|
||
---
|
||
|
||
## 6. Optimisations data
|
||
- chunking 64–256 KB
|
||
- backpressure
|
||
- reprise par offset
|
||
- hash par chunk + hash final (blake3 recommandé)
|
||
|
||
---
|
||
|
||
## 7. Sécurité
|
||
- actions gated by capability token TTL court
|
||
- QUIC TLS 1.3
|
||
- terminal : preview-only par défaut, contrôle arbitré via serveur
|
||
|
||
---
|
||
|
||
## 8. Diagnostics
|
||
Exposer :
|
||
- WebRTC : host/srflx/relay
|
||
- QUIC : latence, débit, retries
|
||
- erreurs : sessions refusées, tokens expirés
|
||
|
||
---
|
||
|
||
## 9. Changelog
|
||
```
|
||
0.1.0 – WebRTC signaling + ICE
|
||
0.2.0 – QUIC data-plane sessions (agent Rust)
|
||
```
|
||
|