SIP y XMPP: amigos para siempre

3,879 views

Published on

Slides (in Spanish) from the talk I gave at Telefónica R&D.

Talk was about what features SIP and XMPP share which go beyond VoIP and how to implement a gateway functionality between them.

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,879
On SlideShare
0
From Embeds
0
Number of Embeds
2,959
Actions
Shares
0
Downloads
25
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

SIP y XMPP: amigos para siempre

  1. 1. SIP y XMPP: amigos para siempre Saúl Ibarra Corretgé | AG ProjectsSaturday, October 6, 2012
  2. 2. ¡Hola!Saturday, October 6, 2012
  3. 3. AG ProjectsSIP Infrastructure Experts Intro • Hola, soy @saghul • En VoIP desde el 2005 • Vamos a hablar de SIP y XMPPSaturday, October 6, 2012
  4. 4. AG ProjectsSIP Infrastructure Experts AG Projects • Infraestructura SIP • Blink • SIP Thor: Plataforma • SIP SIMPLE SDK SIP con escalabilidad horizontal mediante • SylkServer P2P • MediaProxy • Proyectos Open • OpenXCAP Source • MSRPRelaySaturday, October 6, 2012
  5. 5. AG ProjectsSIP Infrastructure Experts Entendiendo SIP y XMPP • Ambos son protocolos de señalización • Nos permiten establecer sesiones multimedia • Mensajería Instantánea y Presencia • Pero son MUY distintosSaturday, October 6, 2012
  6. 6. AG ProjectsSIP Infrastructure Experts SIP • Session Initiation Protocol - RFC 3261 • Creado para iniciar, mantener y terminar sesiones multimedia • Mayormente utilizado en sesiones de audio y video, y conferencias • Diseñado para que la inteligencia esté en el User AgentSaturday, October 6, 2012
  7. 7. AG ProjectsSIP Infrastructure Experts XMPP • eXtensible Messaging and Presence Protocol - RFC 6120, 6121 • Creado para mensajería y presencia • Mayormente utilizado para IM • Diseñado para que la inteligencia esté en el servidorSaturday, October 6, 2012
  8. 8. Mensajería InstantáneaSaturday, October 6, 2012
  9. 9. AG ProjectsSIP Infrastructure Experts IM con SIP • Tipo SMS: SIP MESSAGE • No hay relación entre mensajes • Si el transporte es UDP, orden no garantizado • Utiliza el path de la señalizaciónSaturday, October 6, 2012
  10. 10. AG ProjectsSIP Infrastructure Experts IM con SIP • Basado en sesiones: MSRP • Igual que una llamada • Conexión TCP entre los dispositivos • Múltiples aplicaciones sobre MSRPSaturday, October 6, 2012
  11. 11. AG ProjectsSIP Infrastructure Experts MSRP • Message Session Relay Protocol - RFC4575 • Se negocia con SDP, igual que un stream de audio • Aplicaciones: chat, transferencia de ficheros, compartir escritorio • TLS es mandatory • Usado en RCSSaturday, October 6, 2012
  12. 12. AG ProjectsSIP Infrastructure Experts IM con SIP MESSAGE sip:saul@ag-projects.com SIP/2.0 Via: SIP/2.0/UDP 192.168.99.53:58291;rport;branch=z9hG4bKPjLOuZqe0g8SRst9ip Max-Forwards: 70 From: "Saúl" <sip:saghul@sip2sip.info>;tag=QPQ0E6QCFPv8Nx7F3uGPgkmoPvibIZDS To: <sip:saul@ag-projects.com> Call-ID: Us.Cphs4LMENWqaKvgR3MDup4Ak4eee2 CSeq: 50270 MESSAGE User-Agent: Blink Pro 2.0.0 (MacOSX) Content-Type: text/plain Content-Length: 3 fooSaturday, October 6, 2012
  13. 13. AG ProjectsSIP Infrastructure Experts IM con SIPSaturday, October 6, 2012
  14. 14. AG ProjectsSIP Infrastructure Experts IM con SIP v=0 o=- 3557072827 3557072827 IN IP4 192.168.99.53 s=Blink Pro 2.0.0 (MacOSX) c=IN IP4 192.168.99.53 t=0 0 { } m=message 2855 TCP/TLS/MSRP * a=path:msrps://192.168.99.53:2855/2da6282242d37bc5909b;tcp a=accept-types:message/cpim text/* application/im-iscomposing+xml a=accept-wrapped-types:* a=setup:active m=audio 50002 RTP/AVP 103 102 9 0 8 101 a=rtcp:50003 a=rtpmap:103 speex/16000 a=rtpmap:102 speex/8000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=sendrecvSaturday, October 6, 2012
  15. 15. AG ProjectsSIP Infrastructure Experts IM con SIP • SIP MESSAGE es más frágil • Con MSRP es necesario aceptar la sesión • Es posible usar early media • ¿Routing basado en presencia?Saturday, October 6, 2012
  16. 16. AG ProjectsSIP Infrastructure Experts IM con XMPP • Distintos tipos de stanzas para IM • El servidor inserta nuestra identidad • Sin soporte para sesiones, son “implícitas”Saturday, October 6, 2012
  17. 17. AG ProjectsSIP Infrastructure Experts IM con XMPPSaturday, October 6, 2012
  18. 18. AG ProjectsSIP Infrastructure Experts IM con XMPP <message from="saul@ag-projects.com/Psi+" type="chat" xml:lang="en" to="saghul@gmail.com/ λ3DD1000D" id="aaf0a"> <body>foo</body> <active xmlns="http://jabber.org/protocol/chatstates"/> <request xmlns="urn:xmpp:receipts"/> </message>Saturday, October 6, 2012
  19. 19. PresenciaSaturday, October 6, 2012
  20. 20. AG ProjectsSIP Infrastructure Experts Presencia con SIP • Modelo PubSub, publicación - subscripción • Iniciado por el usuario • No se usa un modelo end to end • Servidores Presence Agent • Autorización: XCAPSaturday, October 6, 2012
  21. 21. AG ProjectsSIP Infrastructure Experts XCAP • XML Configuration Access Protocol - RFC4825 • Almacena documentos XML, modificables mediante HTTP • Apliaciones • Autorización • Lista de contactos • Estado offlineSaturday, October 6, 2012
  22. 22. AG ProjectsSIP Infrastructure Experts Presencia con SIPSaturday, October 6, 2012
  23. 23. AG ProjectsSIP Infrastructure Experts <presence ...> <tuple id="SID-2af16065-6f4c-40a5-8bee-c38678776dec"> <status> <basic>open</basic> <agp-pidf:extended>available</agp-pidf:extended> </status> <c:display-name>saghul</c:display-name> <c:map>Netherlands/Wageningen</c:map> <c:icon>https://...</c:icon> <agp-pidf:device-info id="2af16065-6f4c-40a5-8bee-c38678776dec"> <agp-pidf:description>hal</agp-pidf:description> <agp-pidf:user-agent>Blink Pro 2.0.0 (MacOSX)</agp-pidf:user-agent> <agp-pidf:time-offset>120</agp-pidf:time-offset> </agp-pidf:device-info> <caps:servcaps> <caps:audio>true</caps:audio> <caps:message>true</caps:message> <caps:text>true</caps:text> <agp-caps:file-transfer>true</agp-caps:file-transfer> <agp-caps:screen-sharing>true</agp-caps:screen-sharing> </caps:servcaps> <rpid:user-input idle-threshold="600">active</rpid:user-input> <contact>sip:saghul@test.sip2sip.info</contact> <note>At work!</note> <timestamp>2012-09-19T22:09:56.929088+02:00</timestamp> </tuple> ... </presence>Saturday, October 6, 2012
  24. 24. AG ProjectsSIP Infrastructure Experts Presencia con XMPP • Modelo Push - el servidor envía los datos a todos • Iniciado automáticamente por el servidor • Sólo contempla presencia “básica” • Presencia extendida • Personal Eventing Protocol - XEP-0163Saturday, October 6, 2012
  25. 25. AG ProjectsSIP Infrastructure Experts Presencia con XMPPSaturday, October 6, 2012
  26. 26. AG ProjectsSIP Infrastructure Experts Presencia con XMPP <presence> <status>ready to rock!</status> <priority>50</priority> <c xmlns="http://jabber.org/protocol/caps" node="http://psi-dev.googlecode.com/caps" ver="0.15" ext="ca cs cv e-time ep-notify-2 last-act mr sxe whiteboard"/> <x xmlns="vcard-temp:x:update"> <photo>6185d7579dab3063e71a09fcd0506a769c72af5e</photo> </x> </presence>Saturday, October 6, 2012
  27. 27. Sesiones con RTPSaturday, October 6, 2012
  28. 28. AG ProjectsSIP Infrastructure Experts Audio y Video con SIP • SIP y SDP para señalización, RTP para el transporte del payload • Encriptación: SRTP, ZRTP* • Soporte para múltiples streams • Soporte para distintas fuentes dentro de un mismo streamSaturday, October 6, 2012
  29. 29. AG ProjectsSIP Infrastructure Experts Audio y Vídeo con SIP v=0 o=- 3557075781 3557075781 IN IP4 192.168.99.53 s=Blink Pro 2.0.0 (MacOSX) c=IN IP4 192.168.99.53 t=0 0 m=audio 50542 RTP/AVP 103 102 9 0 8 101 a=rtcp:50544 a=rtpmap:103 speex/16000 a=rtpmap:102 speex/8000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=ice-ufrag:453af62f a=ice-pwd:21f8ab2b a=candidate:Sc0a86335 1 UDP 1694498815 62.131.6.55 50542 typ srflx raddr 192.168.99.53 rport 55428 a=candidate:Hc0a86335 1 UDP 2130706431 192.168.99.53 55428 typ host a=candidate:Sc0a86335 2 UDP 1694498814 62.131.6.55 50544 typ srflx raddr 192.168.99.53 rport 52633 a=candidate:Hc0a86335 2 UDP 2130706430 192.168.99.53 52633 typ host a=sendrecvSaturday, October 6, 2012
  30. 30. AG ProjectsSIP Infrastructure Experts NAT • RTP viaja sobre UDP • La mayoría de los usuarios está detrás de NAT • Necesidad de usar media relays • ¿O no?Saturday, October 6, 2012
  31. 31. AG ProjectsSIP Infrastructure Experts ICE • Interactive Connectivity Establishment - RFC 5425 • Cada usuario presenta sus candidatos para recibir RTP • Se hacen pruebas usando paquetes STUN • Se selecciona el candidato ganador • ¡Audio P2P detrás de NAT! • Ayuda en situaciones mixtas IPv4 / IPv6Saturday, October 6, 2012
  32. 32. AG ProjectsSIP Infrastructure Experts ICE v=0 o=- 3557075781 3557075781 IN IP4 192.168.99.53 s=Blink Pro 2.0.0 (MacOSX) c=IN IP4 192.168.99.53 t=0 0 m=audio 50542 RTP/AVP 103 102 9 0 8 101 a=rtcp:50544 a=rtpmap:103 speex/16000 a=rtpmap:102 speex/8000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 { } a=ice-ufrag:453af62f a=ice-pwd:21f8ab2b a=candidate:Sc0a86335 1 UDP 1694498815 62.131.6.55 50542 typ srflx raddr 192.168.99.53 rport 55428 a=candidate:Hc0a86335 1 UDP 2130706431 192.168.99.53 55428 typ host a=candidate:Sc0a86335 2 UDP 1694498814 62.131.6.55 50544 typ srflx raddr 192.168.99.53 rport 52633 a=candidate:Hc0a86335 2 UDP 2130706430 192.168.99.53 52633 typ hostSaturday, October 6, 2012
  33. 33. AG ProjectsSIP Infrastructure Experts Audio y Vídeo con XMPP • Jingle, originalmente creado por Google • Muy inspirado en SIP • Stanzas de tipo IQ • “Un SDP en XML” • ICE como requisitoSaturday, October 6, 2012
  34. 34. AG ProjectsSIP Infrastructure Experts Audio y Vídeo con XMPP <iq from=romeo@montague.lit/orchard id=ph37a419 to=juliet@capulet.lit/balcony type=set>   <jingle xmlns=urn:xmpp:jingle:1 action=session-initiate initiator=romeo@montague.lit/ orchard sid=a73sjjvkla37jfea>     <content creator=initiator name=voice>       <description xmlns=urn:xmpp:jingle:apps:rtp:1 media=audio>         <payload-type id=96 name=speex clockrate=16000/>         <payload-type id=18 name=G729/>         <payload-type id=0 name=PCMU />       </description>       <transport xmlns=urn:xmpp:jingle:transports:ice-udp:1 pwd=asd88fgpdd777uzjYhagZg           ufrag=8hhy>         <candidate component=1 foundation=1 generation=0 id=el0747fg11 ip=10.0.1.1           network=1 port=8998 priority=2130706431 protocol=udp type=host/>         <candidate component=1 foundation=2 generation=0 id=y3s2b30v3r ip=192.0.2.3           network=1 port=45664 priority=1694498815 protocol=udp rel-addr=10.0.1.1           rel-port=8998 type=srflx/>       </transport>     </content>   </jingle> </iq>Saturday, October 6, 2012
  35. 35. ConferenciasSaturday, October 6, 2012
  36. 36. AG ProjectsSIP Infrastructure Experts Conferencias con SIP • Lo habitual: aburridos mixers de RTP • Lo interesante: RTP + chat + conference control • Información: RFC 4575 • Control: RFC 4579Saturday, October 6, 2012
  37. 37. AG ProjectsSIP Infrastructure Experts <conference-info ... entity="sip:9037396@conference.sip2sip.info" state="full"> <conference-description> <display-text>Ad-hoc conference</display-text> <free-text>Hosted by SylkServer-2.0.0</free-text> </conference-description> <host-info> <web-page>http://sylkserver.com</web-page> </host-info> <conference-state> <user-count>1</user-count> <active>true</active> </conference-state> <users state="full"> <user entity="sip:saghul@sip2sip.info" state="full"> <display-text>Saúl</display-text> <endpoint entity="sip:lcwkhrsu@62.131.6.55:63047" state="full"> <display-text>Saúll</display-text> <status>connected</status> <joining-info> <when>2012-09-19T23:26:18+02:00</when> </joining-info> <media id="186236108"> <type>message</type> </media> </endpoint> </user> </users> </conference-info>Saturday, October 6, 2012
  38. 38. AG ProjectsSIP Infrastructure Experts Conferencias con XMPP • Multi User Chat (MUC): XEP-0045 • Audio y video • Muji: XEP-0272 • Coin: XEP-0298 • Coin utiliza el payload del RFC 4575Saturday, October 6, 2012
  39. 39. AG ProjectsSIP Infrastructure Experts Conferencias con XMPP <presence from=hag66@shakespeare.lit/pda id=n13mt3l to=coven@chat.shakespeare.lit/thirdwitch> <x xmlns=http://jabber.org/protocol/muc/> </presence> <presence from=coven@chat.shakespeare.lit/firstwitch id=3DCB0401-D7CF-4E31-BE05-EDF8D057BFBD to=hag66@shakespeare.lit/pda> <x xmlns=http://jabber.org/protocol/muc#user> <item affiliation=owner role=moderator/> </x> </presence> <presence from=coven@chat.shakespeare.lit/secondwitch id=C2CD9EE3-8421-431E-854A-A2AD0CE2E23D to=hag66@shakespeare.lit/pda> <x xmlns=http://jabber.org/protocol/muc#user> <item affiliation=admin role=moderator/> </x> </presence>Saturday, October 6, 2012
  40. 40. AG ProjectsSIP Infrastructure Experts Conferencias con XMPP <iq from=romeo@montague.lit/orchard id=zid615d9 to=juliet@capulet.lit/balcony type=set> <conference-info xmlns="urn:ietf:params:xml:ns:conference-info" entity="xmpp:romeo@monague.lit/orchard" state="full" version="1"> <!-- CONFERENCE INFO --> <conference-description> <subject>Ending a relationship</subject> </conference-description> <!-- CONFERENCE STATE --> <conference-state> <user-count>3</user-count> </conference-state> <!-- USERS --> <users> <user entity="xmpp:romeo@montague.lit" state="full"> <display-text>Romeo</display-text> <!-- ENDPOINTS --> <endpoint entity="xmpp:romeo@montague.lit/orchard"> <display-text>Romeos smartphone</display-text> <status>disconnected</status> ...Saturday, October 6, 2012
  41. 41. Construyendo un GatewaySaturday, October 6, 2012
  42. 42. AG ProjectsSIP Infrastructure Experts Estado del Arte • SIP utilizado para audio, video, conferencias y emular la PSTN • XMPP utilizado para mensajería, presencia y Google Hangouts • Ambos protocolos funcionarán en los navegadores • WebSocket + WebRTCSaturday, October 6, 2012
  43. 43. AG ProjectsSIP Infrastructure Experts SIP y XMPP: ¿qué tienen en común? • Misma tecnología para audio y video - RTP • Misma tecnolgía de NAT traversal - ICE • Payloads compatibles - CPIM • Mecanismo PUBLISH - SUBSCRIBE • usuario@dominioSaturday, October 6, 2012
  44. 44. AG ProjectsSIP Infrastructure Experts Combinando SIP y XMPP • Clientes dual stack • CUSAX: draft-ivov-xmpp-cusax • Clientes single stack • Usar un gateway • Un gateway transparenteSaturday, October 6, 2012
  45. 45. AG ProjectsSIP Infrastructure Experts Un solo stack • SIP y XMPP fueron diseñados de manera distinta, abstraernos de ellos puede traer problemas • Menos código, menos bugs • Configuración más simpleSaturday, October 6, 2012
  46. 46. AG ProjectsSIP Infrastructure Experts SIP SIMPLE Client SDKSaturday, October 6, 2012
  47. 47. AG ProjectsSIP Infrastructure Experts BlinkSaturday, October 6, 2012
  48. 48. AG ProjectsSIP Infrastructure Experts SylkServer Conferencing High Definition Audio Instant Messaging File Transfer Presence SIP Networks XMPP Networks SylkServerSaturday, October 6, 2012
  49. 49. AG ProjectsSIP Infrastructure Experts SylkServer • SIP Application Server • Software Libre • ZeroConf • Implementado utilizando SIP SIMPLE Client SDKSaturday, October 6, 2012
  50. 50. AG ProjectsSIP Infrastructure Experts SylkServer: ArquitecturaSaturday, October 6, 2012
  51. 51. AG ProjectsSIP Infrastructure Experts SylkServer: Conferencias • Audio en HD • Chat con MSRP • Información de participantes (RFC 4575) • Control de conferencias (RFC 4579) • draft-ietf-simple-chat • Transferencia de ficheros • Compartir escritorioSaturday, October 6, 2012
  52. 52. AG ProjectsSIP Infrastructure Experts SylkServer: gateway XMPP • Mensajería Instantánea • SIP MESSAGE • MSRP • Presencia • MUC • Jingle • Transferencia de ficheros • CoinSaturday, October 6, 2012
  53. 53. AG ProjectsSIP Infrastructure Experts Diseño del gateway XMPP • SylkServer es el servidor XMPP autoritativo del dominio • Sólo soporta conexiones S2S • Los clientes del dominio local usan SIP • Routing en base a usuario@dominio (DNS SRV)Saturday, October 6, 2012
  54. 54. AG ProjectsSIP Infrastructure Experts Arquitectura del gateway XMPP • El servidor no hace AAA • Despliegue detrás de un proxy SIP • Conexiones XMPP S2S con otros dominios • Una única opción de configuración necesaria como mínimo: el dominioSaturday, October 6, 2012
  55. 55. AG ProjectsSIP Infrastructure Experts Arquitectura del gateway XMPPSaturday, October 6, 2012
  56. 56. AG ProjectsSIP Infrastructure Experts Gateway XMPP: IMSaturday, October 6, 2012
  57. 57. AG ProjectsSIP Infrastructure Experts Gateway XMPP: PresenciaSaturday, October 6, 2012
  58. 58. AG ProjectsSIP Infrastructure Experts Retos en la implementación • Servidor XMPP vs Componente XMPP • Especificaciones incompletas / obsoletas • Diferencia de conceptos • ¿Sesiones XMPP? • SIP PIDF vs Presencia en XMPP • Conferencias en SIP vs XMPP MUC • Jingle y GingleSaturday, October 6, 2012
  59. 59. AG ProjectsSIP Infrastructure Experts Futuro • La IETF está considerando resucitar los drafts de interoperabilidad SIP - XMPP • Nuestro roadmap • Jingle y Gingle • Transferencia de ficherosSaturday, October 6, 2012
  60. 60. Desplegando infraestructura SIPSaturday, October 6, 2012
  61. 61. AG ProjectsSIP Infrastructure Experts Problemas habituales • NAT • Tamaño de los paquetes SIP • Escalabilidad • Entornos hostiles a nivel de networkingSaturday, October 6, 2012
  62. 62. AG ProjectsSIP Infrastructure Experts NAT • Fácilmente solucionable en el servidor reescribiendo el SDP • Pero rompe ICE • OpenSIPS + MediaProxy • Primera y única solución ICE-friendlySaturday, October 6, 2012
  63. 63. AG ProjectsSIP Infrastructure Experts Soporte ICE en MediaProxySaturday, October 6, 2012
  64. 64. AG ProjectsSIP Infrastructure Experts NAT y MSRP • Uso de relays: MSRPRelay • Alternative Connection Model (RFC 6135) • Implementado en SIP SIMPLE SDKSaturday, October 6, 2012
  65. 65. AG ProjectsSIP Infrastructure Experts Tamaño de los paquetes SIP • ¡Cada vez son más grandes! • Necesidad de un transporte fiable: TCP • ¿Es TCP el transporte correcto? • Facebook Messenger usa MQTT • Si hay SIP ALGs: TLS • Para que no husmeenSaturday, October 6, 2012
  66. 66. AG ProjectsSIP Infrastructure Experts Escalabilidad • ¿Quién balancea la carga del balanceador? • Red distribuída de servidores: DHT • Ejemplo: SIP2SIP.info usa SIPThorSaturday, October 6, 2012
  67. 67. AG ProjectsSIP Infrastructure Experts SIP + DHTSaturday, October 6, 2012
  68. 68. AG ProjectsSIP Infrastructure Experts Entornos hostiles a nivel de netwoking • “Internet funciona perfectamente. En el puerto 80.” • SIP sobre TLS, en otro puerto • RTP vía TURN / TCP • RTP multiplexing • WebRTCSaturday, October 6, 2012
  69. 69. AG ProjectsSIP Infrastructure ExpertsSaturday, October 6, 2012
  70. 70. AG ProjectsSIP Infrastructure Experts BYE sip:audience@tid SIP/2.0 Via: SIP/2.0/UDP 192.168.99.23:49919;rport;branch=z9hG4bKPjDb30Dx0sH7aM Max-Forwards: 70 From: "saghul" <sip:saul@ag-projects.com>;tag=UCpGKVZbQQx7BUK To: <sip:audience@tid>;tag=as59aef35c Call-ID: DEWDfu63OACwYeQk7MrhmRhRq.1cqqis CSeq: 10633 BYE Route: <sip:81.23.228.129;lr;ftag=UCpGKVZbQQx7BUKY;did=641.a8a9c553> User-Agent: Blink Content-Length: 0 @saghul saul@ag-projects.com sip:saul@ag-projects.comSaturday, October 6, 2012
  71. 71. AG ProjectsSIP Infrastructure Experts Apéndice: enlaces de interés • http://sipsimpleclient.com/ • http://sylkserver.com/ • http://icanblink.com/ • http://sylkserver.ag-projects.com/projects/ sylkserver/wiki/DesignXMPPSaturday, October 6, 2012

×