Redes P2P y protocolo

El término P2P es el acrónimo de la frase en inglés “Peer to Peer” que en español es “par a par” o punto a punto, esto quiere decir que es un tipo de red que no tiene un clientes ni servidores fijos, en cambio se compone de una serie de nodos que se comportan simultáneamente como clientes y como servidores respecto de los demás nodos de la red.

Este modelo de red contrasta con el modelo cliente-servidor, el cual se rige mediante una arquitectura monolítica donde no hay distribución de tareas entre sí, sólo una simple comunicación entre un usuario y una terminal, en la que el cliente y el servidor no pueden cambiar de roles.

Las redes de ordenadores Peer-to-peer (o «P2P») son redes que aprovechan, administran y optimizan el uso de banda ancha que acumulan de los demás usuarios en una red por medio de la conectividad entre los mismos usuarios participantes de la red, obteniendo como resultado mucho más rendimiento en las conexiones y transferencias que con algunos métodos centralizados convencionales, donde una cantidad relativamente pequeña de servidores provee el total de banda ancha y recursos compartidos para un servicio o aplicación. Típicamente, estas redes se conectan en gran parte con otros nodos vía «ad hoc».

Dichas redes son útiles para muchos propósitos, pero se usan muy a menudo para compartir toda clase de archivos que contienen: audio, video, texto, software y datos en cualquier formato digital. Este tipo de red es también comúnmente usado en telefonía VoIP para hacer más eficiente la transmisión de datos en tiempo real, así como lograr una mejor distribución del tráfico de la telefonía utilizando tecnología P2P.

Cualquier nodo puede iniciar, detener o completar una transacción compatible. La eficacia de los nodos en el enlace y transmisión de datos puede variar según su configuración local (cortafuegos, NAT, ruteadores, etc.), velocidad de proceso, disponibilidad de ancho de banda de su conexión a la red y capacidad de almacenamiento en disco.

Cualquier nodo puede iniciar, detener o completar una transacción compatible. La eficacia de los nodos en el enlace y transmisión de datos puede variar según su configuración local (cortafuegos, NAT, ruteadores, etc.), velocidad de proceso, disponibilidad de ancho de banda de su conexión a la red y capacidad de almacenamiento en disco.

Filosofía de las redes Peer-to-peer

El P2P se basa principalmente en la filosofía e ideales de que todos los usuarios deben compartir. Conocida como filosofía P2P, es aplicada en algunas redes en forma de un sistema enteramente meritocrático en donde «el que más comparta, más privilegios tiene y más acceso dispone de manera más rápida a más contenido». Con este sistema se pretende asegurar la disponibilidad del contenido compartido, ya que de lo contrario no sería posible la subsistencia de la red.

Aquellos usuarios que no comparten contenido en el sistema y con ello no siguen la filosofía propia de esta red, se les denominan «leechers»; los cuales muchas veces representan una amenaza para la disponibilidad de recursos en una red P2P debido a que únicamente consumen recursos sin reponer lo que consumen, por ende podrían agotar los recursos compartidos y atentar contra la estabilidad de la misma.

Aplicaciones de las redes P2P

En la actual Internet, el ancho de banda o las capacidades de almacenamiento y cómputo son recursos caros. En aquellas aplicaciones y servicios que requieran una enorme cantidad de recursos pueden usarse las redes P2P.

Algunos ejemplos de aplicación de las redes P2P:

  • Intercambio y búsqueda de ficheros. Quizás sea la aplicación más extendida de este tipo de redes. Algunos ejemplos son BitTorrent o la red eDonkey2000.
  • Sistemas de ficheros distribuidos, como CFS o Freenet.
  • Sistemas de telefonía por Internet, como Skype
  • A partir del año 2006 cada vez más compañías europeas y americanas, como Warner Bros o la BBC, empezaron a ver el P2P como una alternativa a la distribución convencional de películas y programas de televisión, ofreciendo parte de sus contenidos a través de tecnologías como la de BitTorrent.
  • Cálculos científicos que procesen enormes bases de datos, como los bioinformáticos.

