You are here

P2P sobre SIP

EarthLink SIPshare es una aplicación simple para compartir contenidos basada en SIP, que demustra la viabilidad de SIP como protocolo sobre el cual se pueden implementar aplicaciones peer-to-peer (P2P) diferentes de las típicas de voz y datos.

Funcionalidades:

  • Descubrimiento de peer - Dados unos pocos hosts autosuficientes, los peers aprenden de otros peers usando mensajes SIP estándares.
  • Búsqueda de contenidos completamente distribuida - Busca el contenido que se distribuye a través de la red de un peer a otro, en nombre de un tercer peer.
  • Transferencia de ficheros - Como aplicación de prueba de concepto, comparte documentos, fotos, y otros ficheros con peers en la red via mensajería SIP estándar, y completado usando un protocolo de transferencia de ficheros simple basado en UDP.
  • Basado en estándares - El ensamblaje de la red, búsqueda, y descarga se establecen usando mensajería SIP estándar.
  • Multiplataforma - Escrito en Java, por tanto EarthLink SIPshare corre en varias plataformas sin modificaciones.

Motivaciones:

Un Internet abierto implica que los usuarios tienen plena conectividad para decir al otro cualquier cosa, puede ser voz, vídeo, o otros intercambios de datos, sin la ayuda de servidores mediadores en medio siempre que sea posible. SIPshare ayuda a difundir la palabra de que SIP es más que un potente activador de la VoIP, mucho más. SIP es un protocolo que permite peer-to-peer de una manera basada en estándares.

La ubicuidad emergente de SIP como inicio de sesión proporciona una oportunidad para ofrecer a los usuarios todo tipo de aplicaciones P2P sobre un protocolo común, en lugar de inventar un nuevo protocolo para cada nueva aplicación P2P.

EarthLink quiere ayudar a la causa de estas nuevas aplicaciones demostrando usando código abierto que SIP puede alojar potentes aplicaciones más allá de esas que vienen de inmediato a la mente, eso es, voz y vídeo.

Se ha elegido el compartir ficheros para ilustrar como se puede usar SIP para construir aplicaciones P2P alternativas, pero el punto no es compartir ficheros en sí mismo, aunque se ha desarrollado el compartir ficheros. SIPshare demuestra que es concebible que la VoIP, donde la voz es solo contenido en formas diferentes, puede ser implementado usando SIP en una red P2P cumpliendo los estándares. En otras palabras, el efecto de Skype, pero con una diferencia importante: utilizando protocolos basados en estándares.

No han sido los primeros en considerar voz sobre P2P, o métodos alternativos para implementar P2P. SIP es demasiado importante para considerar su uso solo en voz, o solo en vídeo.

Implementación:

EarthLink SIPshare utiliza stateful SIP Subscribe/Notify para construir y mantener una red de peers, y stateless Subscribe/Notify para implementar búsquedas de contenido en dicha red. Las búsquedas de contenido se pasan de un peer a todos los otros peers conocidos de manera que el conteido puede ser localizado en un host del cual el peer que hizo la petición original no estaba al corriente. Una vez se ha localizado el contenido, se usa un SIP Invite para solicitar el contenido del host desconocido.

EarthLink SIPshare está escrito para Java 2 Standard Edition, y corre en cualquier plataforma para la cual esté disponible una máquina virtual J2SE, lo cual incluye Linux, Mac OS X, Solaris, y Microsoft Windows. En lo que concierne a la programación de aplicaciones SIP, SIPshare usa la implementación NIST del JAIN SIP stack. NIST SIP se distribuye juntamente con SIPshare.

Toda la mensajería de SIPshare, incluyendo el protocolo de transferencia, se basan en UDP. Así que si queremos hacer funcionar SIPshare detrás de un NAT, podemos extenderlo con algo como STUN para NAT traversal.

EarthLink SIPshare está disponible sin coste alguno y está licenciado bajo una licencia BSD-style.

Futuro trabajo:

EarthLink SIPshare es un prototipo. Implementa solo el de mensajería SIP necesario para demostrar este uso alternativo de SIP. Otras funcionalidades que podrían ser de interés para la comunidad incluyen:

  • NAT traversal
  • Usar el estándar tftp en lugar de FSP para transferencia de contenido
  • Interfaz de usuario mejorado, incluyendo la posibilidad de cancelar descargas
  • Proporcionar semánticas para el cuerpo del Notify mayores de los que un datagrama UDP puede alojar

La verdad es que, pese a ser algo antiguo que acabo de descubrir y de que no se ha hablado mucho de ello, me ha parecido un concepto interesante.

He visto que Alberto, también hablo de ella en su día Smile

Asterisk: 
Debian: 
Qué te parece: