Category: P2P


Los riesgos de abandonar las tecnologías P2P

Aun recuerdo la primera vez que usé eDonkey2000 cuando todavía era un niño, tuve muchas impresiones contradictorias. Por un lado me pareció algo excesivamente complicado… e incluso lento, pero por otro me atrajo muchísimo la idea de compartición. La descentralización que permitía era todo un hito, así como la menor dependencia de ciertas webs, empresas, o personas que se podía conseguir con él. En esa época no tenía ni pajolera idea ni de redes ni de informática en general (aunque sabía ya mucho más de lo que sabe la mayoría de la gente hoy en día, algo que me parece bastante triste). En el momento que apareció eMule ante mi vista salté inmediatamente a él porque era un software netamente superior, más manejable e intuitivo, y estaba por esa época iniciándome en el mundo del software libre.

Soy una persona que tiene mucha curiosidad por naturaleza, y casi siempre que me surge una duda voy presto a intentar resolverla, a buscar el dato que me falta en Internet. Pues bien, la tecnología P2P no escapó a mi curiosidad y me puse a investigar, descubrí las diferentes topologías de red, comprendí la razón de ser de las esperas (las puñeteras colas, la necesaria redundancia en las transmisiones de datos para reducir la tasa de errores.. etc) y muchas cosas más. Entendí entonces que la red ed2k no era lo suficientemente “buena”, que seguía habiendo una gran dependencia. En realidad la red e2dk es semi-centralizada… lo que quiere decir que precisa de servidores (aunque no sean fijos) para realizar las búsquedas y encontrar a otros contactos (más tarde pasaremos a describir los riesgos de la centralización). Durante mis tardes de “investigación” descubrí la red Gnutella (realmente descentralizada) y cuando me estaba planteando saltar los de eMule se pusieron las pilas y añadieron soporte para la red Kademlia (en realidad red Kad, basada en el protocolo Kademlia) que eliminaba la dependencia de servidores. Desde entonces sigo usando eMule… aunque ya seguiré con eso después.

Ahora vamos al quid de la cuestión. eMule se hizo muy popular en su momento, pero rápidamente fue desbancado por BitTorrent y otros del estilo basados en el mismo protocolo (uno muy popular es Ares, que tiene soporte para varios protocolos, en particular BitTorrent). BitTorrent es un protocolo que permite descargas ultrarrápidas sin necesidad de las típicas colas de espera, pero tiene como contrapartida la necesidad de unos servidores llamados trackers para poder realizar las busquedas (a grandes trazos). Después de eso la gente saltó directamente a las descargas directas (Rapidshare, Megaupload, etc) ya que las velocidades de transmisión de las redes actuales permiten descargar grandes bloques de información sin tener que hacerlo a lo largo de varios días, se puede hacer en una única sesión y sin tener que subir datos a la red (las velocidades de subida en España son muy bajas) y ahí está el gran error.

En redes descentralizadas como Kademlia las búsquedas son una tarea sencilla y el material persiste durante mucho tiempo, además éstas redes son resistentes a ataques, si se hace caer un nodo siguen funcionando como si nada hubiera pasado. En sistemas como BitTorrent las búsquedas se transforman en una tarea mucho más compleja y se empieza a depender de servidores, por lo que esas redes son vulnerables ante ataques realizados a nodos estratégicos de la red, también está el inconveniente de que el material desaparece muy rápidamente de la red. En el caso de las descargas directas el problema se torna aún más grande, los ataques pueden tener consecuencias mucho peores, no solo se dificultan las búsquedas al desconectar los servidores sino que además se imposibilita la descarga, además el material tampoco es que dure mucho en esos sistemas. Buscar material alojado en servidores es una tarea de chinos ya que no hay buenos buscadores especializados en eso.

Para que nos hagamos a la idea, los sistemas centralizados son tan débiles que no hace falta ni hacer caer el servidor, con que nuestro ISP bloquee su IP ya es suficiente. Se nos pueden hacer otras jugarretas, como limitar la velocidad de descarga (Parece que Telefónica ya lo está haciendo en algunos casos), registrar de forma mucho más sencilla quién se baja qué (lo que hace peligrar nuestra privacidad y nuestra seguridad jurídica también dependiendo de donde vivamos), etc.

