Aller au contenu

Architecture et flux de données

Drovio repose sur WebRTC pour offrir une expérience rapide et à faible latence, avec les meilleurs encodages audio et vidéo du moment, AV1, VP9 et VP8, tout en conservant une architecture pair à pair hautement sécurisée et soucieuse de la confidentialité.

Vue d'ensemble

Drovio se compose d'un logiciel serveur, Drovio Server, disponible en édition Entreprise uniquement, et d'un logiciel client, l'application Drovio. La solution fournit également un client web, qui permet de rejoindre n'importe quelle session de partage d'écran ou n'importe quel appel sans rien télécharger, installer ni souscrire.

Le parcours interactif ci-dessous suit une session de l'authentification jusqu'aux flux, et indique les protocoles et les ports mis en jeu à chaque étape.

Flux de connexion

Drovio ServerAuthentification · signalisationSTUN / TURNServeurs relaisHôteApplication DrovioInvitéApplication Drovio / web

HTTPS · TLS 1.2 / 1.3 · 443

L'authentification sur Drovio se fait en HTTPS, TLS 1.2 ou 1.3. Des connexions WebSocket sont ensuite ouvertes entre Drovio Server et les clients pour porter l'ensemble de la signalisation.

En édition Entreprise, les protocoles et les suites de chiffrement activés se règlent avec http.tls_protocols et http.tls_cipher_suites.

Drovio ServerAuthentification · signalisationSTUN / TURNServeurs relaisHôteApplication DrovioInvitéApplication Drovio / web

WebSocket (WSS) · 443

La signalisation, au sens de WebRTC, désigne l'échange des capacités de diffusion, les codecs audio et vidéo, et des capacités réseau entre les extrémités, c'est-à-dire les clients. Les SDP et les candidats ICE circulent entre l'hôte et l'invité par l'intermédiaire de Drovio Server, sur WebSocket.

Le SDP, Session Description Protocol, sert à énumérer les flux pris en charge. En parallèle, les candidats ICE disponibles sont collectés sur chaque extrémité, chacun désignant une adresse IP, un port et une couche de transport possibles. Ils sont échangés et forment des paires de candidats. Plusieurs paires sont retenues mais une seule est sélectionnée pour porter la communication pair à pair, sauf en cas de réinitialisation ICE, qui impose de renégocier la connexion et d'en sélectionner une autre. Drovio s'en charge de façon transparente.

Drovio ServerAuthentification · signalisationSTUN / TURNServeurs relaisHôteApplication DrovioInvitéApplication Drovio / web

STUN · UDP 443

Pendant la signalisation, les clients peuvent s'appuyer sur un serveur STUN, Session Traversal Utilities for NAT, pour traverser un NAT. Leur seule raison d'être est de répondre à la question « quelle est mon adresse IP publique ? ».

Drovio ServerAuthentification · signalisationSTUN / TURNServeurs relaisHôteApplication DrovioInvitéApplication Drovio / web

DTLS-SRTP / SCTP · UDP 1024-65535

Les connexions pair à pair s'établissent ensuite directement entre les clients. Un flux vidéo en direct de l'écran ou de l'application de l'hôte est envoyé aux invités, accompagné le cas échéant d'un flux audio, microphone ou son du système. Les invités peuvent eux aussi partager leur microphone et envoyer des actions de souris et de clavier, que l'hôte peut retirer à tout moment, voir Accès et contrôle des sessions. Drovio Server n'intervient pas pendant la session de partage d'écran, sinon pour collecter quelques statistiques destinées à améliorer l'expérience, voir Statistiques.

Drovio ServerAuthentification · signalisationSTUN / TURNServeurs relaisHôteApplication DrovioInvitéApplication Drovio / web

TURN · UDP/TCP 443 · UDP 49152-65535

Lorsque les pare-feux ou les règles de NAT sont trop restrictifs, les connexions directes ne peuvent pas s'établir entre les clients. Des serveurs relais, TURN pour Traversal Using Relays around NAT, servent alors à transmettre les paquets d'un client à l'autre. La communication reste chiffrée de bout en bout : un relais transmet des paquets qu'il ne peut pas déchiffrer, les clés étant négociées entre les seules extrémités.

En édition Cloud, les serveurs STUN et TURN sont hébergés sur AWS et déployés dans le monde entier. Ils portent environ 15 % des sessions de partage d'écran, et c'est le serveur géographiquement le plus proche de l'utilisateur qui est employé le cas échéant. En édition Entreprise, ces serveurs sont facultatifs : nous pouvons vous aider à déployer les vôtres lorsque le partage d'écran doit passer par Internet, voir Serveur relais (TURN).

Un relais n'est pas un proxy ouvert. Obtenir une allocation exige des identifiants à durée limitée dérivés d'un secret partagé, les allocations expirent au bout de quelques minutes, et le relais refuse les destinations de bouclage et de multicast, si bien qu'il ne peut pas être retourné contre des réseaux internes. TLS 1.0 et 1.1 y sont désactivés, sa liste de suites de chiffrement est restreinte aux suites ECDHE modernes, et il n'annonce pas sa version logicielle.

Récapitulatif des protocoles et des ports

Étape Protocole(s) Port(s)
Authentification HTTPS (TLS 1.2 / 1.3) TCP 443
Signalisation HTTPS et WebSocket (WSS) TCP 443
STUN UDP 443
Partage d'écran (pair à pair) DTLS-SRTP, DTLS-SCTP UDP 1024-65535, en sortie et en retour
TURN (relais) UDP / TCP pour joindre le relais, puis UDP pour les flux relayés 443, puis 49152-65535

À propos de la plage pair à pair. 1024-65535 n'est pas une liste de ports à ouvrir sur un serveur. Ce sont les ports média de WebRTC : à chaque session, chaque extrémité choisit un port éphémère qui lui est propre et l'annonce comme candidat ICE. Ce qu'un pare-feu doit autoriser, c'est l'UDP sortant et son trafic retour, pas un port fixe. Là où ce n'est pas possible, la session bascule sur TURN et tout passe par le port 443.

À propos des ports du relais. 49152-65535 est la plage d'allocation du serveur relais lui-même, pas celle des clients. En édition Cloud, nos relais n'écoutent que sur le 443, en UDP comme en TCP, ce qui franchit la plupart des pare-feux d'entreprise. En édition Entreprise, vous choisissez les ports : le guide Serveur relais (TURN) suggère le 80 et le 443 pour la même raison.