JsSIP: SIP + WebRTC

Preview:

DESCRIPTION

Iñaki Baz + José Luis Millán Xtra Telecom S.L.U VoIP2Day + ElastixWorld

Citation preview

World Wide SIP

Iñaki Baz Castillo – XtraTelecom S.L.U.

José Luis Millán – XtraTelecom S.L.U.

World Wide SIP

WebRTC

Comunicación Multimedia en el Navegador

World Wide SIP

Estado del Arte

➔ Facebook & Skype➔ Google Hangouts

World Wide SIP

Estado del Arte (II)

➔ Instalación➔ Plugins➔ Uso exclusivo en aplicaciones del proveedor

World Wide SIP

WebRTCAplicaciones

➔ Help Desk➔ Venta online➔ Atención de clientes online➔ Asistencia remota➔ Redes sociales

World Wide SIP

World Wide SIP

WebRTCArquitectura

World Wide SIP

WebRTCMedia

➔ Códecs➔ Narrowband audio: G.711➔ Wideband audio: Opus➔ Vídeo: Debate entre VP8 y H.264 AVC

World Wide SIP

WebRTCMedia (II)

➔ SRTP (RTP Seguro)➔ Utiliza criptografía de clave simétrica para ofrecer

confidencialidad e integridad

➔ DTLS➔ Equivalente a TLS sobre TCP➔ ...pero sobre UDP➔ Utilizado para intercambiar las claves utilizadas en

SRTP

World Wide SIP

WebRTCEstablecimiento de Sesión Multimedia

➔ Solicitud de acceso a los dispositivos de media a través del navegador➔ Cámara➔ Micrófono

World Wide SIP

➔ Descubrimiento de dirección/es IP➔ STUN: Descubrimiento de dirección IP

➔ Flujo multimedia directo entre terminaciones➔ ICE: Comprueba la comunicación directa entre

sus direcciones IP y las direcciones IP del nodo remoto

➔ Flujo multimedia a través de servidor público➔ TURN: Relay público de media

WebRTCEstablecimiento de Sesión Multimedia (II)

World Wide SIP

World Wide SIP

WebRTCSeñalización

➔ Modelo Offer-Answer SDP (RFC 3264)➔ Le pido un SDP a mi navegador

➔ Y el stack WebRTC me lo entrega acorde a mi solicitud, mis dispositivos y mis recursos

World Wide SIP

WebRTCSeñalización (II)

➔ ¿Cómo hago llegar la oferta SDP al interlocutor?➔ WebRTC no define el mecanismo de intercambio de

SDP➔ Estamos en un navegador, ¿opciones?

➔ Enviar el SDP en un HTTP POST (con AJAX)➔ El interlocutor hace HTTP long polling al servidor web para consultar

nuevas invitaciones➔ Usar Flash para entregar/recibir el SDP➔ HTTP Comet (conexión TCP “persistente”...)➔ WebSocket (más adelante...)

World Wide SIP

WebRTCEstándares

➔ IETF RTCWeb WG➔ Se encarga de la estandarización de la

comunicación multimedia entre navegadores

➔ W3C WebRTC WG➔ Define un set de APIs ECMAScript para manejar

el stack WebRTC y controlar las sesiones multimedia

World Wide SIP

WebRTCImplementaciones

➔ Mozilla Firefox➔ Google Chrome➔ Safari➔ IE

World Wide SIP

WebSocket

➔ WebSocket (RFC 6455)➔ Transporte orientado a conexión sobre

TCP/TLS➔ Comunicación bidireccional entre navegador

web y servidor web➔ No más “HTTP long polling” o “Comet”

World Wide SIP

WebSocket como Transporte para SIP

➔ Nuevo transporte en la familia de transportes SIP➔ draft-ietf-sipcore-sip-websocket

The WebSocket Protocol as a Transport for SIP

This specification defines a new WebSocket sub-protocol (as defined in section 1.9 in RFC6455) for transporting SIP messages between a WebSocket client and server [...]

World Wide SIP

WebSocket como Transporte para SIP (II)

➔ Creo que lo he entendido...

¿Necesito un gateway para intercambiar mensajes SIP entre mi teléfono y mi navegador?

World Wide SIP

SIP y WebRTC

➔ Alternativa como mecanismo de señalización en WebRTC

➔ Protocolo maduro y ampliamente implementado

➔ Gracias a SIP sobre WebSocket es posible la comunicación SIP entre navegadores así como entre navegadores y dispositivos SIP

World Wide SIP

SIP y WebRTC (II)

➔ ¿Qué nos aporta?

