Este documento describe las tecnologías SIP y WebRTC. Explica que WebRTC permite comunicación de audio y video nativa en el navegador sin plugins a través de la API JavaScript. También cubre los estándares, arquitectura, códecs de medios, protocolos como STUN, SRTP y SDP, y cómo se puede usar SIP sobre WebSocket para señalización entre navegadores y dispositivos SIP existentes. Finalmente, presenta herramientas como JsSIP y OverSIP para habilitar comunicaciones multimedia en la web usando SIP.
5. WebRTC – Estándares
IETF RTCWeb WG
Especificaciones multimedia y de seguridad en
WebRTC
W3C WebRTC WG
Define un set de APIs ECMAScript para manejar el
stack WebRTC en aplicaciones web
Estado
En pleno desarrollo de especificaciones e
implementaciones (“beta” 100%)
6. WebRTC – Aplicaciones
Audio/vídeo en redes sociales
Help Desk
Venta online
Atención de clientes online
Asistencia remota
PBX corporativa
7. WebRTC – Arquitectura
Aplicación web (HTML + CSS +
JavaScript)
Innovación instantánea
Stack WebRTC en el navegador
Manejado vía API JavaScript por la
aplicación web
Audio/vídeo RTP nativo
8. WebRTC – Media
Códecs
Narrowband audio: G.711
Wideband audio: Opus
Vídeo: Debate entre VP8 y H.264
AVC
9. WebRTC – Media II
STUN / ICE (RFC 5389 y RFC 5245)
La panacea para el NAT
Autodescubrimiento de IP pública(s)
Comprobación de conexión entre peers y verificación (garantía de que
enviamos nuestro media al peer con el que hemos negociado la sesión)
El media va directo entre navegadores a través de la mejor ruta
SRTP-DTLS (RFC 3711 y RFC 6347)
SRTP: RTP cifrado (clave simétrica) sobre DTLS
DTLS: Capa de cifrado sobre UDP (similar a TLS sobre TCP)
Se usa para negociar la clave simétrica que se usará en SRTP
TURN (RFC 5766): Traversal Using Relays around NAT
Túnel RTP para casos de NAT insalvables
10. WebRTC – Media III
SDP (RFC 3264): Session Description Protocol
Se usa en SIP y XMPP (Jingle)
Indica IP y puerto de escucha
Selección de codecs de audio/vídeo
SSRC: diferentes streams sobre el mismo flujo RTP
(ej: multi audio/vídeo conferencia)
Profile SAVPF (no es común en SIP...)
¿Problema de interoperabilidad? Sí
11. WebRTC – Media IV (SDP)
IP:puerto
de escucha
AUDIO
CODECS
IP:puerto
de escucha
VIDEO
CODECS
12. WebRTC – Dispositivos
El stack WebRTC del navegador
tiene acceso al micrófono y
webcam
Se solicita autorización al usuario
¿Os imagináis el riesgo si no fuese
así?
14. WebRTC – Funcionamiento II
Visitamos una web con nuestro
navegador
La web incluye código JavaScript que
usa el API WebRTC
El usuario quiere iniciar una sesión
de media (o recibe una invitación)
con otro usuario web (u otro servicio
WebRTC)
15. WebRTC – Funcionamiento III
JavaScript solicita al stack WebRTC recursos de audio/vídeo
El stack WebRTC devuelve un SDP a JavaScript
La aplicación web envía el SDP el peer (¿cómo? más
adelante)
Mismo proceso en el peer
Comienza STUN / ICE, se verifican los peers y se establece
un camino para el media
Sobre ese camino se envía el SRTP con audio/vídeo
20. WebRTC – Señalización
¿Cómo hago llegar la oferta SDP al peer?
WebRTC no define el mecanismo de intercambio de
SDP (“up to the web developer”)
Estamos en un navegador, ¿opciones?
Enviar el SDP en un HTTP POST (con AJAX)
El peer hace HTTP long polling al servidor web para
consultar nuevas invitaciones
Usar Flash para entregar/recibir el SDP (puaj...)
HTTP Comet (conexión TCP “persistente”...)
WebSocket
21. 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”
22. SIP over WebSocket
Nuevo transporte para SIP (junto a
UDP, TCP y SCTP)
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 [...]
23. SIP over WebSocket II
¿Necesito un gateway para que
mi navegador hable SIP?
O sea... NO
24. SIP over WebSocket III
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
25. SIP over WebSocket IV
¿Qué nos aporta?
Permite conectar navegadores web
a infraestructura SIP existente
¡OJO!
Estamos hablando sólo de
señalización
26. JsSIP
Librería SIP en JavaScript para
aplicaciones web:
http://jssip.net
https://github.com/versatica/JsSIP
27. 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
Mensajería instantánea
Presencia
Subscripciones (BLF)
28. 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
30. Servidor SIP WebSocket
¿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
34. JsSIP + OverSIP
Comunicación multimedia entre
navegadores utilizando SIP como
protocolo de señalización
Comunicación SIP entre
navegadores y dispositivos SIP
convencionales
35. JsSIP + OverSIP II
Telefonía SIP en TU web:
Comunicación entre usuarios web y
otros dispositivos SIP
Integración PBX y PSTN
Telefonía en tu intranet
Convergencia de CRM/ERP y
telefonía
36. JsSIP + OverSIP III
Dispositivo SIP en el navegador:
¡ Sin instalación de software !
Actualización de versiones
centralizada
¡¡¡ Pulsa F5 !!!
Configuración y provisión
centralizada
39. Convergencia SIP y WebRTC
Señalización resuelta:
draft-ietf-sipcore-sip-websocket
Media NO resuelta:
PBX, Media Servers y teléfonos SIP
actuales requieren adaptarse para
soportar SDP con perfil SAVPF
(SRTP-DTLS, ICE, SSRC, etc...)
40.
41. Muchas Gracias
Gracias a los asistentes
...y a la organización del 4K
Conference
¿Dudas? ¿Preguntas?
@ibc_tw