You are on page 1of 11

Ingeniería telemática Redes de Ordenadores

Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

Redes de Ordenadores
Práctica 2: Medición de rendimiento en redes TCP/IP
Duración: 3 sesiones

Objetivos Realización de medidas en redes TCP/IP para la realización de análisis de


rendimiento. Estos análisis pueden servir para:

 Medir la utilización de enlaces para encontrar cuellos de botella.


 Seleccionar valores óptimos para diferentes parámetros.
 Caracterizar la carga de tráfico, e.g. para diseñar redes alternativas.
 Recopilar trazas de tráfico para realizar simulaciones.
 Validar modelos matemáticos de TCP.
 Depurar y verificar implementaciones de protocolos.

Tareas al realizar medidas


Fundamentos

La realización de medidas de red es una tarea compleja, dividida en varias subtareas:

1. Recopilación de datos. El primer paso consiste en la obtención de datos


reales a partir de una red operativa. El tipo y la cantidad de datos recopilados
depende del uso que se le vaya a dar. Por ejemplo, los datos obtenidos para
la realización de simulaciones podrían ser el momento de llegada de los
paquetes y sus tamaños.
2. Análisis. En la mayoría de ocasiones es necesario realizar un análisis previo
a los datos recopilados para obtener ciertas características (e.g. la tasa
binaria media, el retardo medio).
3. Presentación. Produce gráficas y tablas para presentar medidas de
rendimiento de forma visual.
4. Interpretación. Conseguir una interpretación útil de los datos es el objetivo
último de la realización de medidas.

Para ayudar a realizar estas tareas, existen muchas herramientas disponibles. En


esta práctica se aprenderá cómo utilizar algunas de ellas.

Clasificación de las herramientas de medidas

Desde el comienzo de Internet, se han desarrollado muchas herramientas para medir


y evaluar el rendimiento del protocolo TCP. Estas herramientas son de gran valor
para evaluar, monitorizar, gestionar y comparar diversas implementaciones de TCP.
Existen diversas clasificaciones basadas en sus características (e.g. propósito de las
medidas), el nivel de las tareas llevadas a cabo, y el tipo de implementación.

En función del propósito de las medidas hay dos tipos de herramientas, herramientas
de monitorización (monitoring tools) y herramientas de comparación (benchmarking
tools). Las herramientas de monitorización se emplearon inicialmente para ayudar en
la implementación de protocolos, pero actualmente también se utilizan para la gestión
de redes. Dos herramientas de monitorización muy utilizadas son tcpdump y tcpstat.
Las herramientas de comparación generan tráfico inyectándolo en la red a analizar,
permitiendo medir diferentes índices de rendimiento como la velocidad de

1
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

transferencia, retraso, jitter y el ancho de banda disponible. Principalmente se utilizan


para la gestión de redes, pero también son útiles para ajustar parámetros al
implementar protocolos. Algunas herramientas de este tipo son ttcp, NetPerf,
NetPIPE y DBS.

Dependiendo del nivel de las tareas llevadas a cabo, una herramienta se puede
clasificar en dos categorías: recopilador (collector) y analizador (analyzer). Un
recopilador captura y guarda datos originales (raw data), e.g. tcpdump. Un analizador
procesa los datos capturados y realiza un resumen de dichos datos. Además de estas
categorías, se pueden utilizar herramientas complementarias como gnuplot que
permiten representar los resultados en gráficas.

Finalmente, en función del tipo de implementación existen herramientas software y


herramientas hardware. Las herramientas software se ejecutan dentro de un nodo
perteneciente a la red, mientras que las herramientas hardware son instrumentos
separados que se conectan a la red. Éstas últimas normalmente se utilizan en
medidas de alta velocidad o alta resolución.

1. Tcpdump
Funcionamiento La función principal de tcpdump es monitorizar paquetes y mostrar sus
cabeceras y cuerpos en un formato legible para una persona. Para ello,
tcpdump utiliza el modo promiscuo del interfaz de red para capturar todos los
paquetes que son transmitidos por la red. Utiliza la librería Packet Capture
(libpcap), que proporciona un interfaz de programación para cualquier sistema
tipo UNIX y soporta el filtrado de los paquetes capturados. Desarrollada por Van
Jacobson en los 90, tcpdump sigue siendo una de las herramientas de
monitorización de red más popular.

