World Wide SIP



          Iñaki Baz Castillo – XtraTelecom S.L.U.
           José Luis Millán – XtraTelecom S.L.U.
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
WebRTC
                   Aplicaciones

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




                     World Wide SIP
World Wide SIP
WebRTC
Arquitectura




  World Wide SIP
WebRTC
                        Media

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




                       World Wide SIP
WebRTC
                         Media (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
WebRTC
    Establecimiento de Sesión Multimedia

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




                      World Wide SIP
WebRTC
Establecimiento de Sesión Multimedia (II)

➔   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



                         World Wide SIP
World Wide SIP
WebRTC
                    Señalización

➔   Conozco mis direcciones IP
➔   Conozco mis capacidades de media
➔   ¿Y ahora qué?




                      World Wide SIP
WebRTC
                     Señ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
WebRTC
                           Señ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
WebRTC
                      Está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
WebRTC
                Implementaciones

➔   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
JsSIP
                   Funcionamiento

➔   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
JsSIP
   API




World Wide SIP
JsSIP
 API (II)




World Wide SIP
JsSIP
API (III)




World Wide SIP
JsSIP
API (IV)




World Wide SIP
JsSIP
 API (V)




World Wide SIP
Otras Implementaciones


➔   SIPML5




                    World Wide SIP
SIP sobre WebSocket
              en 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 + OverSIP
                       Aplicaciones

➔   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 + OverSIP
                           Aplicaciones (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

Kamailio SIP proxy/registrar      Kamailio SIP proxy/registrar
         aliax.net                         jssip.net



                          OverSIP SIP
                          oversip.net




           JsSIP                                 JsSIP
     sip:ibc@aliax.net                  sip:jmillan@jssip.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)




  World Wide SIP

[VoIP2Day 2012] World Wide SIP

  • 1.
    World Wide SIP Iñaki Baz Castillo – XtraTelecom S.L.U. José Luis Millán – XtraTelecom S.L.U.
  • 2.
    WebRTC Comunicación Multimedia enel Navegador World Wide SIP
  • 3.
    Estado del Arte ➔ Facebook & Skype ➔ Google Hangouts World Wide SIP
  • 4.
    Estado del Arte(II) ➔ Instalación ➔ Plugins ➔ Uso exclusivo en aplicaciones del proveedor World Wide SIP
  • 5.
    WebRTC Aplicaciones ➔ Help Desk ➔ Venta online ➔ Atención de clientes online ➔ Asistencia remota ➔ Redes sociales World Wide SIP
  • 6.
  • 7.
  • 8.
    WebRTC Media ➔ Códecs ➔ Narrowband audio: G.711 ➔ Wideband audio: Opus ➔ Vídeo: Debate entre VP8 y H.264 AVC World Wide SIP
  • 9.
    WebRTC Media (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
  • 10.
    WebRTC Establecimiento de Sesión Multimedia ➔ Solicitud de acceso a los dispositivos de media a través del navegador ➔ Cámara ➔ Micrófono World Wide SIP
  • 11.
    WebRTC Establecimiento de SesiónMultimedia (II) ➔ 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 World Wide SIP
  • 12.
  • 13.
    WebRTC Señalización ➔ Conozco mis direcciones IP ➔ Conozco mis capacidades de media ➔ ¿Y ahora qué? World Wide SIP
  • 14.
    WebRTC Señ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
  • 15.
    WebRTC Señ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
  • 16.
    WebRTC Está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
  • 17.
    WebRTC Implementaciones ➔ Mozilla Firefox ➔ Google Chrome ➔ Safari ➔ IE World Wide SIP
  • 18.
    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
  • 19.
    WebSocket como Transportepara 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
  • 20.
    WebSocket como Transportepara SIP (II) ➔ Creo que lo he entendido... ¿Necesito un gateway para intercambiar mensajes SIP entre mi teléfono y mi navegador? World Wide SIP
  • 21.
    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
  • 22.
    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
  • 23.
    SIP y WebRTC(III) ➔ ¿Implementan SIP los navegadores? World Wide SIP
  • 24.
    SIP y WebRTC(IV) ➔ Entonces... ¿Cómo puede un navegador utilizar SIP? World Wide SIP
  • 25.
    JsSIP ➔ Librería SIP en JavaScript para aplicaciones web: ➔ http://www.jssip.net (próximamente) World Wide SIP
  • 26.
    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
  • 27.
    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
  • 28.
    JsSIP (IV) ➔ ¿Es un softphone? World Wide SIP
  • 29.
    JsSIP Funcionamiento ➔ 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
  • 30.
    JsSIP API World Wide SIP
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
    Otras Implementaciones ➔ SIPML5 World Wide SIP
  • 36.
    SIP sobre WebSocket en 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
  • 37.
    OverSIP ➔ SIP Proxy con transporte WebSocket: ➔ http://oversip.net ➔ https://github.com/versatica/OverSIP World Wide SIP
  • 38.
    Otras Implementaciones ➔ Kamailio ➔ Asterisk World Wide SIP
  • 39.
    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
  • 40.
    JsSIP + OverSIP Aplicaciones ➔ 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
  • 41.
    JsSIP + OverSIP Aplicaciones (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
  • 42.
  • 43.
    Arquitectura Demo Kamailio SIPproxy/registrar Kamailio SIP proxy/registrar aliax.net jssip.net OverSIP SIP oversip.net JsSIP JsSIP sip:ibc@aliax.net sip:jmillan@jssip.net World Wide SIP
  • 44.
    Convergencia entre WebRTCy 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
  • 45.
    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
  • 46.
    Next Step (II) World Wide SIP