Recientemente la tecnología P2P ha sufrido un “gran parón” (en cuanto a la compartición de datos, en otros ámbitos ha triunfado, como con Spotify), eMule hace mucho tiempo que no añade innovaciones (y nunca ha habido una versión decente de éste para GNU/Linux) y los pocos que tienen novedades son los clientes de BitTorrent… se debería incentivar el desarrollo de esas alternativas, añadiendo soporte para cifrado de las comunicaciones y otras mejoras de seguridad que permitan anonimizar las conexiones, así como mejorar los clientes para GNU/Linux y Mac, que siempre van a la zaga de los existentes para MS Windows. Existen alternativas realmente seguras tales como Freenet o GnuNet, pero casi nadie las usa y por el momento son extremadamente lentas (en parte debido a la poca gente perteneciente a esas redes, alcanzada la masa crítica la cosa sería diferente). Debemos adelantarnos a las leyes restrictivas que puedan aparecer en un futuro y tener a punto tecnologías que nos permitan evadir los sistemas de control autoritario que muchos quieren imponernos. Si no actuamos a tiempo podría llegar el momento en el que los sistemas de control consiguieran impedir la difusión de la tecnología que nos serviría para evadirlos, es una típica carrera de armamento, o levantamos unas buenas defensas o nos acribillarán.

Saludos!

Tivion and Kraken

A finales de septiembre empezó el Concurso Universitario de Software Libre (CUSL), éste año no me presenté por que no tenía claro que pudiera dedicarle tiempo a ningún proyecto y ya tenía los antecedentes del año anterior, pero no por eso he perdido el interés en él.

Entre los proyectos concursantes hay dos proyectos bastante interesantes relacionados con el streaming de video. Estos son Tivion y Kraken, dos proyectos con enfoques muy diferentes y también dignos de atención.

Kraken es un proyecto dedicado al streaming de video vía redes descentralizadas p2p, pero con ciertas innovaciones técnicas que permitirían ajustar dinámicamente la calidad del video al ancho de banda disponible de forma dinámica. Podéis saber más de él a través de su blog: http://matachana.net/kraken/blog/ . Aviso: por el momento solo se trata de vaporware, estudios y documentos, no hay una implementación, aunque parece que el nivel técnico es alto y tiene muchas probabilidades de ver la luz :) .

Por otro lado Tivion es un programa dedicado a ver canales de televisión de todo al mundo a través de Internet, ahora mismo está en su versión 0.03, disponible para Ubuntu (Jaunty, Karmic y la futura Lucid, en 32 y 64 bits) y para Arch. El anuncio oficial de la última release lo podéis encontrar el blog de Shakaran: http://shakaran.es/blog/2009/12/tivion-0-0-3-opiron-liberado/ . Personalmente lo he estado probando y va bastante bién, os lo recomiendo si queréis ver algún programa de televisión en vuestro ordenador y mejor aún, con un programa libre :) .

Saludos!

Omemo P2P

Buenas, hoy he empezado a ser BetaTester del programa p2p Omemo aparecido recientemente de la mano de Pablo Soto.

Mi primera impresión: un aspecto muy cuidado.
Mi segunda impresión: Pocos archivos disponibles en la red (normal, hay una base de usuarios extremadamente pequeña).
Mi tercera impresión: Velocidad de publicación muy elevada (subida de archivos a la red).

Ahora lo comentaré todo un poco más, en un principio esta pieza de software da muy buena impresión, sobre todo para ser una versión beta. Se trata de un programa p2p que permite compartir no sólo archivos, sinó espacio de disco, es decir, todos los usuarios ceden una pequeña parte de su disco duro creando una gran unidad virtual de almacenamiento en la que todos pueden dejar archivos y descargarlos.

Como ya he dicho anteriormente, este programa ofrece una interfaz bonita y sencilla de manejar, a la vez que ofrece una velocidad de subida muy alta. Ahora bien, lo que es la descarga, lentísima. Pero no nos equivoquemos, todavía no se cual es la causa, si la pequeña cantidad de usuarios que hay en la red o un fallo en el diseño del protocolo, aunque me decanto más por la primera opción, sobre todo por el hecho de que el director de proyecto es un programador con experiencia.

Como no, he encontrado fallos, y éstos no sé si se deben a que se trata de una versión beta o a que ése es el funcionamiento que quieren que siga los desarrolladores, sin opción a cambiarlo.

· La estructura jerarquizada de los archivos, organizados en carpetas puede llevar a confusiones, no todo se puede organizar jerarquicamente, por algo surgió la teoría de conjuntos. La solución podría ser que se le pudiesen adjuntar metadatos a los archivos para facilitar las búsquedas.