Análisis de
tcpdump los paquetes
información
de los
paquetes Captura y filtrado
libpcap de paquetes

Red Red

Utilización y opciones
Tcpdump se ejecuta desde la línea de comandos. Para ver todas las opciones
disponibles se puede utilizar:

tcpdump --help

Para ver una descripción del significado de las diferentes opciones se puede
utilizar su manual:

man tcpdump

2
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

Formato de salida de tcpdump


src > dst: flags data-seqno ack window urgent options

E.g. host-a.1023 > host-b: s 768512:768512(0) win 4096


<mss 1024>

Src y dst son las direcciones IP y los puertos TCP de la fuente y el destino. Los
flags se forman como combinación de S (SYN), F (FIN), P (PUSH), R (RST) ó
“.” (sin flags). Data-seqno indica el número de secuencia de los datos enviados.
Ack es el número de secuencia del próximo byte de datos que se espera recibir.
Window es el número de bytes disponibles en el buffer receptor. Urgent indica
si hay datos urgentes en el paquete. Options son las opciones TCP, escritas
entre ángulos (<…>). Los tres primeros campos estarán presentes en cualquier
paquete, mientras que el resto dependerán del tipo de paquete.
Cuestiones y Las tareas a realizar con tcpdump son las siguientes:
tareas
1. Capturar todo el tráfico entrante y saliente del ordenador, de forma
independiente para cada interfaz. Identificar el tráfico existente cuando
no hay ninguna aplicación generando tráfico.
2. Guardar en un fichero las trazas de una conexión telnet, para un
análisis posterior de los paquetes enviados. Diferenciar entre la
conexión inicial, mostrado del contenido del directorio raíz y la
desconexión final. Realizar un filtrado de forma que sólo salgan los
paquetes relacionados con esta conexión telnet.
3. Volver a capturar las trazas de una conexión telnet, realizando diversas
acciones (e.g. mirando el contenido de varios directorios). En esta
ocasión sólo se capturarán el comienzo y el final de las conexiones
TCP.
4. Capturar el tráfico entre dos redes diferentes (e.g. dos islas
adyacentes). Se puede utilizar ping, telnet y ftp para generar tráfico
entre dichas redes.

Comando/s tcpdump

Documentación man tcpdump


tcpdump --help

El manual está disponible en: http://www.tcpdump.org/tcpdump_man.html

Observaciones El paquete RPM asociado a tcpdump se encuentra instalado en la distribución


Fedora Core 4 que se encuentra en el laboratorio, por lo que no será necesaria
su instalación.

NOTA: Los paquetes TCP utilizados al principio y al final de una conexión TCP
son paquetes SYN y FIN, en los que se activan los flags correspondientes.

3
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

Figura 1. Establecimiento y finalización de una conexión TCP.

La siguiente figura muestra el formato de cabecera TCP, donde se puede


apreciar la posición de los flags indicados.

Figura 2. Formato de un paquete TCP.

NOTA: Para la utilización de ftp, se puede utilizar el servidor gssftpd que está
instalado en los equipos del laboratorio. Este servidor funciona a través del
superservidor xinetd (fichero de configuración /etc/xinetd.d/gssftpd).
Hay que deshabilitar que el servidor requiera autenticación, por lo que la línea
server_args = -l -a deberá quedarse como server_args = -l.
Además, hay que habilitar el servicio (disable = no) y reiniciar el
superservidor xinetd.

NOTA: Para la conexión de ordenadores de dos islas consecutivas hay que


crear las rutas hacia los routers que unen dichas islas (i.e. 172.16.X.102) en
ambos ordenadores. Después hay que mandar un ping desde cada máquina al
otro ordenador, para que las tablas de rutas en el router se refresquen.

4
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

2. Tcpstat
Funcionamiento Tcpstat proporciona estadísticas del protocolo TCP en un interfaz de red dado,
incluyendo ancho de banda usado, número de paquetes transmitidos, tamaño
medio de los paquetes TCP, etcétera. Al igual que tcpdump, tcpstat utiliza la
librería libpcap, por lo que los parámetros de filtrado serán similares. La
estructura funcional de tcpstat es la siguiente:

