Vous êtes sur la page 1sur 24

Université Cheikh Anta Diop

de Dakar
Faculté des Sciences et Techniques
Département Mathématiques et Informatique
Section : Informatique
Master 2 en Réseaux Télécommunications

MISE EN PLACE D’UN SERVICE


VISIOCONFÉRENCE BASÉ SUR LA
TECHNOLOGIE WEBRTC (SPREED.ME)

Présentation Professeur

Adama Gaye Pr Bassirou Kassé

Mohamed El Hacen Haye


Introduction
La visioconférence ou est un moyen de communication de plus en plus utilisé par
les entreprises aujourd’hui. De par son aspect pratique, la visioconférence
intéresse les entreprises souhaitant communiquer à distance avec d’autres
entreprises ou personnes en évitant de se déplacer.
La visioconférence permet donc d’organiser des réunions de travail, des
conférences, formations ou autres réunions à distance tout en donnant
l’impression d’être tous présents dans la même salle.
On nomme visioconférence la combinaison de deux techniques :
 La visiophonie ou vidéo téléphonie, permettant de voir et dialoguer avec
son interlocuteur.
 La conférence multipoints ou conférence à plusieurs, permettant d'effectuer
une réunion avec plus de deux terminaux.
C’est quoi WebRTC

WebRTC est une interface de programmation (API) JavaScript développée au


sein du W3C et de l’IETF, le but étant de permettre une communication entre en
temps réel, le partage de fichiers, le partage d’écran avec plusieurs utilisateurs de
la plateforme en s’affranchissant des plugins propriétaires jusqu’à lors nécessaires
et en proposant un service simple d’accès et sans installation complémentaire.

Un peu d’histoire sur WebRTC


Les échanges directs entre navigateurs ne sont pas une nouveauté introduite par
le W3C et l'IETF mais les recherches et implémentations précédentes n'étaient pas
standard à cause de l'utilisation d'appliquettes propriétaires telles qu'Adobe
Flash ou Microsoft ActiveX et souvent mal documentées. Ces protocoles
et plugins furent à la source de difficultés d'interopérabilité et de mise à jour pour
les sites utilisant ces systèmes. Ces implémentations reposaient sur
des plugins propriétaires et étaient donc dépourvues de standards.

WebRTC est une technologie permettant les communications directes sans passer
par un serveur web et en temps réel entre plusieurs navigateurs soutenue par
Google, Mozilla et Opera au sein des standards du World Wide Web
Consortium (W3C).

 Mai 2011: WebRTC est annoncé


 Novembre 2011: Chrome 23 l’intègre
 Janvier 2013 : Firefox 20 l’intègre
 Février 2013 : Interopérabilité
Architecture et Fonctionnement de
WebRTC :
L'architecture de l'API WebRTC repose sur une construction triangulaire
impliquant un serveur et deux pairs. Le WebRTC se compose donc de 3 APIs
permettant de faire tout ça :

 GetUserMedia : Permet l’accès à la Webcam et au micro.


 PeerConnection : Permet d’envoyer et recevoir des flux multimédias.
 DataChannels : Permet d’envoyer des fichiers qui ne sont pas des médias
entre les navigateurs.

WebRTC Core Architecture


GetUserMedia : est une représentation abstraite d’un flux de données réelles
audio ou vidéo. Il permet la prise en charge des actions sur le flux média telles
que l'affichage, l'enregistrement et l'envoi à un pair distant. Un MediaStream peut
être étendu pour représenter un flux à distance : C’est-à-dire un flux local
provenant d’un nœud distant. Un MediaStream local doit demander l'accès aux
ressources multimédias de l'utilisateur via la fonction getUserMedia().
L'application spécifie le type de média (audio ou vidéo) auquel elle souhaite
accéder et le navigateur autorise ou refuse l'accès à la ressource demandée. Une
fois que le média n'est plus utilisé, l'application peut révoquer son propre accès
avec la méthode stop() sur le flux média local. Les flux médias sont transportés
par le biais du protocole RTP. La confidentialité, l'authentification des messages
et la protection contre les répétitions sont apportées par l'utilisation sécurisée de
RTP, SRTP.

PeerConnection : est l'API WebRTC qui gère la communication stable et


efficace des données de diffusion entre pairs. Il est nécessaire de s'appuyer sur un
canal de communication établi par un serveur web et utilisant une WebSocket.
WebRTC s’appuie sur le serveur web pour le succès des étapes suivantes :
 Les pairs de la communication échangent les informations de leurs réseaux.
 Les pairs échangent des données sur des supports tels que le format vidéo
