45
World Wide SIP Iñaki Baz Castillo – XtraTelecom S.L.U. José Luis Millán – XtraTelecom S.L.U.

JsSIP: SIP + WebRTC

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: JsSIP: SIP + WebRTC

World Wide SIP

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

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

Page 2: JsSIP: SIP + WebRTC

World Wide SIP

WebRTC

Comunicación Multimedia en el Navegador

Page 3: JsSIP: SIP + WebRTC

World Wide SIP

Estado del Arte

➔ Facebook & Skype➔ Google Hangouts

Page 4: JsSIP: SIP + WebRTC

World Wide SIP

Estado del Arte (II)

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

Page 5: JsSIP: SIP + WebRTC

World Wide SIP

WebRTCAplicaciones

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

Page 6: JsSIP: SIP + WebRTC

World Wide SIP

Page 7: JsSIP: SIP + WebRTC

World Wide SIP

WebRTCArquitectura

Page 8: JsSIP: SIP + WebRTC

World Wide SIP

WebRTCMedia

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

Page 9: JsSIP: SIP + WebRTC

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

Page 10: JsSIP: SIP + WebRTC

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

Page 11: JsSIP: SIP + WebRTC

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)

Page 12: JsSIP: SIP + WebRTC

World Wide SIP

Page 13: JsSIP: SIP + WebRTC

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

Page 14: JsSIP: SIP + WebRTC

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...)

Page 15: JsSIP: SIP + WebRTC

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

Page 16: JsSIP: SIP + WebRTC

World Wide SIP

WebRTCImplementaciones

➔ Mozilla Firefox➔ Google Chrome➔ Safari➔ IE

Page 17: JsSIP: SIP + WebRTC

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”

Page 18: JsSIP: SIP + WebRTC

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 [...]

Page 19: JsSIP: SIP + WebRTC

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?

Page 20: JsSIP: SIP + WebRTC

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

Page 21: JsSIP: SIP + WebRTC

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

Page 22: JsSIP: SIP + WebRTC

World Wide SIP

SIP y WebRTC (III)

➔ ¿Implementan SIP los navegadores?

Page 23: JsSIP: SIP + WebRTC

World Wide SIP

SIP y WebRTC (IV)

➔ Entonces...

¿Cómo puede un navegador utilizar SIP?

Page 24: JsSIP: SIP + WebRTC

World Wide SIP

JsSIP

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

Page 25: JsSIP: SIP + WebRTC

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)

Page 26: JsSIP: SIP + WebRTC

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

Page 27: JsSIP: SIP + WebRTC

World Wide SIP

JsSIP (IV)

➔ ¿Es un softphone?

Page 28: JsSIP: SIP + WebRTC

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...)

Page 29: JsSIP: SIP + WebRTC

World Wide SIP

JsSIPAPI

Page 30: JsSIP: SIP + WebRTC

World Wide SIP

JsSIPAPI (II)

Page 31: JsSIP: SIP + WebRTC

World Wide SIP

JsSIPAPI (III)

Page 32: JsSIP: SIP + WebRTC

World Wide SIP

JsSIPAPI (IV)

Page 33: JsSIP: SIP + WebRTC

World Wide SIP

JsSIPAPI (V)

Page 34: JsSIP: SIP + WebRTC

World Wide SIP

Otras Implementaciones

➔ SIPML5

Page 35: JsSIP: SIP + WebRTC

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

Page 36: JsSIP: SIP + WebRTC

World Wide SIP

OverSIP

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

Page 37: JsSIP: SIP + WebRTC

World Wide SIP

Otras Implementaciones

➔ Kamailio➔ Asterisk

Page 38: JsSIP: SIP + WebRTC

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

Page 39: JsSIP: SIP + WebRTC

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

Page 40: JsSIP: SIP + WebRTC

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 !!!

Page 41: JsSIP: SIP + WebRTC

World Wide SIP

Page 42: JsSIP: SIP + WebRTC

World Wide SIP

Arquitectura Demo

OverSIP SIPoversip.net

Kamailio SIP proxy/registrarjssip.net

JsSIPsip:[email protected]

JsSIPsip:[email protected]

Kamailio SIP proxy/registraraliax.net

Page 43: JsSIP: SIP + WebRTC

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...

Page 44: JsSIP: SIP + WebRTC

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?

Page 45: JsSIP: SIP + WebRTC

World Wide SIP

Next Step (II)