Nos permite utilizar la infraestructura SIP existente para dar cabida a los dispositivos SIP del futuro: Los navegadores Web

World Wide SIP

SIP y WebRTC (III)

➔ ¿Implementan SIP los navegadores?

World Wide SIP

SIP y WebRTC (IV)

➔ Entonces...

¿Cómo puede un navegador utilizar SIP?

World Wide SIP

JsSIP

➔ Librería SIP en JavaScript para aplicaciones web:➔ http://www.jssip.net (próximamente)

World Wide SIP

JsSIP (II)

➔ JsSIP se descarga junto a la página web➔ Análogo a como se hace con jQuery

➔ API para crear clientes SIP (User Agents)➔ Funcionalidades:

➔ Llamadas de audio/vídeo➔ Registro SIP➔ Mensajería SIP➔ Subscripciones (BLF)

World Wide SIP

JsSIP (III)

➔ Maneja el stack WebRTC del navegador a través del API WebRTC:➔ Acceso a dispositivos multimedia➔ Gestión de audio/vídeo

➔ Obtiene el SDP generado por el stack WebRTC y se lo envía al remoto usando SIP

World Wide SIP

JsSIP (IV)

➔ ¿Es un softphone?

World Wide SIP

JsSIPFuncionamiento

➔ Configuración➔ Conexión WS➔ Registro SIP➔ Recepción de mensajes SIP➔ Parseo, transacciones, diálogos, sesiones...➔ Diseño basado en callbacks (eventos)➔ Acciones (iniciar llamada, mensajería...)

World Wide SIP

JsSIPAPI

World Wide SIP

JsSIPAPI (II)

World Wide SIP

JsSIPAPI (III)

World Wide SIP

JsSIPAPI (IV)

World Wide SIP

JsSIPAPI (V)

World Wide SIP

Otras Implementaciones

➔ SIPML5

World Wide SIP

SIP sobre WebSocketen el lado del Servidor

➔ ¿Por qué es necesario?

Los clientes SIP WebSocket se conectan al servidor para envío y recepción de mensajes SIP a través de la conexión WebSocket

➔ ¿Implica un nuevo nodo SIP?

No. Implica que los Proxies y resto de servidores SIP implementen WebSocket como protocolo de transporte, análogamente a UDP, TCP, SCTP, etc

World Wide SIP

OverSIP

➔ SIP Proxy con transporte WebSocket:➔ http://oversip.net➔ https://github.com/versatica/OverSIP

World Wide SIP

Otras Implementaciones

➔ Kamailio➔ Asterisk

World Wide SIP

JsSIP + OverSIP

➔ Comunicación multimedia entre navegadores utilizando SIP como protocolo de señalización

➔ Comunicación SIP entre navegadores y dispositivos SIP convencionales

World Wide SIP

JsSIP + OverSIPAplicaciones

➔ Telefonía SIP en *TU* web:➔ Dispositivo SIP en el navegador➔ Comunicación entre los usuarios de tu web➔ Atención de llamadas en tu web➔ Telefonía en tu intranet➔ Convergencia de CRM/ERP y telefonía

World Wide SIP

JsSIP + OverSIPAplicaciones (II)

➔ Dispositivo SIP en el navegador:➔ Actualización de versiones centralizada

➔ ¡¡¡ Pulsa F5 !!!➔ Configuración centralizada➔ Más espacio en la mesa de escritorio➔ Liberación de toma eléctrica➔ Liberación de puerto Switch (+ PoE) ➔ ¿Gestionar 200 licencias de EyeBeam?

➔ ¡¡¡ Nooo !!!

World Wide SIP

World Wide SIP

Arquitectura Demo

OverSIP SIPoversip.net

Kamailio SIP proxy/registrarjssip.net

JsSIPsip:ibc@aliax.net

JsSIPsip:jmillan@jssip.net

Kamailio SIP proxy/registraraliax.net

World Wide SIP

Convergencia entre WebRTC y SIP (actual)

➔ Señalización resuelta:➔ draft-ietf-sipcore-sip-websocket

➔ Media NO resuelta:➔ PBX, Media Servers y teléfonos SIP actuales

requieren adaptarse para soportar SRTP sobre DTLS, ICE, RTP streams multiplexados, etc...

World Wide SIP

Next Step

➔ 2011:➔ Señalización SIP resuelta:

➔ SIP sobre WebSokcet (JsSIP + OverSIP)

➔ 2012:➔ Audio/vídeo entre navegadores WebRTC

➔ 2013:➔ ¿Convergencia SIP y WebRTC en el media?

World Wide SIP

Next Step (II)

Recommended