Conteo de
tcpstat paquetes
estadísticas
de
tráfico Captura y filtrado
libpcap de paquetes

Red Red

Utilización y opciones
El funcionamiento de tcpstat consiste en encontrar el interfaz de red a
monitorizar, capturar los paquetes en dicho interfaz, y finalmente presentar un
resumen de las estadísticas cada 5 segundos. Al igual que tcpdump, tcpstat
utiliza el modo promíscuo del interfaz de red, por lo que ha de ser ejecutado con
privilegios de superusuario. Por defecto busca un interfaz activo, pero se puede
especificar el interfaz concreto a monitorizar.

Tcpstat se ejecuta desde la línea de comandos. El formato para ejecutarlo


desde la línea de comandos sería:

tcpstat [-¿haeFlp] [-B bps][-b bps] [-f filter expresion]


[-i interface] [-o output format] [-r filename] [-s
seconds] [interval]

El siguiente comando muestra todas las opciones disponibles así como su


significado:

tcpstat --help

Para ver una descripción del significado de las diferentes opciones se puede
utilizar su manual:

man tcpstat

Formato de salida de tcpstat


El formato de salida de tcpstat se puede definir utilizando la opción „–o‟. Esta
opción acepta una cadena que define el formato. La cadena de formato por
defecto es: “%S\tn=%n\tavg=%a\tstddev=%d\tbps=%b\n”. Esta cadena
mostraría el tiempo en segundos (tiempo transcurrido desde la época Unix, i.e.
0:00:00 UTC del 1 de Enero de 1970), el número de paquetes en el período de

5
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

medida, el tamaño medio de paquetes, la desviación estándar del tamaño de


los paquetes y la velocidad media en bits por segundo.

Cuestiones y Las tareas a realizar con tcpstat son las siguientes:


tareas
1. Capturar y mostrar las estadísticas sobre el tráfico TCP. Identificar el
tipo de tráfico que se cursa en la red. Generar tráfico (telnet, ftp) para la
obtención de estas estadísticas.
2. Realizar el postprocesado del fichero de trazas guardado en el
apartado anterior con tcpdump (último apartado).
3. Monitorizar el uso del ancho de banda, comprobando qué porcentaje
del tráfico supera 10 kbps, en intervalos de 1 segundo. Realizar la
medición primero sin generar tráfico y después utilizando telnet o ftp.
¿A qué crees que se debe la diferencia).
4. Presentar de forma gráfica el número de paquetes ARP, TCP y UDP
que circulan por la red. Para ello:

 Primero se capturará trazas de tráfico con tcpdump.


 Después se postprocesarán con tcpstat.
 Finalmente se representarán gráficamente con gnuplot.

Comando/s tcpstat

Documentación tcpstat --help


man tcpstat

man gnuplot

Página oficial de tcpstat: http://www.frenchfries.net/paul/tcpstat/


Uso con gnuplot: http://www.frenchfries.net/paul/tcpstat/gnuplot_howto.html

Observaciones Este programa no se encuentra instalado en las máquinas del laboratorio. Para
ello, hay que bajar el código fuente de la página oficial, descomprimirlo y
finalmente instalarlo.

NOTA: Suponiendo que el formato elegido para las trazas obtenidas con
tcpdump en la cuarta tarea mostrara los siguientes datos:

 Columna 1: tiempo en segundos relativo al primer paquete visto.


 Columna 2: paquetes ARP.
 Columna 3: paquetes TCP.
 Columna 4: paquetes UDP.
 Columna 5 (opcional): carga de la red en el último minuto.
 Columna 6 (opcional): velocidad en bits por segundo

6
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

Se podría utilizar el siguiente script para gnuplot:

set term pbm small color


set data style lines
set xlabel “Tiempo (segundos)”
set ylabel “paquetes/s”
plot [00:500] “tcpstat.log” using 1:2 title “ARP”, \
“tcpstat.log” using 1:3 title “TCP”, \
“tcpstat.log” using 1:4 title “UDP”

Y la ejecución se realizaría con gnuplot script1 > graph1.pbm.

