Du fait du confinement suite au COVID19, les solutions de visioconférence sont devenus les outils privilégiés pour à la fois maintenir le lien social mais aussi maintenir une activité pour les entreprises. Ainsi, les réunions d’équipes, les entretiens d’embauche ou encore les rendez-vous clients peuvent perdurer. De nombreuses solutions sont disponibles sur le marché. La plus célèbre est Zoom. Néanmoins cette dernière montre de sérieux problèmes de sécurité. VeryFrog vous propose alors de construire votre plateforme de visioconférence grâce à Jitsi.

Jitsi : une plateforme de visioconférence pour votre entreprise

Jitsi : un outil de visioconférence libre et open source

Jitisi est une solution de visioconférence qui tire son épingle du jeu parmi les offres disponibles. En effet, Jitsi est avant tout un outil Open Source. Son code est ouvert et donc auditable par les services de sécurité. L’ANSSI l’a, à cet égard, validé pour l’usage dans l’Administration Publique. Aussi, faire un tel choix évite de subir un « verrou de vendeur » (vendor lock-in) qui lierait la plateforme à la destinée d’une entreprise commerciale. Enfin, la solution est gratuite ce qui limite grandement l’investissement financier.

Jitsi est également au cœur de nombreuses solutions propriétaires et payantes. Citons Comcast, Temasys ou encore Ippi. Il est également utilisé par des organismes conséquents comme Greenpeace, l’Université de Strasbourg et Rocket.Chat. On est donc en présence d’une technologie reconnue et éprouvée.

Enfin, Jitsi offre un panel de fonctionnalités qui rivalise avec ses pendants commerciaux. Citons parmi celles-ci:

  1. Chiffrement de bout en bout
  2. Partage d’écran ou de fenêtre
  3. Authentifications multiples (Basique, LDAP, …)
  4. Discussions intégrées (chat)
  5. Travail collaboratif grâce à Etherpad
  6. Applications Multi-plateformes (Web, Windows, Mac, Android, IOS, Linux)

Installation de Jitsi

Nous n’allons pas détailler grandement l’installation de Jitsi. En effet, la documentation officielle est plutôt bien faite. Retenez simplement que la composante “serveur” de Jitsi s’installe et s’exécute sur un système Linux, de préférence Ubuntu ou Debian. Des packages clés en main sont d’ailleurs disponibles, ce qui fait que Jitsi s’installe en une ligne de commande. De même pour le logiciel “client”, des versions packagées sont disponibles pour tous les systèmes d’exploitation supportés.

Une attention toute particulière doit cependant être portée sur le matériel sous jacent. Jitsi va nécessiter de la ressource CPU pour router les flux vidéos entre les participants. On va donc orienter notre choix matériel vers des serveurs dédiés, avec des processeurs “serveurs” type Intel Xeon avec un minimum de 4 cœurs. On peut envisager d’utiliser des serveurs virtuels, mais il faudra s’assurer de ne pas faire d’overcommitting CPU afin de dédier pleinement du temps processeur à Jitsi.

Une étude de performance a montré qu’une machine dédiée possédant un processeur Intel Xeon® E5-1620 v2 @ 3.70GHz (4 coeur) pouvait supporter plus de 1000 flux concurrents et qu’en fait la limitation venait plus de la bande passante réseau disponible que du processeur.

Le vrai défi: la mise à l’échelle

Jitsi est donc déjà performant sur en mode mono-serveur. Mais la bande passante peut vite devenir un souci majeur. Heureusement, Jitsi fournit un mécanisme de mise à l’échelle horizontale (scaling out) afin de solutionner facilement cette problématique. Pour mieux comprendre, regardons un peu sous le capot.

Jitsi fonctionne au travers de 4 composantes :

  1. Jitsi-Meet : Ce composant est la partie interface graphique de la solution. C’est elle qui fournit le code exécuté par le navigateur permettant l’interaction entre l’utilisateur, son matériel (caméra, microphone) et la plateforme. Il s’agit simplement de code Javascript, à publier via un serveur Web, classiquement Nginx ou Apache.
  2. Prosody : Prosody est le serveur XMPP de la solution. C’est lui qui est en charge de distribuer les données de manière décentralisée entre tous les utilisateurs de Jitsi.
  3. Jicofo: Ce dernier est le gestionnaire de conférence de Jitsi. Il est en charge d’allouer les différentes salles de conférences et d’en assurer l’authentification le cas échéant.
  4. Videobridge: Videobridge est le composant exécutant les flux vidéos entre les participants. Il utilise UDP comme couche de transport des flux afin d’optimiser la latence. Il s’agit du composant exigeant le plus de ressource au sein de Jitsi.

Ces 4 composants s’articulent selon la figure suivante:

Jitsi sous le capot La partie gourmande est le VideoBridge : il nécessite à la fois du processeur et de la bande passante pour distribuer les flux vidéos. Jitsi possède alors un mécanisme pour rattacher plusieurs VideoBridge à un même serveur Prosody. De ce fait, en augmentant le nombre de VideoBridge, on augmente la puissance de calcul ainsi que la bande passante de l’ensemble . Et ainsi, la plateforme peut supporter un nombre toujours croissant d’utilisateurs. La figure suivante illustre ce mécanisme de mise à l’échelle horizontale:

Jitsi mise à l’échelle

Aller encore plus loin: Mise à l’échelle géographique et haute disponibilité de Jitsi

L’architecture précédente, avec ses multiples VideoBridge, est appelée un “shard“. Ce dernier peut alors être lui-même vu comme une entité indépendante à part entière, qu’on peut répartir géographiquement pour distribuer la charge. Grâce à un répartiteur comme HAProxy ou Nginx, on peut facilement distribuer les requêtes entre différents shards géographiques. On peut aisément en ajouter également. On a donc là encore une mise à l’échelle géographique horizontale.

Cependant, comment s’assurer que tous les acteurs d’une conférence se retrouvent sur le même shard ? En fait, Jitsi utilise une URL de connexion aux salles de conférence du type: https:///http-bind?room=. Il suffit donc simplement de mettre en place une politique de loadbalancing entre les shards sur le paramètre “room” des URLs pour garantir qu’un conférence ait toujours lieu sur le même shard.

Enfin, puisque les shards sont des entités indépendantes, sans état, la haute disponibilité se met en place sans effort. Il suffit là encore, grâce au répartiteur, de re-router les requêtes destinées à un shard défaillant vers un autre. C’est extrêmement simple et ne nécessite aucune modification dans Jitisi.

On le voit, Jitsi est une solution parfaitement adaptée pour créer votre propre plateforme de visioconférence. Il faudra cependant bien veiller à dimensionner les serveurs sous-jacents et de mettre en place une stratégie de mise à l’échelle pour garantir une bonne qualité de service à vos utilisateurs. N’hésitez pas à nous contacter si vous souhaitez vous aussi disposer de votre propre plateforme Jitsi.