Gráfico de un enjambre mostrando la distribución de los peers con sus respectivas trasmisiones y recepciones de datos dentro de un torrent en Azureus

Las redes P2P pueden ser también usadas para hacer funcionar grandes sistemas software diseñados para realizar pruebas que identifiquen la presencia de posibles drogas. El primer sistema diseñado con tal propósito fue desarrollado en 2001, en el Centro Computacional para el Descubrimiento de Drogas (Centre for Computational Drug Discovery) en la prestigiosa Universidad de Oxford con la cooperación de la Fundación Nacional para la Investigación del Cáncer (National Foundation for Cancer Research) de Estados Unidos.

Actualmente, existen varios sistemas software similares que se desarrollan bajo el auspicio de proyectos como el proyecto de Dispositivos Unidos en la Investigación del cáncer (United Devices Cancer Research Project). En una escala más pequeña, existen sistemas de administración autónoma para los biólogos computacionales, como el Chinook, que se unen para ejecutar y hacer comparaciones de datos bioinformáticos con los más de 25 diferentes servicios de análisis que ofrece. Uno de sus propósitos consiste en facilitar el intercambio de técnicas de análisis dentro de una comunidad local.

Las instituciones académicas también han comenzado la experimentación con compartición de archivos, como es el caso de LionShare.

Características

  • Escalabilidad. Las redes P2P tienen un alcance mundial con cientos de millones de usuarios potenciales. En general, lo deseable es que cuantos más nodos estén conectados a una red P2P mejor será su funcionamiento. Así, cuando los nodos llegan y comparten sus propios recursos, los recursos totales del sistema aumentan. Esto es diferente en una arquitectura del modo servidor-cliente con un sistema fijo de servidores, en los cuales la adición de más clientes podría significar una transferencia de datos más lenta para todos los usuarios. Algunos autores advierten de que si proliferan mucho este tipo de redes, Cliente-Servidor, podrían llegar a su fin, ya que a cada una de estas redes se conectarán muy pocos usuarios.
  • Robustez. La naturaleza distribuida de las redes peer-to-peer también incrementa la robustez en caso de haber fallos en la réplica excesiva de los datos hacia múltiples destinos, y —-en sistemas P2P puros—- permitiendo a los peers encontrar la información sin hacer peticiones a ningún servidor centralizado de indexado. En el último caso, no hay ningún punto singular de falla en el sistema.
  • Descentralización. Estas redes por definición son descentralizadas y todos los nodos son iguales. No existen nodos con funciones especiales, y por tanto ningún nodo es imprescindible para el funcionamiento de la red. En realidad, algunas redes comúnmente llamadas P2P no cumplen esta característica, como Napster, eDonkey2000 o BitTorrent.
  • Los costos están repartidos entre los usuarios. Se comparten o donan recursos a cambio de recursos. Según la aplicación de la red, los recursos pueden ser archivos, ancho de banda, ciclos de proceso o almacenamiento de disco.
  • Anonimato. Es deseable que en estas redes quede anónimo el autor de un contenido, el editor, el lector, el servidor que lo alberga y la petición para encontrarlo siempre que así lo necesiten los usuarios. Muchas veces el derecho al anonimato y los derechos de autor son incompatibles entre sí, y la industria propone mecanismos como el DRM para limitar ambos.
  • Seguridad. Es una de las características deseables de las redes P2P menos implementada. Los objetivos de un P2P seguro serían identificar y evitar los nodos maliciosos, evitar el contenido infectado, evitar el espionaje de las comunicaciones entre nodos, creación de grupos seguros de nodos dentro de la red, protección de los recursos de la red… En su mayoría aún están bajo investigación, pero los mecanismos más prometedores son: cifrado multiclave, cajas de arena, gestión de derechos de autor (la industria define qué puede hacer el usuario, por ejemplo la segunda vez que se oye la canción se apaga), reputación (sólo permitir acceso a los conocidos), comunicaciones seguras, comentarios sobre los ficheros…

Problemas de funcionamiento