et résolution.

Cette étape est permise par l'API via le protocole SDP. Lors de l'établissement
d'une session, un pair crée une requête qui décrit ce qu'il désire faire et l'autre
répond en spécifiant les options qui ont été sélectionnées.

Afin d'assurer la continuité de la connexion en cas de conversion d'adresse par


NAT et éviter le blocage par les pare-feux (notamment en entreprise),
l'objet PeerConnection utilise les protocoles ICE, TURN, STUN … Cela impose
la question suivante : Comment se fait la signalisation sur WebRTC ?
Signalisation WebRTC : Cas Normale

La signalisation se fait à l’aide du serveur web. La couche de transport est définie


par votre WebSockets. Elle n'est pas cryptée ou sécurisée par défaut.

Signalisation WebRTC : Cas particulier

Il y a plusieurs raisons pour qu’une connexion directe entre un pair A et un pair B


ne fonctionne pas. On doit contourner les pare-feux qui pourraient empêcher la
connexion de s’ouvrir, on doit vous attribuer une adresse unique si votre appareil
n'a pas une adresse IP publique comme la plupart du temps et transmettre des
données via un serveur si votre routeur ne permet pas de vous connecter
directement avec des pairs.

D’où la nécessité du ICE (Interactive Connectivity Establishment). ICE est un


cadre qui permet à votre navigateur web de se connecter avec des pairs. ICE utilise
certaines des techniques suivantes décrites ci-dessous pour y parvenir :
 STUN : Session Traversal Utilities for NAT (acronyme dans un
acronyme) est un protocole qui permet de découvrir votre adresse publique
et de déterminer toute restriction dans votre routeur qui empêcherait une
connexion directe avec un pair. Le client enverra une demande à un serveur
STUN sur internet qui répondra avec l'adresse du client public et informera
si le client est accessible derrière un routeur NAT.

Certains routeurs utilisant NAT emploient une restriction appelée ‘Symmetric


NAT’. Cela signifie que le routeur n'accepte que les connexions de pairs
auxquelles vous vous êtes déjà connecté. D’où la nécessité du TURN.

 TURN : Traversal Using Relays around NAT Doit contourner la


restriction de NAT Symétrique en ouvrant une connexion avec un serveur
TURN et retransmettre toutes les informations par le biais de ce serveur.
Vous devrez créer une connexion avec un serveur TURN et dire à tous les
pairs d'envoyer des paquets au serveur qui vous seront alors expédiés. Cela
vient évidemment avec une certaine surcharge et n'est donc utilisé que s'il
n'y a pas d'autres alternatives.
 SDP : Session Description Protocol est une norme décrivant le contenu
multimédia de la connexion comprenant la résolution, les formats, les
codecs, le cryptage, etc., afin que les deux pairs puissent se comprendre une
fois le transfert des données en cours. Ce n'est pas le média lui-même, mais
plus les métadonnées.

 Canal de Signal : Malheureusement WebRTC ne peut pas créer de


connexions sans une sorte de serveur au milieu. Nous appelons cela le
Canal de Signal (Signal Channel). C'est une sorte de canal de
communication pour échanger des informations avant de configurer une
connexion. L’information que nous avons besoin d'échanger est l'Offre et
la Réponse qui contient juste le SDP mentionné ci-dessus.
Le pair A, qui sera l'initiateur de la connexion, va créer une offre. Il enverra
ensuite cette offre au pair B en utilisant le Canal de Signal choisi. Le pair
B recevra l’offre du Canal de Signal et créera la Réponse. Il renverra ensuite
tout ceci au pair A via le Canal de Signal.

 Candidat ICE : Autant que d'échanger des informations sur les médias, les
pairs doivent échanger des informations sur la connexion réseau. Ceci est
connu comme étant un candidat ICE et détaille les méthodes disponibles
que le pair est en mesure de communiquer (directement ou via un serveur
TURN).

L’échange entier dans un diagramme compliqué :


DataChannels : En plus de l'audio et de la vidéo, WebRTC prend en charge la
communication en temps réel pour d'autres types de données. L'API
RTCDataChannel active l’échange pair à pair de données arbitraires, avec une
faible latence et un haut débit. L'API a plusieurs fonctionnalités pour tirer le
meilleur de RTCPeerConnection et activer une communication pair à pair
puissante et flexible :

 SCTP : Stream Control Transmission Protocol encapsulé dans DTLS