3. Ttcp
Funcionamiento Desarrollado durante la mitad de los años 90, ésta es una herramienta clásica
de comparación para redes TCP/IP. Utilizando ttcp (test TCP) se puede medir la
velocidad de transferencia a nivel TCP de cualquier segmento de red. Para ello,
es necesario tenerlo instalado en dos ordenadores; uno actuará de transmisor y
el otro de receptor. Éste último calcula la velocidad efectiva entre ambos
ordenadores. Además, ttcp tiene la ventaja de no requerir privilegios de
superusuario.

estadísticas estadísticas
de tráfico de tráfico
Red
Transmisor Receptor
ttcp ttcp

Utilización y opciones
Para medir la velocidad de transferencia, primero se ejecuta ttcp en el receptor
en modo pasivo. A continuación, se ejecuta en el transmisor en modo activo. A
partir del tráfico generado y recibido, ttcp calcula los siguientes indicadores de
rendimiento:
 Tiempo total de CPU enviando datos
 Cantidad total de datos enviados
 Velocidad de transferencia basada en el tiempo de CPU
 Velocidad de transferencia basada en el tiempo real (desde que
se envió el primer paquete hasta que se procesó el último)

Esta herramienta está disponible en ftp://ftp.arl.mil/put/ttcp. Consta de dos


ficheros, ttcp.c para el código fuente y ttcp.1 para el manual. El programa se
puede compilar ejecutando: cc –O ttcp.c –o ttcp. Además, hay que
copiar el fichero del manual a /usr/local/man/man1.

7
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

Cuestiones y Las tareas a realizar con ttcp son las siguientes:


tareas
1. Estimar la velocidad de transmisión entre dos ordenadores de la
misma red, utilizando TCP y generando tráfico de forma automática.
2. Realizar las mismas medidas utilizando dos ordenadores que
pertenezcan a islas diferentes (consecutivas).
3. Estimar la velocidad de transmisión entre dos ordenadores de la misma
red, esta vez utilizando UDP.
4. Repetir el apartado anterior utilizando dos ordenadores que
pertenezcan a islas diferentes (consecutivas).

Explicar el motivo de la diferencia al estimar la velocidad de transmisión usando


TCP o UDP.

Comando/s ttcp

Documentación ttcp --help


man ttcp

Historia de ttcp: http://ftp.arl.mil/~mike/ttcp.html

Observaciones Esta herramienta está disponible en ftp://ftp.arl.mil/put/ttcp. Consta de dos


ficheros, ttcp.c para el código fuente y ttcp.1 para el manual. El programa se
puede compilar ejecutando: cc –O ttcp.c –o ttcp. Además, hay que
copiar el fichero del manual a /usr/local/man/man1.

4. Ethereal
Funcionamiento Este programa es un analizador de paquetes de red, presentando los datos de
cada paquete de una forma muy detallada y permitiendo la obtención de
estadísticas y resultados gráficos.

Además, permite ver, en tiempo real, la cantidad de paquetes de diferentes


protocolos que están pasando por una tarjeta de red. Ethereal ofrece un
número interesante de opciones para analizar los paquetes que pasan por una
tarjeta de red. Por ejemplo:

 Se puede generar un fichero con los paquetes capturados.


 Se puede cargar ficheros generados con Ethereal y también con otras
herramientas.
 Se puede ver el contenido y los protocolos utilizados en cada paquete.
Por ejemplo, si se captura un paquete de una transferencia ftp saldría
la información sobre los siguientes protocolos: trama (relacionado con
la transmisión física), Ethernet (capa enlace de datos), Internet Protocol
(capa de red), Transmission Control Protocol (capa de transporte) y File
Transfer Protocol (capa de aplicación).
 Se puede utilizar diferentes formatos de tiempo al mostrar los paquetes
capturados. Estos formatos están relacionados con la referencia que

8
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

se tome para medir tiempos. En concreto, podemos optar por una


marca de tiempo real asociada a cada paquete, el tiempo transcurrido
hasta el primer paquete o el tiempo transcurrido desde el paquete
inmediatamente anterior.
 Es posible aplicar filtros. De esta manera podemos ver el tráfico
relacionado con un nodo (o subred) concreto, se puede analizar el
tráfico relacionado con un protocolo concreto, tráfico que tenga algún
contenido concreto, o filtros complejos en los que se usan
combinaciones lógicas de diferentes selecciones.
 Opciones variadas para sacar estadísticas por protocolos, para seguir
