17 May 2009

MEDICIÓN DE ANCHO DE BANDA USANDO NetCat y Wireshark

Netcat es una herramienta de red bajo licencia GPL, que permite a través de un intérprete de comandos y con una sintaxis muy sencilla abrir puertos TPC en un host (quedando netcat a la escucha), estableciendo un socket entre el cliente y el servidor, asociar un shell a un puerto en concreto para conectarse al intérprete bash de Linux remotamente y forzar conexiones UDP/TCP. Este socket es una herramienta muy útil para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos.

Se necesita: dos maquinas con NetCat y una con Wireshark(sniffer)

El uso de estas herramientas para el calculo del ancho de banda, no proporcionan datos extremadamente certeros, solo sirven como comprobación y comparación con las mediciones realizadas con otro soft como por ejemplo: Iperf, procedemos de la siguiente manera: transferimos un archivo de tamaño conocido, mediante el sniffer calculamos el tiempo en que tarda en transferirse completamente y haciendo la siguiente cuenta obtenemos el ancho de banda:

W (Bps) = carga útil (Bytes) / tiempo de transmisión (seg)

los pasos correspondientes en ambos host son los siguientes:

1- ejecutamos en el host A (ip 192.168.61.5):

#nc -l -p 8001

con la opción -l de decimos que escuche y con la opción -p le especificamos el puerto

2- ponemos el sniffer a escanear

3- en el host B (ip 192.168.61.2)

#nc -q 3 192.168.61.5 8001 <>

donde -q 3 indica el numero de segundos que espera antes de cerrar la conexión y 12.mp3 es el archivo a transferirse

4- paramos el sniffer, vamos a la opción del menú superior Statitics y luego Flow Graph, alli podemos apreciar el siguiente gráfico:

Donde se puede observar el comienzo de la transmisión de tres paquetes seguidos de datos antes de recibir la confirmación y continuar con el envío, el tiempo del primer paquete es de 0.118730 seg y el de llegada del ACK confirmando esa secuencia de datos es 0.114131 seg, la resta de estos dos tiempos es el tiempo que tardo en transferirse estos tres paquetes.

Sitúandonos en estos paquetes en la pantalla principal, podemos obtener la cantidad de datos en Bytes de cada paquete, que es de 1448 Bytes, si la cantidad de paquetes es 3, multiplicando obtenemos los datos transferidos en ese tiempo, que es 1448 bytes * 3 = 4344 Bytes.

La división del dato anterior por el tiempo calculado nos proporciona una aproximación de la velocidad de transferencia o ancho de banda del enlace, es:

W = 1448 bytes * 3 = 4344 Bytes / (0.114131s - 0.118730s) = 944553,16 B = 7556425,3098 bps / (1024*1024) = 7,206368742 Mbit/s

Cabe aclarar, que esta medición es estimativa y solo sirve como comprobación con el dato proporcionado por Iperf, ya que se incurre en diversos errores, tales como: los tiempos proporcionados por el sniffer no son extremadamente exactos, no se tuvo en cuenta paquetes perdidos o demorados por el enlace ni tampoco el tamaño de las cabeceras TCP.

No comments: