Implementación del protocolo P2PSP usando WebRTC


P2PTV directamente en el Navegador, sin plugins.


P2PSP protocol

Alumno: Cristóbal Medina López
Director: Vicente González Ruiz


Universidad de Almería

Sigue la presentación desde tu equipo


URL para seguir las diapositivas:

http://www.p2psp.org/slides/CMLPFC



Diapositivas

Índice de contenidos


P2PTV directamente en el navegador


P2PSP en el navegador

Streaming de contenido multimedia mediante redes P2P directamente en el navegador Web del usuario. Accesible tan sólo con introducir una URL, sin necesidad de plugins u otro software adicional.

Motivación


  • Millones de personas consumen contenido multimedia diariamente.


  • Aumento de la velocidad de acceso a Internet con tarifas reducidas.


  • Acceso al contenido desde múltiples plataformas.


Multiples plataformas

¿Qué es el streaming de contenido?


Chrome 2 Chrome

El streaming de vídeo sobre Internet, o IPTV, consiste en distribuir contenido multimedia sin interrupciones a través de la red de manera que el usuario final reproduce el contenido al mismo tiempo que lo está recibiendo. El streaming en directo, además de lo anterior, permite transmitir eventos que están sucediendo justo antes de la difusión.

Gracias a esta tecnología ya no es necesario descargar los ficheros de vídeo completamente antes de ser reproducidos.

P2PSP protocol

El P2PSP (Peer to Peer Straightforward Protocol) es un protocolo de comunicación de la capa de aplicación para el streaming de contenido multimedia sobre Internet. El protocolo ha sido diseñado con tres ideas básicas en mente:

1. Ser tan simple como sea posible con el fin de proporcionar una implementación rápida.


2. Ser independiente del formato del stream.


3. Ser eficiente.

WebRTC

WebRTC (Web Real-Time Communication) es un proyecto de software libre iniciado en 2011 y que permite a los navegadores mantener comunicaciones en tiempo real a través de una API Javascript sin necesidad de software adicional. Es un proyecto mantenido por Google, Mozilla y Opera que actualmente está en proceso de estandarización en el IETF y en el W3C.

MediaStream o getUserMedia: Permite al navegador acceder a la cámara y al micrófono.


RTCPeerConnection: Permite establecer una conexión P2P con otros navegadores.


RTCDataChannel: Permite al navegador una comunicación de datos bidireccional entre peers.

MSE

Media Source Extensions, también conocido como MSE, es una especificación elaborada por el HTML Working Group del W3C con el objetivo de extender las funcionalidades del objeto HTMLMediaElement. Las MSE permiten a los desarrolladores construir media stream dinámicos en JavaScript para la etiqueta <audio> y <video>.

  • Permite construir streams multimedia mediante JavaScript independientemente de cómo el elemento multimedia sea incrustado.


  • Define un modelo de buffering que facilita casos de uso como streaming adaptativo, inserción de publicidad, saltos de tiempo y edición de vídeo.


  • Aprovecha la caché del navegador tanto como sea posible.


¿Por qué el navegador Web?


Fácil de usar

Fácil de usar: para acceder a un recurso es suficiente con recordar el nombre de dominio donde se aloja o llegar hasta él mediante motores de búsqueda disponibles en la red.



HTML5

Etiqueta <video>: permite incrustar contenido multimedia directamente, sin necesidad de plugins.



WebRTC

WebRTC: define los recursos PeerConnection y DataChannel. Juntos, permiten establecer un canal de datos bidireccional entre los navegadores mediante socket sobre UDP.

Streaming Cliente-Servidor en la Web


streaming cliente servidor

Un escenario típico de streaming en vivo usando el modelo cliente-servidor. La fuente de vídeo captura el vídeo y lo envía al servidor de streaming. Cada cliente recibe una copia del stream desde el servidor de streaming que envía el contenido tantas veces como clientes hay conectados.

Streaming P2PSP en la Web


streaming p2psp

Un escenario equivalente al anterior pero usando el P2PSP. Cabe destacar que en este caso el Streaming Server sólo envía una copia del stream. Al igual que éste, el Splitter sólo envía una copia del stream y los peer son los encargados de compartir el contenido entre ellos.

P2PSP: Un escenario ideal


secuencia de intercambio de mensajes p2psp

P2PSP: El mundo real


Problemas

router

NAT: mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que asignan mutuamente direcciones incompatibles.


router

NAT simétricos: por cada solicitud desde una dirección interna a una dirección de destino se asigna una dirección externa única. Incluso para direcciones origen iguales.



Soluciones

Servidor

STUN es protocolo de red que permite a un host que está detrás de un NAT descubrir su dirección IP pública, el puerto y el tipo de NAT.



Servidor

TURN es protocolo de red que permite a un host situado detrás de un NAT simétrico o un firewall enviar y recibir datos mediante TCP o UDP.

P2PSP: WebRTC y STUN


secuencia de intercambio de mensajes p2psp-webrtc-stun

P2PSP: WebRTC y TURN


secuencia de intercambio de mensajes

P2PSP y C-S no son incompatibles


p2psp híbrido

Por ejemplo, un usuario premium (que no estaría obligado a compartir ancho de banda con el clúster) podría recibir el stream directamente del Streaming Server usando el modelo Cliente-Servidor.

Otras ventajas del P2PSP en la Web



Link html

Los usuarios sólo se descargan una página Web para empezar a disfrutar del contenido. Sin plugins o software adicional.



escalabilidad

Los clientes aportan su capacidad de subida con el fin de hacer el sistema mucho más escalable.

Estado actual de la implementación


Veámos una demostración


demo P2PSP con WebRTC

Estado actual de la implementación


Un diseño responsive


Desafortunadamente, en este momento...


Formato de video

No existe un formato de vídeo universal aceptado por todos los navegadores Web.



API WebRTC incompleta

La API WebRTC es sólo un borrador que algunos navegadores han empezado a implementar. Sólo disponible en Chrome y Firefox (usan prefijos distintos).



MSE

Media Source Extensions no está soportada por todos los navegadores. Sin embargo, está más cerca de convertirse en estándar, es una Candidate Recommendation del W3C.

Trabajo Futuro


Actualizada

Mantener actualizada la implementación para que sea compatible con los navegadores de acuerdo al proceso de integración de WebRTC en los mismos.



JavaScript

Convertir la implementación en una API de modo que cualquier desarrollador pueda incrustar fácilmente y de forma transparente un reproductor P2PSP en sus aplicaciones.



Google Chromecast

Portar el sistema a Google Chromecast para conseguir ejecutar un peer directamente en el televisor.

Conclusiones


Redes P2P

Las redes P2P son una alternativa al tradicional cliente-servidor para el streaming de contenido en directo.



Ajustes

Aunque deben realizarse algunas mejoras, la Web ofrece (o lo hará en breve) la funcionalidad suficiente para desarrollar sistemas masivos de P2PTV.

Enlaces de interés


> Web oficial del protocolo P2PSP

> P2PSP en Launchpad

> Estado de WebRTC

> Streaming entre navegadores

> Blog de Cristóbal Medina

Agradecimientos



Concurso universitario de software libre


Concurso universitario de software libre


Concurso universitario de software libre


Concurso universitario de software libre


Gracias!