· No existe un motor de búsqueda automatizada, para buscar archivos se tiene que ir rastreando los directorios donde se cree que puede estar el archivo, eso significa que al tiempo de busqueda de archivos dentro de un directorio se le tiene que sumar el tiempo que conlleva la lentitud humana.

¿Que más puedo decir? No lo sé, supongo que ya os iré dando algunos datos, aunque de momento Omemo promete. ;)

Recientemente he estado leyendo sobre sistemas GRID , dichos sistemas se realizan para repartir la carga de trabajo de cálculos pesados entre multitud de ordenadores que harán pequeñas partes de los cálculos para luego integrarlos en un único resultado. Muchos de éstos sistemas estan aglomerados en grandes salas de supercomputadores, y muchos otros estan basados en la colaboración de la gente no investigadora, que cede ciclos de reloj de su cpu cuando sus computadores no están ejerciendo ninguna actividad por parte de los usuarios.

Ahora bien, aquí tenemos un pequeño problema: los usuarios de a pié normalmente no pueden acceder a los recursos de los GRID, tan sólo pueden colaborar donando poténcia de cálculo… lo que me llevó a pensar sobre si sería posible crear una red P2P a modo de GRID, en la que se cediera potencia de cálculo, o se solicitara en función de las necesidades del momento.

Pongamos un ejemplo sencillo y bastante… ridículo, pero servirá: Supongamos que quiero calcular el factorial de 3.000.000, ésta operación consiste en alrededor de 3.000.000 de multiplicaciones consecutivas.

factorial(n) = n·(n-1)·(n-2)·(n-3)·…·3·2

Hay que decir que si hago el factorial de 16536 obtengo un resultado de 62577 cifras (en base 10), imaginen cuantas cifras tendría el resultado del factorial de 3.000.000 , la verdad es que muchísimas. ¿Qué se podría hacer para agilizar el cálculo? Pues multiplicar paralelamente diferentes partes del producto total. Por ejemplo, un PC multiplicaría de 2 a 40.000 , otro de 40.000 a 70.000 , otro de 70.000 a 90.000 … y así hasta el final (no he ajustado demasiado bien los números para que todos los ordenadores tuvieran una carga semejante, pero éso es indistinto ahora mismo).

Una vez calculados los primeros resultados, se podría obtener el resultado final a partir de ellos. Como vemos, existen algunos problemas que se pueden paralelizar, es decir, resolver sus partes no de forma secuencial sinó todas a la vez (por que no dependen unas de otras). ¿De qué serviría todo ésto? Pues para aprovechar la potencia de cómputo de los ordenadores actuales, que se está desperdiciando, para acercar a todo aquel que no dispone de medios la capacidad de ejecutar cálculos importantes. Aquí sólo podemos ver dos ventajas (por que no soy muy ducho en explicar los beneficios que reporta), pero fijémonos en que todo ésto podría repercutir en un mejor rendimiento para los científicos: físicos, matemáticos, químicos, biólogos, o para estudiar los sistemas económicos mundiales…

Pero no nos olvidemos de lo siguiente… si alguien ya ha hecho un cálculo… para qué volver a hacerlo? Éste sería otro de los beneficios de la red P2P, obviamente para cálculos simples no sale a cuenta efetuar una búsqueda dentro de la red, y ni tan siquiera saldría a cuenta paralelizar (hay un pequeño coste computacional en la sincronización y el viaje de los datos a través de la red), pero para cáculos grandes, tener resultados almacenados, ya sea en memoria RAM o en el disco duro puede ser una gran ventaja. Por ejemplo, és muy posible que fuera más rápido buscar el factorial de 3.000.000 y enviarlo a través de la red (en caso de que estuviera calculado) que distribuir el cálculo entre montondes de ordenadores y esperar los resultados. (Ojo, si ésto no fuera cierto para el caso 3.000.000, tranquilos, lo sería para algun otro número no muy lejano).

Está claro que diseñar una red de tales características y que sea realmente eficiente tiene una dificultad intrínseca muy elevada (Sólo hace falta pensar en la dificultad que tendría el ordenador para determinar si un problema se puede paralelizar, y de qué forma hacerlo, lo que a su vez también consumiría potencia de cálculo) , pero no por ello dudo de que sea posible diseñarla y ponerla en práctica . Tenémos que avanzar mucho en aspectos como este, la comunidad científicotécnica tiene que conseguir el apoyo del ciudadano acercándose a él, y una vía sería permitirle acceder a resultados de sus investigaciones, incentivar su curiosidad.

Powered by WordPress | Theme: Motion by 85ideas.