# TopBT

TopBT (originalmente llamado Top-BT), es un consciente de la topología cliente BitTorrent implementado con la base de código de Vuze versión 4.0.0.4. Es, por tanto, software libre de código abierto liberado bajo licencia GNU General Public License. Su desarrollo es el resultado de la investigación de la Universidad Estatal de Ohio. El "Top" en su nombre significa "Topología" y se refiere a la función de conciencia de la topología de red del programa. Este programa descubre sus lugares de red más cercanos a sus compañeros conectados activamente mediante el envío de paquetes a sus pares conectados y la inspección de sus respuestas. A través del conocimiento de la topología, TopBT puede y tiene como objetivo reducir el tráfico de red innecesario y al mismo tiempo, en promedio, mantener su velocidad de descarga. El documento "TopBT: a topology-aware and infrastructure-independent BitTorrent client" describe cómo funciona.
Los resultados de evaluación de TopBT muestran que puede alcanzar una velocidad de descarga comparable y al mismo tiempo reducir el tráfico de descarga de 25 % en promedio.
Para un estudio completo de sistemas de tipo BitTorrent, consulte "Measurement, analysis, and modeling of BitTorrent-like systems" ("Medición, análisis y modelado de sistemas BitTorrent")

## Marco del sistema TopBT
### Descubriendo la ruta de acceso más próxima

Un cliente de TopBT utiliza los siguientes pasos para medir la proximidad de la ruta.

#### Sondeo de rutas de conexión

Esto se hace con Ping TCP y Traceroute (usando herramientas estándar). Los pasos son:
* Los valores iniciales de TTL (tiempo de vida) de paquete se limitan a varios.
* El examinador de enlace-hop comprueba el valor de TTL del paquete de respuesta.
* Se utiliza Ping TCP basado en SYN/ACK o paquetes RST para explorar hosts más remotos.
En la mayoría de los sistemas, el "ping" normalmente se implementa mediante la facilidad ICMP ECHO. Un host de ping envía un paquete ICMP_REQUEST al destino dado. Cuando no hay ningún dispositivo de filtrado descarta el paquete y llega a destino, el host de destino crea un paquete ICMP ECHO_REPLY con la misma carga y lo envía como un mensaje de respuesta.
Debido a los cortafuegos y filtros de paquetes ampliamente implementados en enrutadores y hosts finales, un cliente de TopBT con frecuencia no obtiene respuesta para los paquetes de traceroute y ping enviados. Para obtener una tasa de respuesta alta, un cliente de TopBT envía ping TCP en su lugar. Es decir, el cliente envía paquetes de TCP SYN a los pares y extrae los valores TTL de los paquetes SYN/ACK o RST posteriores.

#### Cálculo de saltos de enlace

Los resultados del ping y Ping TCP devueltos por pares remotos contienen valores TTL al llegar al host de búsqueda original. Dependiendo de los sistemas operativos de los pares (compañeros) remotos, a los valores iniciales TTL de un paquete de respuesta se les pueden poner valores diferentes. Los valores TTL iniciales típicos y comunes son entre 255 (en la mayoría de sistemas UNIX), 128 (Windows NT/2000/XP), 64 (Linux y Compaq Tru64) y 32 (Windows 95/98/ME). Estudios anteriores han mostrado que el 95 % de las rutas de transmisión a través de Internet tienen link-hops de no más de 30 saltos de enlace. Por lo tanto, basándose en el TTL de los paquetes regresados, los programas pueden inferir el TTL inicial de los paquetes y, por tanto, los enlaces de salto (link-hops). El TTL inicial del paquete se puede inferir a partir del TTL del paquete devuelto. De ahí se deduce el enlace de salto.

#### Tratamiento asimétrico traceroute rutas

La ruta de acceso desde un host de TopBT a un par (interlocutor) remoto a través de la cual pasan los paquetes traceroute, conocida como ruta de reenvío, puede diferir de la ruta inversa a través de la cual el par o interlocutor remoto llega a este host. Esto es porque las tablas de enrutamiento en enrutadores de borde de puerta de enlace pueden dictar diferentes caminos debido a su naturaleza autónoma.
Para superar esta diferencia, dos hosts conectados pueden intercambiar datos AS-hop entre sí, para que un host pueda utilizar proximidad de ruta inversa para su proceso de selección de pares.

#### Manejo de redes de múltiples protocolos Label Switching (MPLS)

En grandes ISP donde se implementa el multiprotocolo de cambio de etiquetas (MPLS), los encaminadores de cambio de etiqueta (LSRs) intercambian etiquetas para decidir las rutas de acceso de reenvío de paquetes entrantes. Los enrutadores en el núcleo de la red MPLS se ocultan desde traceroute y ping basado en IP routing. Afortunadamente, como los enrutadores de entradas (ingresos) y salidas (egresos) de la red MPLS aparecerán en el trazado de traceroute, los AS hops no se ven afectados por MPLS.
El ping MPLS, cuando esté disponible en un host de TopBT, puede ayudar a calcular los hops o saltos de enlace a sus compañeros.

### Monitoreo de las tasas de conexión

Para cada paquete que un cliente TopBT envía o recibe, el cliente realiza el seguimiento del par al que van o del cual proceden los datos.
Mediante el método del promedio o media móvil, en una ventana de tiempo que se desliza hacia adelante, el cliente cuenta el total de bytes transmitidos y recibidos y divide las sumas por el tamaño de la ventana de tiempo para obtener tasas de descarga/carga de conexión.

## Software TopBT

Hay una versión de TopBT tanto para Windows como para Linux, que ahora se basan en Vuze. Solía basarse en LH-ABC y BitTornado.

## Historial de versiones

* TopBT 2.2: lanzado el 24 de marzo de 2010
* TopBT 2.0: lanzado el 10 de septiembre de 2009
* TopBT 1.5: lanzado el 22 de enero de 2009
* TopBT 1.1: lanzado el 23 de octubre de 2008
* TopBT 1.0: lanzado el 24 de agosto de 2008