Uso avanzado de BitTorrent en I2P

Los que hayáis seguido el artículo introductorio al BitTorrent con I2P habréis podido comprobar que las velocidades que se consiguen son realmente bajas. Es el precio del anonimato. Sin embargo hay algunas cosas que podemos hacer para mejorar un poco la experiencia, aparte de obviamente conseguir un proveedor de acceso a Internet más rápido.

En primer lugar hay que ajustar correctamente el ancho de banda en la consola del router I2P. Toda la red I2P funciona como P2P, así que cuanta más gente comparta su conexión, y más rápida sea esta, mayor ancho de banda para todos.

El apartado de Túneles afecta a la relación entre anonimato y rendimiento de la conexión. Un número mayor de túneles debería aumentar el ancho de banda a costa de usar más CPU, mientras que reducir el número de saltos aumenta la velocidad a costa del anonimato.

Se puede observar que hay ajustes específicos para I2PSnark, que también permite ajustar las propiedades del cliente torrent bajo el botón de Configurar en su interfaz.

Se pueden encontrar recomendaciones para mejorar el rendimiento en la Wiki I2P (enlace I2P). También es recomendable abrir los puertos necesarios en el router externo y/o usar UPnP. De todas formas la velocidad estará limitada por el propio funcionamiento de I2P. Actualmente, aún sacrificando anonimato y teniendo una buena conexión de fibra simétrica, la mayor velocidad de descarga que han alcanzado algunos usuarios está alrededor de 150-200KB/s, siendo lo más habitual en torno a 20-30KB/s con los ajustes de privacidad recomendados (de serie). I2PSnark tampoco es la opción más eficiente, por eso se suele recomendar el uso de otros clientes adaptados a I2P.

Clientes alternativos

Hay otras posibilidades para compartir archivos en I2P. Existen clientes eDonkey/Kademlia y Gnutella, se comparte en foros distribuídos como Aktie o Syndie, en incluso en eepsites., pero lo más popular es el protocolo BitTorrent. A lo largo de la existencia de I2P se han creado forks de varios clientes torrent populares como Transmission o Deluge, hoy sin mantenimiento, y algún cliente específico para la red I2P como Robert. Este último solía recomendarse hasta hace relativamente poco, pero los plugins que necesita en el router están rotos con las últimas versiones de Java y ya no funciona (al menos de momento). Actualmente se utilizan los clientes Vuze y BiglyBT, ambos basados en Azureus/Java y usando el mismo plugin para conectarse a la red I2P. BiglyBT es un programa Open Source y gratuito. Podemos descargarlo aquí y el plugin para I2P (entre otros) aquí. También hay una guía de funcionamiento aquí.

Es importante recordar, si queremos preservar el anonimato, que BiglyBT está diseñado para funcionar como un puente entre la red I2P y la clearnet, así que hay que configurarlo apropiadamente según lo que pretendamos.

Torrentbox con una máquina de bajos recursos (experimental)

Dada la lentitud de I2P resulta muy conveniente utilizar una máquina dedicada que podamos dejar conectada 24/7, y se suele escoger para esto microservidores tipo Raspberry Pi (o similares) por su bajo consumo y nulo nivel de ruido, al no tener ventiladores. También podemos utilizar llegado el caso un PC viejo. Pero tanto el Router I2P oficial como los clientes torrent típicos (I2PSnark, Vuze, BiglyBT) están hechos en Java y resultan pesados para las máquinas menos al día y para estos microservidores. Existe una alternativa, pero aunque ya funciona razonablemente bien, debe considerarse experimental: I2pd

I2pd es una reimplementación de I2P en C++ y por lo tanto requiere muchos menos recursos. En su página oficial encontramos el código fuente, así como paquetes precompilados para Windows, varias versiones de Debian y Ubuntu, MacOs X, BSD e incluso Android. Además, se encuentra disponible en los repositorios oficiales de Debian Buster (como el router I2P Java, también). La configuración se realiza editando el archivo i2pd.conf, y la interfaz web es mucho más simple, sin las funciones del router Java:

Obviamente también necesitaremos un cliente torrent de bajos recursos, que podamos ejecutar en la misma máquina: XD.

Este es un programa escrito en Go que se controla mediante una herramienta de consola, o bien con una cómoda interfaz web:

Está en sus etapas iniciales de desarrollo, así que cabe esperar que tenga un número de fallos. Es recomendable utilizar la versión master de su GitHub, y aún así tiene algunas limitaciones: no puede crear torrents por si mismo (aún) y tiene algunos problemas con el sembrado inicial. Pero para descargas funciona perfectamente.

Un microservidor así configurado se puede dejar descargando durante semanas sin grandes problemas, simplemente revisando de vez en cuando que no haya muerto el servicio, pero de momento es un ejercicio experimental.