La mayor parte de los nodos de Internet no disponen de una dirección IP fija o siquiera accesible para otros nodos de Internet. Este es el caso, por ejemplo, de los nodos que se conectan a través de redes locales como Wifi o Ethernet, de aquellos que tienen algún tipo de Cortafuegos y NAT o de los que se conectan a través de la mayor parte de los ISPs del mundo. Para el correcto funcionamiento de una red P2P, hay que resolver dos problemas fundamentales: cómo se encuentra un nodo que ya esté conectado a la red P2P y cómo se conectan los nodos sin dirección IP pública entre ellos.

Para resolver el primer problema, la solución habitual es realizar una conexión a un servidor (o servidores) inicial con dirección bien conocida (normalmente IP fija) que el programa P2P tiene almacenada. Este servidor inicial se encarga de mantener una lista con las direcciones de otros nodos que están actualmente conectados a la red. Tras ésto, los clientes ya tienen información suficiente para entrar en la red y pueden intercambiar información con otro nodos, ya sin intervención de los servidores iniciales.

Para resolver el problema de conexión cuando los nodos no tienen dirección pública, estos se conectan a través de otro nodo que funciona como proxy de la conexión. Los dos nodos se conectan al proxy y éste envía la información que llega de uno al otro. Cualquier nodo con una dirección IP pública puede ser escogido como proxy de una conexión entre dos nodos. Por ejemplo, en la red Skype a través de nuestro ordenador pueden pasar conversaciones de otras personas. En estos casos, es imprescindible la implementación de algún mecanismo de seguridad para evitar que los proxies pueden llegar a entender la comunicación entre los dos nodos.

Redes, protocolos y aplicaciones

  • Ares: Ares Galaxy, FileCroc, KCeasy, Warez P2P
  • BitTorrent: AllPeers, ABC [Yet Another BitTorrent Client], Azureus, BitComet, BitSpirit, BitTornado, BitLord, BitTorrent, BitTorrent.Net, Burst!, G3 Torrent, Lphant, mlMac, MLDonkey, QTorrent, Shareaza, Transmission, Tribler, µTorrent
  • CSpace: sistema de comunicaciones basado en peer-to-peer
  • Direct Connect network: DC++, NeoModus Direct Connect, BCDC++, StrongDC++
  • Domain Name System
  • eDonkey2000: aMule, eDonkey2000, eMule, LMule, Lphant, MLDonkey, mlMac, Shareaza, xMule, iMesh
  • FastTrack: giFT, Grokster, iMesh (y sus variantes sin adware incluyendo aiMesh Light), Kazaa (y todas sus variantes libres de adware como Kazaa Lite), KCeasy (plugin requerido), Mammoth, MLDonkey, mlMac, Poisoned
  • Freenet: Entropy (bajo su propia red), Freenet
  • GNUnet: GNUnet, (GNUnet-gtk)
  • Gnutella: Acquisition, BearShare, Cabos, Gnucleus, Grokster, iMesh, gtk-gnutella, KCeasy, Kiwi Alpha, LimeWire, FrostWire, MLDonkey, mlMac, Morpheus, Phex, Poisoned, Swapper, Shareaza, XoloX
  • Gnutella2: Adagio, Caribou, Gnucleus, iMesh, Kiwi Alpha, MLDonkey, mlMac, Morpheus, Shareaza, TrustyFiles
  • Kad (usando el protocolo Kademlia): aMule, eMule, Lphant (a partir de la versión 3.50), MLDonkey,
  • Lime Wire
  • MANOLITO/MP2P: Blubster, Piolet
  • MFPnet: Amicima
  • Napster: Napigator, OpenNap, WinMX
  • NEO Network: Morpheus
  • P2PTV tipo de redes: TVUPlayer, CoolStreaming, Cybersky-TV, TVants
  • Peercasting tipo de redes: PeerCast, IceShare, FreeCast
  • Usenet
  • WPNP: WinMX
  • Otras redes: ANts P2P, Applejuice, Audiogalaxy, Avalanche, CAKE, Chord, The Circle, Connecta 2000, Coral, Dijjer, EarthStation 5, FileTopia, Groove, Hamachi, iFolder, konspire2b, Madster/Aimster, MUTE, OpenFT, P-Grid, IRC, JXTA, KoffeePhoto, Peersites, MojoNation, Mnet, Octoshape, Omemo, Overnet, Scour, Skype, Solipsis, soribada, Soulseek, SPIN, Swarmcast, WASTE, Winny

