Jingle is een standaardframework dat wordt gebruikt voor peer-to-peer-communicatie. Hiermee kan multimediacommunicatie tot stand worden gebracht tussen twee Extensible Messaging and Presence Protocol (XMPP)-apparaten. De onderhandelingen tussen de twee worden uitgevoerd via een XMPP-kanaal, terwijl de daadwerkelijke media een afzonderlijk, speciaal datakanaal gebruiken dat gebruik maakt van Real-time Transport Protocol (RTP).
Het belangrijkste doel van Jingle is het faciliteren van communicatie via VoIP en videoconferenties. Het is ontworpen door Google en de XMPP Standards Foundation. [1] Het is niet bedoeld om andere protocollen te vervangen, zoals SIP (Session Initiation Protocol), die meer algemene spraakcommunicatie mogelijk maken, en het ondersteunt ook niet een volledig scala aan telefoniefuncties zoals het doorschakelen van oproepen, doorverbinden enzovoort. Het is echter ontworpen om samen te werken met SIP, zodat XMPP-klanten bestaande VoIP-netwerken kunnen gebruiken van een gespecialiseerde internationale VoIP-wholesaleprovider zoals IDT.
Oké, dat is een kort overzicht van wat Jingle is en doet. Als u nog steeds bij ons bent en meer wilt weten, lees dan verder voor meer informatie over het gebruik van het raamwerk.
Hoe Jingle werkt
Zoals we hebben gezien, staat Jingle een paar XMPP-clients toe een multimediasessie tot stand te brengen, te onderhouden en te beëindigen. Multimedia omvat in dit geval doorgaans spraak en video. De onderhandelingen tussen de twee vinden plaats via XMPP, terwijl de mediaoverdracht daarbuiten plaatsvindt.
Voordat we verder gaan, moeten we iets weten over XMPP. XMPP is een set open source-standaarden voor instant messaging en chatten met spraak en video. Het was voornamelijk ontworpen om een ​​open, gedecentraliseerd alternatief te bieden voor de gesloten, propriëtaire berichtensystemen die er waren ten tijde van de introductie.
De sleutel tot het succes van XMPP is dat het een gedecentraliseerde infrastructuur heeft, net als e-mail, zodat iedereen zijn eigen XMPP-server kan runnen en zijn eigen communicatie kan controleren. XMPP kan ook veilig worden uitgevoerd, geïsoleerd van openbare netwerken, om privécommunicatie mogelijk te maken. Er kunnen een aantal technologieën worden uitgevoerd met behulp van XMPP, waarvan Jingle er slechts één is.
Wanneer u een multimediasessie wilt starten, stuurt de eerste cliënt de 'initiator' een uitnodiging, naar de tweede een 'sessie-initiatieaanbod'. De tweede client, de 'responder', erkent dit en vraagt ​​de gebruiker of hij door wil gaan – hoewel de client kan worden geconfigureerd om verzoeken van bepaalde initiatoren automatisch te accepteren – in beide gevallen accepteert de responder de sessie van de initiator.
Bij het accepteren van de sessie antwoordt de responder met een lijst met codecs die hij kan accepteren. De initiator accepteert het antwoord en de twee zullen vervolgens onderhandelen welke codec moet worden gebruikt voor mediatransport en zullen een mediasessie beginnen.
Aan het einde van het gesprek kan elke partij vragen de sessie te beëindigen. Zodra de ander dit bevestigt, wordt de verbinding tussen de twee verbroken. Eenvoudig.
Session beheer
Om dat allemaal te laten werken, moet Jingle de sessiestroom beheersen. Bij het opzetten van de sessie moet de initiator uitzoeken welke van de beschikbare XMPP-bronnen van de responder het beste is voor de toepassing en welke transportmethode kan worden gebruikt. Optioneel kan het ook een beveiligingsvoorwaarde specificeren waaraan moet worden voldaan – zoals een gecodeerde link – voordat de twee clients gegevens mogen uitwisselen.
Er is een zekere mate van flexibiliteit in Jingle-sessies, zodat een sessie die eenmaal actief is, niet noodzakelijkerwijs vast hoeft te blijven zitten in de configuratie. Actieve sessies kunnen worden gewijzigd om inhoud te wijzigen of te verwijderen – bijvoorbeeld door de stem door te laten terwijl de video wordt gestopt – of door het transportprotocol te wijzigen. Jingle kan ook informatieberichten tussen klanten verzenden.
Onder Jingle zijn twee verschillende transporttypes beschikbaar. Datagram heeft componenten die pakketten uitwisselen. Deze kunnen elke lengte hebben en kunnen in elke volgorde worden ontvangen. Bij het gebruik van Datagram moet het transport specificeren welke componenten nodig zijn en hoe deze zullen worden gebruikt.
Het alternatief is streaming transport; dit wisselt bidirectionele stromen uit, vergelijkbaar met de methode die wordt gezien in TCP. Pakketten op de stream worden op volgorde ontvangen en elk pakket moet een string-ID en een maximale pakketlengte hebben. Welk vervoer gebruikt moet worden, wordt bij aanvang van de sessie vastgelegd.
Jingle beschermen
Zoals bij elke online dienst is veiligheid een belangrijke overweging bij het gebruik van Jingle. Het gebruik van een of andere vorm van transportlaagbeveiliging is een goed begin en zoals we hebben gezien, kun je het starten van een sessie afhankelijk maken van de aanwezigheid ervan.
Jingle kan ook kwetsbaar zijn voor DDoS-aanvallen die klanten bombarderen met te veel verzoeken. Het is belangrijk om hiertegen te waken door het systeem zo te configureren dat het alleen verbindingen van bekende entiteiten accepteert. Op dezelfde manier kunt u het onderscheppen en doorsturen van oproepen voorkomen door ervoor te zorgen dat de sessie-ID's overeenkomen.
[1] https://xmpp.org