Jingle est un cadre standard utilisé pour les communications d'égal à égal. Il permet d'établir une communication multimédia entre deux périphériques XMPP (Extensible Messaging and Presence Protocol). La négociation entre les deux est effectuée sur un canal XMPP, tandis que le support proprement dit utilise un canal de données distinct et dédié qui utilise le protocole de transport en temps réel (RTP).
L'objectif principal de Jingle est de faciliter la communication à l'aide de la VoIP et de la vidéoconférence. Il a été conçu par Google et la XMPP Standards Foundation. [1] Il n'est pas destiné à remplacer d'autres protocoles tels que le protocole SIP (Session Initiation Protocol) qui permettent une communication vocale plus générale, ni ne prend en charge une gamme complète de fonctions de téléphonie comme le transfert d'appel, les transferts, etc. Cependant, il est conçu pour fonctionner avec SIP afin que les clients XMPP puissent utiliser les réseaux VoIP existants auprès d'un fournisseur international spécialisé en gros VoIP tel que IDT.
D'accord, c'est un bref survol de ce que Jingle est et fait. Si vous êtes toujours avec nous et que vous souhaitez en savoir plus, lisez la suite pour plus de détails sur l'utilisation du cadre.
Comment fonctionne Jingle
Comme nous l'avons vu, Jingle permet à une paire de clients XMPP d'établir, de maintenir et de terminer une session multimédia. Dans ce cas, le multimédia couvre généralement la voix et la vidéo. La négociation entre les deux se fait sur XMPP tandis que le transfert de média se fait en dehors de celui-ci.
Avant d'aller plus loin, nous devons en savoir un peu plus sur XMPP. XMPP est un ensemble de normes open source pour la messagerie instantanée et le chat utilisant la voix et la vidéo. Il a été conçu principalement pour fournir une alternative ouverte et décentralisée aux systèmes de messagerie propriétaires fermés au moment de son introduction.
La clé du succès de XMPP est qu'il dispose d'une infrastructure décentralisée, au même titre que le courrier électronique, de sorte que n'importe qui peut exécuter son propre serveur XMPP et contrôler ses propres communications. XMPP peut également être exécuté en toute sécurité, isolé des réseaux publics, afin de fournir des communications privées. Un certain nombre de technologies peuvent être exécutées à l'aide de XMPP, dont Jingle n'est qu'une.
Lorsque vous souhaitez démarrer une session multimédia, le premier client le «initiateur» envoie une invitation, une «offre de lancement de session» au second. Le deuxième client, le «répondeur», reconnaît cela et demande à l'utilisateur s'il veut continuer - bien que le client puisse être configuré pour accepter automatiquement les demandes d'initiateurs particuliers - dans les deux cas, le répondeur accepte la session de l'initiateur.
En acceptant la session, le répondeur répondra avec une liste des codecs qu'il peut accepter. L'initiateur accepte la réponse et les deux négocieront ensuite le codec à utiliser pour le transport multimédia et commenceront une session multimédia.
À la fin de l'appel, chaque partie peut demander de mettre fin à la session, une fois que l'autre le reconnaît, puis le lien entre les deux est abandonné. Facile.
La gestion de session
Pour que tout cela fonctionne, Jingle doit contrôler le flux de session. Lors de la configuration de la session, l'initiateur doit déterminer laquelle des ressources XMPP disponibles du répondeur est la meilleure pour l'application et quelle méthode de transport peut être utilisée. Il peut également éventuellement spécifier une condition de sécurité qui doit être remplie - telle qu'un lien chiffré - avant que les deux clients ne soient autorisés à échanger des données.
Il y a un certain degré de flexibilité dans les sessions Jingle de sorte qu'une fois qu'une session est active, elle ne doit pas nécessairement rester fixe dans sa configuration. Les sessions actives peuvent être changées pour modifier ou supprimer du contenu - maintenir la voix tout en arrêtant la vidéo par exemple - ou changer le protocole de transport. Jingle peut également envoyer des messages d'information entre clients.
Deux types de transport différents sont disponibles sous Jingle. Datagram a des composants qui échangent des paquets. Ceux-ci peuvent être de n'importe quelle longueur et peuvent être reçus dans n'importe quel ordre. Lors de l'utilisation de Datagram, le transport doit spécifier quels composants sont nécessaires et comment ils seront utilisés.
L'alternative est le transport en continu; cela échange des flux bidirectionnels similaires à la méthode vue dans TCP. Les paquets sur le flux sont reçus dans l'ordre et chacun doit avoir un identifiant de chaîne et une longueur de paquet maximale. Le moyen de transport à utiliser est établi au début de la session.
Protéger Jingle
Comme pour tout service en ligne, la sécurité est une considération importante lors de l'utilisation de Jingle. L'utilisation d'une certaine forme de sécurité de la couche de transport est un bon début et comme nous l'avons vu, vous pouvez subordonner le démarrage d'une session à sa présence.
Jingle peut également être vulnérable aux attaques DDoS bombardant les clients avec trop de demandes et il est important de s'en prémunir en configurant le système pour accepter uniquement les connexions provenant d'entités connues. De même, vous pouvez éviter l'interception et la redirection d'appels en vous assurant que les ID de session correspondent.
[1] https://xmpp.org