est utilisé pour gérer les données DataChannel.

 L'API DataChannel est bidirectionnelle, ce qui signifie que chaque


DataChannel regroupe un flux SCTP entrant et sortant.

 L’encapsulation "SCTP over DTLS over ICE sur UDP" fournit une
solution NAT traversal avec la confidentialité, l'authentification de la
source et l'intégrité des transferts.

Avantages et Inconvénients de WebRTC


Avantages :

 Open Source
 Déploiement facile et à faible maintenance
 Distribution via URL
 Mise à jour rapide
 Pas de plugins nécessaires
 Disponibilité sur plusieurs appareils
 Communications Pair à Pair

Inconvénients :

 WebRTC permet une communication en temps réel entre les navigateurs


Web. Ce n'est pas un kit de développement de logiciel qui peut être utilisé
dans les applications natives iOS ou Android ou dans le bureau natif
applications.
 Les médias ou les données non chiffrés peuvent être interceptés en cours
de route entre navigateurs, ou entre un navigateur et un serveur.
 Cette nouvelle technologie a une faille de sécurité qui peut exposer votre
adresse IP , et cela même si vous êtes connecté en utilisant un VPN (Voir
capture ci-dessous).
Navigateurs compatibles avec WebRTC
Le WebRTC est l’un des ajouts les plus révolutionnaires aux communications et
technologies web. C’est encore une technologie jeune mais son potentiel est déjà
apparent et ne peut être ignoré. La capacité d’utiliser juste votre navigateur – un
outil que vous utilisez tous les jours pour mener une Web-Conférence totalement
aboutie, sans avoir besoin de démarches aux étapes multiples, ou d’installation,
est certainement quelque chose dont il faut tenir compte.

Le WebRTC est actuellement supporté par :


Internet Explorer de Microsoft et Safari d’Apple doivent encore ajouter le support
pour le WebRTC.

En ce moment, le support pour ces navigateurs vient sous la forme de plugins


tiers, ce qui n’est pas une solution idéale. La beauté du WeRTC est que lorsque
vous êtes invités à un web meeting, aucune autre action n’est nécessaire à part
celle de cliquer sur un lien qu’on vous a fourni. Installer encore un autre plugin
pourrait être considéré comme “en demander trop” pour de nombreux utilisateurs.
Microsoft et Apple ne peuvent ignorer l’élan que prend le WebRTC. Il sera
intéressant de voir qui sera le premier à l’adopter.

Différentes solutions WebRTC et le choix de


Spreedme
Depuis peu, le WebRTC révolutionne les connexions entre 3 milliards
d’utilisateurs. Véritable plateforme universelle, il constitue une réelle opportunité
de ré humaniser la relation client – entreprise et de comprendre les enjeux de la
communication.

Lors d’un récent sommet mondial sur le WebRTC qui a eu lieu à Londres début
2015, il a été révélé que plus de 1,5 milliard de navigateurs étaient compatibles
WebRTC et plus de 600 entreprises investissaient dans cette technologie. Il va de
soi que les entreprises proposant des solutions intégrant le WebRTC afin de gérer
les relations clients fleurissent un peu partout. Ces solutions intègrent
éventuellement du click to call, du click to chat ou du click to vidéo, du partage
d’écran et recueillent les données sous forme de statistiques pour certaines.

Le WebRTC va devenir le cœur de tous les systèmes de communication de


demain. Il existe plusieurs solutions sur les différentes plateformes (Windows,
Mac OS, Linux…) tel que : Jitsi, Trueconf, Wimi, Airtime, Powermedia,
Spreed …
Choix de la solution de Spreed
Présentation de Spreed : Spreed est une solution Open Source développée par
l’entreprise STRUKTUR AG. L’objectif de Spreed, c’est de redéfinir le concept
de conférences, de journées de formation et de réunions d’affaires grâce à une
utilisation extrêmement simple et agréable, ainsi qu’une qualité de son
exceptionnelle.

Spreed n’est pas seulement un chat vidéo, c’est encore bien mieux et ceci à tous
niveaux. Plus puissant, mais surtout incontestablement plus léger.