Aplicaciones multi-red de codigo abierto [editar]

  • MLDonkey (BitTorrent, eDonkey2000, FastTrack, Gnutella, Gnutella2, Kademlia, FTP) (Windows, Linux, Mac OS X)
  • eMule (eDonkey2000, Kad Network) (Windows)
  • aMule (eDonkey2000, Kad Network) (Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Windows and Solaris Operating Environment)
  • FileScope (Gnutella, Gnutella2, eDonkey2000, OpenNAP) (crossplatform)
  • giFT (protocolo propio OpenFT, y con el uso de plugins – FastTrack, eDonkey2000, Ares, OpenNAP, Soulseek y Gnutella)
  • Gnucleus (Gnutella, Gnutella2) (Windows)
  • KCeasy (Ares, FastTrack (plugin requerido), Gnutella, OpenFT)
  • Shareaza (BitTorrent, eDonkey2000, Gnutella, Gnutella2) (Windows)
  • Napshare (MUTE, Key Network) (Linux, Windows)
  • Waste (WASTE) (Windows, Linux, Mac OS X)

Aplicaciones multi-red de codigo cerrado

  • Kiwi Alpha (Gnutella, Gnutella2) (Windows)
  • Morpheus (NEO Network, Gnutella, Gnutella2, BitTorrent) (Windows)
  • WinMX (Windows)
  • Zultrax (Gnutella, ZEPP) (Windows)
  • Lphant (y sus variantes sin adware como Lphant Plus), (eDonkey2000), (BitTorrent)
  • iMesh (Fasttrack, eDonkey2000, Gnutella, Gnutella2) (Microsoft Windows)

Clasificación de las redes P2P

Una posible clasificación de las redes P2P pudiera ser acorde a su grado de centralización:

Las tres topologías de red según los famosos grafos de Paul Baran que aplican también al diseño P2P

Redes P2P centralizadas

Este tipo de red P2P se basa en una arquitectura monolítica en la que todas las transacciones se hacen a través de un único servidor que sirve de punto de enlace entre dos nodos y que, a la vez, almacena y distribuye los nodos donde se almacenan los contenidos. Poseen una administración muy dinámica y una disposición más permanente de contenido. Sin embargo, está muy limitada en la privacidad de los usuarios y en la falta de escalabilidad de un sólo servidor, además de ofrecer problemas en puntos únicos de fallo, situaciones legales y enormes costos en el mantenimiento así como el consumo de ancho de banda.

Redes P2P «puras» o totalmente descentralizadas

Las redes P2P de este tipo son las más comunes, siendo las más versátiles al no requerir de un gestionamiento central de ningún tipo, lo que permite una reducción de la necesidad de usar un servidor central, por lo que se opta por los mismos usuarios como nodos de esas conexiones y también como almacenistas de esa información. En otras palabras, todas las comunicaciones son directamente de usuario a usuario con ayuda de un nodo (que es otro usuario) quien permite enlazar esas comunicaciones. Las redes de este tipo tienen las siguientes características:

  • Los nodos actúan como cliente y servidor.
  • No existe un servidor central que maneje las conexiones de red.
  • No hay un enrutador central que sirva como nodo y administre direcciones.

Redes P2P híbridas, semi-centralizadas o mixtas:

En este tipo de red, se puede observar la interacción entre un servidor central que sirve como hub y administra los recursos de banda ancha, enrutamientos y comunicación entre nodos pero sin saber la identidad de cada nodo y sin almacenar información alguna, por lo que el servidor no comparte archivos de ningún tipo a ningún nodo. Tiene la peculiaridad de funcionar (en algunos casos como en Torrent) de ambas maneras, es decir, puede incorporar más de un servidor que gestione los recursos compartidos, pero también en caso de que el o los servidores que gestionan todo caigan, el grupo de nodos sigue en contacto a través de una conexión directa entre ellos mismos con lo que es posible seguir compartiendo y descargando más información en ausencia de los servidores.