Featured image of post Tecnología de redes: Explicación técnica de BitTorrent - El mecanismo para distribuir eficientemente archivos gigantes

Tecnología de redes: Explicación técnica de BitTorrent - El mecanismo para distribuir eficientemente archivos gigantes

Aunque decenas de miles de personas descarguen simultáneamente una imagen de sistema operativo de varios gigabytes, el servidor no se cae. Explicamos el innovador algoritmo de división de archivos e intercambio de datos de la obra maestra del P2P, 'BitTorrent'.

1. El protocolo que revolucionó el sentido común de las descargas

¿Qué pasaría si decenas de miles de personas intentaran descargar simultáneamente datos de varios gigabytes, como una imagen de instalación de Linux o un archivo de actualización de un juego masivo? Con un servidor web normal (descarga HTTP), el ancho de banda se saturaría y el servidor se caería.

Para resolver esto, en lugar de “las empresas pagan para preparar varios servidores superpotentes (CDN)”, en 2001 Bram Cohen inventó un método revolucionario llamado “BitTorrent”, que consiste en “tomar prestado el poder de las PC de los propios usuarios que están descargando para que se ayuden mutuamente a descargar”.

BitTorrent no es simplemente una herramienta para descargas ilegales. Incluso hoy en día, representa una parte significativa del tráfico de Internet mundial, y es utilizado por las principales empresas de TI para implementar rápidamente datos masivos en sus servidores internos. Es una de las obras maestras de los “algoritmos de distribución descentralizada” en la informática.

2. El poder de las piezas (fragmentación) y el enjambre (swarm)

La mayor invención de BitTorrent radica en el hecho de que maneja un solo archivo gigante dividiéndolo en “piezas (fragmentos que generalmente son bloques pequeños de alrededor de 256 KB a unos pocos MB)”.

En la descarga tradicional, se recibe secuencialmente desde el servidor desde el principio hasta el final del archivo. Sin embargo, en BitTorrent, las personas que participan en la descarga (el grupo llamado enjambre o swarm) comparten constantemente entre sí “quién tiene qué pieza”.

Luego, mientras recibes de otros usuarios (pares o peers) las piezas que no tienes, al mismo tiempo subes y entregas a otros usuarios que aún no las tienen, las piezas que tú ya has terminado de descargar.

  graph TD
    Seed["Semilla (Poseedor al 100%)"] -->|"Pieza 1"| PeerA["Par A (20% completo)"]
    Seed -->|"Pieza 2"| PeerB["Par B (40% completo)"]
    Seed -->|"Pieza 3"| PeerC["Par C (10% completo)"]
    PeerA <-->|"Intercambio de piezas 1 y 2"| PeerB
    PeerB <-->|"Intercambio de piezas 2 y 3"| PeerC
    PeerC <-->|"Intercambio de piezas 3 y 1"| PeerA
    Note over PeerA,PeerC: Los usuarios intercambian entre sí las piezas que les faltan como si fueran un rompecabezas

Gracias a este mecanismo, el servidor original (semilla o seed) ya no necesita enviar el archivo completo a todos los participantes. Siempre que pase cada pieza a una sola persona, los participantes la multiplicarán intercambiando las piezas del rompecabezas entre sí. Por lo tanto, ocurre el fenómeno mágico de que “cuantos más participantes haya, más rápida será la velocidad de descarga de toda la red”.

3. Algoritmo de “El más raro primero” (Rarest First)

Una de las razones por las que BitTorrent funciona de manera tan eficiente es el algoritmo inteligente llamado “El más raro primero (Rarest First)”, que determina el orden en que se descargan las piezas.

Si todos descargaran en orden empezando por “la primera pieza del archivo”, el enjambre se llenaría de “personas que solo tienen las piezas iniciales”, y habría muy pocos con las piezas finales. En este escenario, en el instante en que la semilla original desaparezca, nadie podría completar el archivo al 100%.

Por lo tanto, BitTorrent observa todo el enjambre y obliga a cada par a seguir la regla de “descargar con prioridad las piezas más raras (las menos abundantes) que no están circulando mucho en este momento”. De esta manera, todas las piezas se difunden uniformemente por la red, de modo que incluso si la semilla original desaparece, el archivo se puede completar solo con el intercambio entre los usuarios restantes.

4. Estrategia del “Ojo por ojo” (Tit-for-Tat): Eliminación de los polizones (Free Riders)

El mayor desafío en las redes P2P es la existencia de usuarios egoístas (polizones o free riders) que “solo reciben datos pero no suben (proporcionan) absolutamente nada a los demás”. Si solo hubiera este tipo de usuarios, el sistema colapsaría.

Para hacer frente a este problema, BitTorrent incorporó a nivel de protocolo una poderosa contramedida basada en la teoría de juegos llamada “Tit-for-Tat (Ojo por ojo)”.

El software cliente de BitTorrent mide constantemente “a qué velocidad me está subiendo los datos” para cada conexión individual. Luego, automáticamente realiza la acción de “enviar prioritariamente mis propios datos como agradecimiento solo a aquellos que me dan muchos datos (Choke/Unchoke)”.

En otras palabras, los usuarios que restringen la subida y se dedican “solo a recibir”, son juzgados por todos los demás usuarios como “ese no nos da datos, así que nosotros tampoco”, y sus conexiones son bloqueadas, lo que resulta en que su velocidad de descarga se vuelva extremadamente lenta. Es un algoritmo sorprendente diseñado de tal manera que comportarse de manera altruista (abrir la subida) se convierte en la solución óptima para satisfacer fines egoístas (acelerar la propia descarga).

5. Evolución de Tracker a DHT (El extremo de la descentralización)

En las primeras versiones de BitTorrent, se necesitaba un servidor central llamado “Tracker” para gestionar el directorio de “qué direcciones IP tienen este archivo”. Tenía la debilidad de que si el Tracker se caía, los usuarios no podían encontrarse entre sí.

Sin embargo, el BitTorrent actual, al incorporar una tecnología llamada DHT (Distributed Hash Table: Tabla de Hash Distribuida), ha hecho innecesarios incluso los servidores Tracker (Trackerless). Al colaborar las PC de los millones de usuarios que participan en la red para construir un “directorio distribuido” gigante, ha evolucionado hasta convertirse en el sistema descentralizado definitivo donde, incluso sin un servidor central, se puede encontrar a quienes tienen un archivo específico e iniciar la descarga.

6. Conclusión

BitTorrent es una tecnología que abandonó el concepto del siglo XX de “un servidor central gigante que distribuye a todos”, encarnando de manera brillante la filosofía original de descentralización autónoma de Internet de “reunir el poder de los individuos formando un enjambre”.

La lógica subyacente de “romper el archivo en pedazos finos”, “recolectar desde lo más raro” y “recompensar a los que cooperan”, continúa teniendo una gran influencia en el diseño de las tecnologías blockchain y el almacenamiento en la nube distribuido de hoy en día.

comments powered by Disqus