Archivos para Noviembre 2006

Propuesta de Proyecto

[...] Toda esta muchedumbre que ves es una pobre gente sin sepultura;
aquél, el barquero Caronte; éstos, a los que lleva el agua, los sepultados.
Que no se permite cruzar las orillas horrendas y las roncas
corrientes sino a aquel cuyos huesos descansan debidamente.
Vagan cien años y dan vueltas alrededor de estas playas;
sólo entonces se les admite y llegan a ver las ansiadas aguas.
(Libro VI, La Eneida, Virgilio)

Caronte pretende ser un sistema peer-to-peer (P2P) que permita la retransmisión y recepción de flujos multimedia (audio y vídeo) en tiempo-real.

Los sistemas tradicionales de streaming poseen arquitecturas del tipo cliente-servidor. Los clientes se conectan y solicitan los contenidos multimedia que ofrezcan dichos servidores. A medida que van llegando los flujos multimedia (o streams), son reproducidos por los receptores hasta que finaliza la retransmisión. Durante la retransmisión, se puede interaccionar en mayor o menor medida con la reproducción, dependiendo del tipo de contenidos y de los servicios ofrecidos.

Un ejemplo bastante conocido de este tipo de sistemas es YouTube. En YouTube un cliente accede vía web, localiza un vídeo y solicita su visionado. El servidor comienza a enviar los flujos multimedia y cuando llegan a la máquina del usuario son presentados. El cliente puede pausar, rebobinar, avanzar o parar la reproducción.
Pero no todo está limitado al envío de vídeo, también existe una gran número de emisoras de radio que emiten por la red. En este tipo de retransmisión la interacción con el cliente es poca, éste únicamente puede parar o pausar la reproducción.

Este tipo de arquitecturas tienen las siguientes desventajas o limitaciones:

  • escalabilidad: es necesario disponer de un gran ancho de banda para poder retransmitir contenidos a un alto número de clientes; las limitaciones para emitir flujos con gran calidad (tasas de compresión) serían las mismas.
  • ancho de banda: se puede producir un desaprovechamiento del ancho de banda si dos (o más) clientes solicitan los mismos contenidos. En este caso, sería necesario enviar a cada uno la misma información, a no ser que se encuentren dentro de una red multicast, con el consecuente mal gasto.
  • tolerancia a fallos: al ser servicios centralizados la tolerancia a fallos es menor que en un servicio distribuido.

Utilizando una red P2P, los usuarios colaborarían para retransmitirse entre si los distintos flujos multimedia. Un nodo enviaría los flujos a los distintos nodos que tenga enlazados; estos nodos a su vez lo retransmitirían a aquellos nodos hijos y así hasta que se todo el contenido se retransmita por toda la red P2P.

Las ventajas serían las siguientes:

  • nodos con poco ancho de banda podrían emitir a un gran número de participantes
  • mayor tolerancia a fallos al formarse una red distribuida entre todos los nodos

Aún así, el principal problema de estos sistemas sería la latencia de distribución de los flujos entre todos los nodos de la red, por lo que para entornos en los que sea imprescindible la recepción de estos contenidos en un breve espacio de tiempo (por ejemplo, una video conferencia) no sería apropiado utilizarlos.

Descensus Ad Inferos

Y entonces fue cuando a nosotros vi venir
en barco un blanco viejo por antiguo pelo
gritando: ¡Ay de vosotras, almas perversas!
¡No esperéis ya más de ver el Cielo!
Aquí vengo a llevaros a la otra orilla
a las tinieblas eternas, al calor y al hielo
(Canto III, La Divina Comedia, Dante Alighieri)

Así es como se aparece Caronte (o Carón) a Dante en La Divina Comedia en su viaje por el infierno; y así es como comienza comienza mi particular viaje por el “Infierno” que supone realizar un proyecto fin de carrera. Por lo menos esa es mi impresión y la de muchos que hemos pasado por esta experiencia anteriormente. No es que esté en contra de realizar este tipo de proyectos, de hecho, fue una de las experiencias más provechosas de la carrera y de la que más aprendí, pero hasta que no lo finalizas no lo sabes valorar. Los quebraderos de cabeza son continuos, la fase de escribir la memoria es una tortura, y el tiempo avanza demasiado rápido…

Caronte es el nombre de mi PFC (y del proyecto para el Concurso Universitario de Software Libre), y su finalidad es la de implementar un sistema P2P que permita la retransmisión y recepción de flujos multimedia (audio y vídeo) en tiempo real. En posteriores entradas, explicaré algunos conceptos sobre el P2P y el “streaming”, para que todo el mundo tenga claro el funcionamiento del proyecto.

El nombre de mi proyecto proviene de la mitología griega/romana. Para aquellos que lo desconozcan, Caronte era el barquero que trasladaba las almas de los muertos, a través del río/laguna/mar/charca Aqueronte/Estigia/… (los autores no se ponen de acuerdo) a las puertas del Hades, morada de los muertos. Recibía las almas de Hermes, y éstas debían pagar unos óbolos (moneda de la época), con los que habían sido enterrados sus cuerpos, para poder cruzar al otro lado. Si no pagaban, se quedaban en tierra vagando eternamente (aunque tal y como era el Hades, y la gente que por allí habitaba, es probable que ésto fuera preferible). La historia de por qué elegí este nombre esa bastante estúpida y aburrida, así que por el momento me la guardaré…

Por ahora nada más; me preparo para el descenso al infierno; cojo mis óbolos para pagar el transporte; y sigo los pasos de Odiseo (lo del paso de este hombre por el infierno es digno de elogio) y Eneas.

¡Qué comience el viaje y esperemos que la barca no se hunda!

Nota: los enlaces de la Wikipedia son en inglés porque creo que estos artículos son mucho más completos que en castellano.