una serie de paquetes relacionados con una transferencia TCP,
seleccionar colores diferentes para diferente tipo de tráfico, etc.

Cuestiones y 1. Utilización básica.


tareas
En este ejercicio se arrancará Ethereal (ejecutar la orden ethereal) para
comprobar su funcionamiento. Se debe tener en cuenta que en un sistema
normal, los usuarios no deben poder acceder directamente a la tarjeta de red.
Por eso, Ethereal se debe ejecutar con permisos de administrador, es decir,
root.

a) Arrancar el monitor. Seleccionar la orden para iniciar la captura, eligiendo la


tarjeta eth2. Aparecerá una ventana que va mostrando el porcentaje de
paquetes de diferentes protocolos que se están registrando. Parar la captura.

b) Almacenar los datos recogidos y volverlos a editar en el monitor.

c) La ventana principal de Ethereal se divide en tres partes: la parte superior


muestra la lista de paquetes recogidos. Cuando se selecciona un paquete, la
parte central expone la jerarquía de protocolos del paquete. La parte inferior
muestra el contenido del paquete (octetos en hexadecimal). Analice algunos de
los paquetes capturados. ¿Todos tienen la misma cantidad de protocolos?, ¿se
detecta algún paquete que se haya transmitido a todos los nodos (difusión)?

d) Pruebe a modificar la presentación del tiempo de los paquetes. La opción


que presenta el tiempo con respecto al paquete anterior permite ver en qué
momentos hubo un tráfico más intenso.

2. Configurar una red de dos ordenadores a través de la tarjeta eth2.

Realizar las siguientes capturas:

a) Captura sin ejecutar ninguna aplicación.

b) Realizar una captura ejecutando la operación ping. ¿Hay una lógica en el


orden de los paquetes?

c) Capturar los paquetes realizando una conexión telnet entre ambos


ordenadores. Identificar los mensajes y ver si se transfieren datos
comprometidos.

d) Realizar una captura realizando una transferencia de ficheros con ftp de un

9
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

fichero. Utilizar para ello los ficheros entregados por el profesor (los tamaños de
estos ficheros serán 100KB, 1MB, 10MB).

¿Se encuentra una lógica en la conversación de los ordenadores?, ¿Se puede


comprender los datos transferidos?, ¿se puede leer datos comprometidos?
Comprobar la velocidad de transferencia media en la descarga de cada fichero.
¿Es la misma? En caso de existir una diferencia significativa, ¿a qué crees que
es debido?

3. Captura por filtrado de paquetes.

Realizar una captura utilizando el filtrado de paquetes. En este caso filtrar


paquetes de eth0 primero filtrando los paquetes TCP y luego los paquetes TCP
enviados desde el ordenador de un compañero. En las capturas, realizar una
transferencia de ficheros.

4. Análisis de ficheros con trazas.

Analizar los ficheros de trazas que entregará el profesor. Identificar los


protocolos así como los paquetes principales, y presentar gráficamente la
velocidad de transferencia. Estimar el tiempo transcurrido para el
establecimiento de la conexión TCP, así como describir el mecanismo slow
start de forma gráfica.

Comando/s ethereal

Documentación Página web de Ethereal: http://www.ethereal.com

Guía de usuario:
http://www.ethereal.com/docs/#usersguide

Observaciones NOTA: En el apartado de análisis de ficheros con trazas se pretende ver, entre
otros detalles, el mecanismo slow start al inicio de la transmisión TCP y tras los
posibles errores a nivel TCP. Slow start permite adaptar la velocidad del
transmisor en función de la congestión de la red, aumentando su velocidad si
llegan correctamente los paquetes y reduciéndola si hay errores.

10
Ingeniería telemática Redes de Ordenadores
Dpto. de Teoría de la señal, telemática y comunicaciones Práctica 2: Medición de rendimiento en redes TCP/IP
Universidad de Granada
18071 - GRANADA

Ventana de congestión
Expiración de temporizador
por congestión o fallo

prevención de Umbral reducido a la mitad


congestión tras la expiración
umbral para evitar expiraciones

slow-start

tiempo
Figura 3. Funcionamiento del mecanismo slow start de TCP.

11