¿Es posible una red P2P pura y existe una?

Oreja
La primera vez que un nuevo compañero desea conectarse a la red P2P, debe comunicarse con sus pares conocidos (super pares, pares raíz, pares de arranque, pares de citas) para conocer las direcciones de los otros pares. Esto se llama proceso bootstrap (ver nodo Bootstrapping).

Las direcciones de los pares conocidos se envían en una lista junto con el software del cliente o se cargan dinámicamente desde cachés web.

Los nuevos pares luego almacenan las direcciones de los pares que aprendieron del súper par. La segunda vez, los nuevos pares pueden conectarse directamente a esas direcciones, sin contactar primero con el súper par.

Pero si un par ha estado desconectado durante algún tiempo, la mayoría de sus direcciones almacenadas se vuelven inválidas porque son direcciones IP dinámicas. Si el par no se conecta a la red P2P utilizando las direcciones almacenadas, inicia el proceso de arranque nuevamente utilizando los super pares.

Escalada
Durante el fuerte crecimiento de la red, muchos pares acceden a los súper pares para conectarse a la red P2P. Luego, el súper par se convierte en el cuello de botella y un punto único de falla en un sistema completamente descentralizado. Si los súper pares se sobrecargan, no pueden unirse nuevos pares al sistema, lo que impide un mayor crecimiento de la red.

Recuperación
Si toda la red P2P se rompe debido a un incidente en toda la red y todos los pares intentan reconectarse al mismo tiempo, esto lleva a una carga extrema en los súper pares.
Esto evitaría una recuperación rápida, ya que los pares no se conectarían pero seguirían atando y causarían una carga adicional.
Esos problemas se han experimentado en la práctica en la red de Skype: Alta escalabilidad – Alta escalabilidad – Skype falló en la prueba de escalabilidad de arranque: ¿P2P es fundamentalmente defectuoso?

Seguridad
Otro problema es que los súper pares hacen que toda la red P2P sea vulnerable debido a su naturaleza centralizada. Tanto el bloqueo como la observación de toda la red P2P se hacen posibles simplemente bloqueando / observando los pocos nodos súper pares.

Bootstrap distribuido
Es posible implementar un algoritmo de arranque totalmente distribuido, que

  • elimina a los súper pares como el último elemento centralizado, como cuello de botella y punto único de falla en un sistema distribuido de otro modo.
  • proporciona una escala orgánica también para el procedimiento de arranque.
  • asegura una recuperación rápida en caso de un incidente en todo el sistema.
  • hace que la red P2P sea inmune al bloqueo o monitoreo de super pares.

Debe analizar qué rangos de IP han estado utilizando sus pares en el pasado con mayor frecuencia. Luego, intenta conectarse a direcciones aleatorias dentro de ese rango.
Funciona bien para redes p2p grandes, donde la posibilidad de contactar a un par dentro de los rangos de IP identificados es alta, pero es más lenta que una rutina de arranque centralizada.

La búsqueda web de igual a igual de FAROO está utilizando una rutina de arranque totalmente descentralizada como mecanismo de respaldo.