Jingle es un marco estándar utilizado para las comunicaciones entre pares. Permite establecer comunicación multimedia entre dos dispositivos de Protocolo de Presencia Extensible y Protocolo de Presencia (XMPP). La negociación entre los dos se lleva a cabo a través de un canal XMPP, mientras que los medios reales usan un canal de datos separado y dedicado que emplea el Protocolo de transporte en tiempo real (RTP).
El objetivo principal de Jingle es facilitar la comunicación mediante VoIP y videoconferencia. Fue diseñado por Google y la Fundación de Estándares XMPP. [1] No está destinado a reemplazar otros protocolos como SIP (Protocolo de inicio de sesión) que permiten una comunicación de voz más general, ni admite una gama completa de funciones de telefonía como el reenvío de llamadas, transferencias, etc. Sin embargo, está diseñado para funcionar junto con SIP para que los clientes XMPP puedan usar las redes VoIP existentes de un proveedor mayorista internacional especializado en VoIP, como IDT.
Bien, eso es un breve sobrevuelo de lo que Jingle es y hace. Si todavía está con nosotros y desea saber más, siga leyendo para obtener más detalles sobre el uso del marco.
¿Cómo funciona Jingle?
Como hemos visto, Jingle permite que un par de clientes XMPP establezcan, mantengan y finalicen una sesión multimedia. Multimedia en este caso generalmente cubre voz y video. La negociación entre los dos ocurre a través de XMPP mientras que la transferencia de medios ocurre fuera de ella.
Antes de continuar, necesitamos saber un poco sobre XMPP. XMPP es un conjunto de estándares de código abierto para mensajería instantánea y chat con voz y video. Fue diseñado principalmente para proporcionar una alternativa abierta y descentralizada a los sistemas de mensajería cerrados y propietarios en el momento de su introducción.
La clave del éxito de XMPP es que tiene una infraestructura descentralizada, de la misma manera que el correo electrónico, para que cualquiera pueda ejecutar su propio servidor XMPP y controlar sus propias comunicaciones. XMPP también se puede ejecutar de forma segura, aislado de las redes públicas, para proporcionar comunicaciones privadas. Se pueden ejecutar varias tecnologías utilizando XMPP, de las cuales Jingle es solo una.
Cuando desea iniciar una sesión multimedia, el primer cliente, el "iniciador", envía una invitación, una "oferta de inicio de sesión" al segundo. El segundo cliente, el 'respondedor', reconoce esto y le pregunta al usuario si desea continuar, aunque el cliente puede configurarse para aceptar solicitudes de iniciadores particulares automáticamente, en cualquier caso, el respondedor acepta la sesión del iniciador.
Al aceptar la sesión, el respondedor responderá con una lista de los códecs que puede aceptar. El iniciador acepta la respuesta y los dos negociarán qué códec se utilizará para el transporte de medios y comenzarán una sesión de medios.
Al final de la llamada, cualquiera de las partes puede solicitar la finalización de la sesión, una vez que la otra lo reconozca, el enlace entre ambas se desconecta. Sencillo.
gestión de sesiones
Para que todo eso funcione, Jingle tiene que controlar el flujo de la sesión. Al configurar la sesión, el iniciador debe averiguar cuál de los recursos XMPP disponibles del respondedor es mejor para la aplicación y qué método de transporte se puede utilizar. También puede especificar opcionalmente una condición de seguridad que debe cumplirse, como un enlace cifrado, antes de que los dos clientes puedan intercambiar datos.
Existe un cierto grado de flexibilidad en las sesiones de Jingle de modo que una vez que una sesión está activa, no necesariamente tiene que permanecer fija en su configuración. Las sesiones activas se pueden cambiar para modificar o eliminar contenido (por ejemplo, mantener la voz mientras se detiene el video) o cambiar el protocolo de transporte. Jingle también puede enviar mensajes de información entre clientes.
Dos tipos de transporte diferentes están disponibles en Jingle. Datagram tiene componentes que intercambian paquetes. Estos pueden ser de cualquier longitud y pueden recibirse en cualquier orden. Cuando se usa Datagram, el transporte tiene que especificar qué componentes se necesitan y cómo se usarán.
La alternativa es el transporte en streaming; Esto intercambia flujos bidireccionales similares al método visto en TCP. Los paquetes en la secuencia se reciben en orden y cada uno debe tener un identificador de cadena y una longitud máxima de paquete. El transporte que se debe utilizar se establece al comienzo de la sesión.
Jingle de protección
Como con cualquier servicio en línea, la seguridad es una consideración importante cuando se usa Jingle. El uso de alguna forma de seguridad de la capa de transporte es un buen comienzo y, como hemos visto, puede hacer que el inicio de una sesión sea condicional para que esté presente.
Jingle también puede ser vulnerable a los ataques DDoS que bombardean a los clientes con demasiadas solicitudes y es importante protegerse contra esto configurando el sistema para que solo acepte conexiones de entidades conocidas. Del mismo modo, puede evitar la interceptación y la redirección de llamadas asegurándose de que las ID de sesión coincidan.
[1] https://xmpp.org