Avec une diversité de fonctions qui répond parfaitement aux exigences actuelles
des professionnels qui organisent des formations ou des réunions d’affaires, ou
des particuliers qui l’utilisent à titre personnel. Vous pouvez accéder à la
bibliothèque de contenu, au partage de documents, et au partage de fichiers en
pair à pair.
Sécurité de Spreed : Spreed offre une véritable et parfaite confidentialité (PFS)
de la sécurité des données avec AES 256 bits, le cryptage le plus robuste du
marché. Le centre Suisse de fiabilité et de sécurité des données émet des certificats
de sécurité dont la longueur de clé RSA est de 2048 bits, ce qui permet la
protection contre les attaques passives et actives sur la confidentialité, l’intégrité
et l’identité.

Implémentation de Spreed

Ce projet a été réalisé sur une machine virtuelle sous VirtualBox :


 Ubuntu Server 16.04.4 (64 bits)
 Disque Dur 10 Gb et une RAM de 1 Go minimum
 Accès par pont (Bridge) de la carte réseau du système
 Utilisation de Putty pour la connexion à distance
 Connexion Internet pour le téléchargement des paquets

Installation et Configuration
Tout d’abord on a besoin d’installer Docker :

On doit maintenant ajouter le repositiry de Docker dans le fichier


/etc/apt/sources.list :

Et à la fin du fichier on ajoute la ligne suivante :

On importe la clé GPG de Docker :


Et parce que ce repository utilise HTTPS on doit installer les paquets suivants :

On doit lancer un Update du système puis installer le moteur de Docker :

A la fin de l’installation le daemon de Docker doit être en mode running :

Cela doit afficher comme suit :

Vérification de l’installation de Docker :

Cela doit afficher comme suit :


Maintenant on doit créer le répertoire /etc/spreed et telecharger le serveur
spreed :

Maintenant on doit éditer le fichier /etc/spreed/server.conf et commenter la


ligne suivante avec un ‘ ; ’ :

Avant de démarrer le serveur Spreed on a besoin d’installer les paquets suivants,


chacune des lignes suivantes est une commande :

Apres cela on lance la commande suivante :

Puis on doit lancer la commande suivante qui va démarrer le serveur Spreed sur
l’image de notre Docker :
Cela doit afficher comme suit :

L’installation est achevée, vous pouvez maintenant démarrer votre serveur


spreed sous deux manières :

 http://votre _addresse_IP :8080


 https://votre_addresse_IP:8443
Vous devez autorisez l’accès par le navigateur comme le montre la capture ci-
dessous :

Puis autoriser l’accès à la caméra et au microphone comme le montre la capture


ci-dessous :
Maintenant vous pouvez voir l’interface graphique de votre serveur comme le
montre la capture ci-dessous :

On peut maintenant commencer à inviter des personnes à nous rejoindre dans


notre salon.
Pour créer un salon de conférence il suffit juste d’ajouter le nom du salon dans la
case suivante et le salon sera créé :

Pour ajouter des participants au salon de conférence Retel2, il suffit juste de


partager votre URL avec eux et de leur demander d’activer la camera et le
microphone, puis taper le nom du salon dans la case de recherche et ils seront
ajoutes automatiquement comme le montre la capture ci-dessous :
Salon de conférence Retel2 :

Le serveur Spreed nous propose plusieurs services pendant la conférence tel


que :

 Partager une vidéo sur YouTube

 Partager notre écran

 La messagerie instantanée

 Le partage des fichiers

 La localisation des membres de la conférence

 Etc …
La capture ci-dessous montre comment partager un lien d’une vidéo sur
YouTube :

Maintenant les participants à la conférence peuvent visualiser la vidéo partagée


comme le montre la capture ci-dessous :
La capture ci-dessous montre le succès de la fonctionnalité du partage d’écran :

La capture ci-dessous montre comment partager un fichier :


Un fichier peut être partagé entre deux participants à la conférence et peut être
partagé avec tous les membres de la conférence.
La capture ci-dessous montre le partage de fichier entre deux membres de la
conférence dans la messagerie instantanée :
La capture ci-dessous montre le partage de localisation entre deux membres de la
conférence sur messagerie instantané :

On voit que les coordonnées de la longitude et la latitude sont visibles. Et la


localisation sera faite par Google Maps comme le montre la capture ci-dessous :
Conclusion :
En somme, ce projet nous a permis de mettre en pratique les connaissances
acquises en services réseaux. Nous avons pu installer, configurer et tester un
service de vidéoconférence basé sur la solution Spreed.

Cette expérience enrichissante représente pour notre futur professionnel un atout


majeur dont nous ne manquerons pas de nous y référer.

Vous aimerez peut-être aussi