ESTIMADOR EN TIEMPO REAL DEL CONSUMO DE ANCHO
DE BANDA EN UN ENLACE
DIEGO JOSE LUIS BOTIA VALDERRAMA
UNIVERSIDAD OBERTA DE CATALUÑA
UNIVERSIDAD AUTÓNOMA DE BUCARAMANGA
MAGISTER EN SOFTWARE LIBRE
BUCARAMANGA
2008
ESTIMADOR EN TIEMPO REAL DEL CONSUMO DE ANCHO
DE BANDA EN UN ENLACE
DIEGO JOSE LUIS BOTIA VALDERRAMA
Trabajo de Tesis para optar al Título de
Magister en Software Libre
Director: Ph.D.(c) Cesar Darío Guerrero
Santander
UNIVERSIDAD OBERTA DE CATALUÑA
UNIVERSIDAD AUTÓNOMA DE BUCARAMANGA
MAGISTER EN SOFTWARE LIBRE
BUCARAMANGA
2008
Nota de Aceptación
______________________________
______________________________
______________________________
______________________________
______________________________
______________________________
________________________________
Firma del presidente del jurado
_________________________________
Firma del jurado
_________________________________
Firma del jurado
Bucaramanga, Julio de 2008
AGRADECIMIENTOS
El Autor expresa su agradecimiento
a:
Al profesor Ph.D.(c) Cesar Darío Guerrero
Santander por su gran
colaboración, asesoría y dirección del trabajo.
A las directivas de la Universidad
Oberta de Catalunya (UOC) y de la Universidad Autónoma de Bucaramanga (UNAB),
por la formación de profesionales que actúan con honestidad y transparencia.
A todos mis profesores, por la
excelente formación del profesional en educación posgraduada.
A mis amigos, por su compañerismo y
apoyo.
A mis padres y hermanos por su
constante apoyo y dedicación.
CONTENIDO
Pág.
LISTA
DE TABLAS |
viii |
LISTA
DE FIGURAS |
ix |
LISTA
DE ANEXOS |
xi |
GLOSARIO |
xii |
RESUMEN |
xiii |
ABSTRACT |
xiv |
INTRODUCCION |
1 |
1. ANTECEDENTES |
3 |
2. OBJETIVOS |
4 |
2.1
OBJETIVO GENERAL |
4 |
2.2
OBJETIVOS ESPECIFICOS |
4 |
3. MARCO TEORICO |
5 |
3.1 ENCAPSULAMIENTO TCP/IP |
6 |
3.1.1 Trama Ethernet |
7 |
3.1.2 Protocolo IP |
9 |
3.1.3 Protocolo TCP |
11 |
3.1.4 Protocolo UDP |
13 |
3.2 TAMAÑO DE LOS PAQUETES |
14 |
3.3 ENVIO DE DATOS EN LINUX |
15 |
3.4 FILTRADO DE PAQUETES |
17 |
3.4.1 Funciones Principales de Libpcap |
19 |
3.4.1.1 Selección de la Interfaz de Red. |
19 |
3.4.1.2 Funciones para Sniffing y Captura |
20 |
3.4.1.3 Filtrado de paquetes en Libpcap |
21 |
3.4.1.4 Rastreo de paquetes |
22 |
3.4.1.5 Extracción de la Información |
23 |
3.4.1.5.1 Cabecera Ethernet |
24 |
3.5 GENERADORES DE TRÁFICO |
27 |
3.5.1 MGEN (NRL Multi-Generator) |
27 |
3.6 SNIFFERS |
28 |
3.6.1 Desactivación de Filtro MAC |
29 |
3.6.2 Herramientas para hacer Sniffing |
29 |
3.6.3 Tcpdump. |
30 |
3.6.3.1 Sintaxis de TCPDUMP |
30 |
3.6.3.2 Información Extendida |
32 |
3.6.3.3 Salida del Sniffer |
33 |
3.6.3.4 Direcciones de la capa de enlace |
34 |
3.6.3.5 Filtros con TCPDUMP |
35 |
3.7 INGENIERÍA DE SOFTWARE |
36 |
3.7.1 Objetivos de la Ingeniería de Software |
38 |
3.7.2 Planificación de un Proyecto de Ingeniería de Software |
39 |
3.7.3 Organización de un Proyecto de Ingeniería de Software |
40 |
3.7.4 Modelo de Desarrollo Incremental |
41 |
4. METODOLOGIA DE LA INVESTIGACION |
44 |
4.1 CONCEPTUALIZACION |
44 |
4.2 ANÁLISIS DE REQUERIMIENTOS Y DISEÑO |
45 |
4.3 CODIFICACIÓN, DEPURACIÓN Y PRUEBAS (INCREMENTO 1) |
45 |
4.4 CODIFICACIÓN, DEPURACIÓN Y PRUEBAS (INCREMENTO 2) |
45 |
4.5 ENTREGA DEL SISTEMA |
46 |
5. DESARROLLO DEL SISTEMA |
47 |
5.1 REQUERIMIENTOS GENERALES |
47 |
5.2 ANÁLISIS |
48 |
5.2.1 Casos de Uso |
48 |
5.2.2 Patrones de Generación de Tráfico (Periódico, Poisson, Ráfaga) |
57 |
5.2.2.1 Patrón Periódico |
57 |
5.2.2.2 Patrón Poisson |
58 |
5.2.2.3 Patrón Ráfaga (BURST): |
59 |
5.3 TESTBED |
60 |
5.3.1 Arquitectura General del Sistema |
60 |
5.3.1.1 Configuración del Sender |
61 |
5.3.1.2 Configuración del Receiver |
65 |
6. TESTBW |
67 |
6.1 DESCRIPCION |
67 |
6.1.1 Log de Cambios |
67 |
6.1.2 Plataformas Probadas |
68 |
6.2 INSTALACION |
69 |
6.3 EJECUCION DE LA HERRAMIENTA |
73 |
7. ANALISIS DE RESULTADOS |
76 |
8. ANÁLISIS ESTADÍSTICO |
82 |
8.1 DISTRIBUCIÓN PERIÓDICA |
83 |
8.1.1 Distribución Periódica para el 30% de Ancho de Banda del Enlace de Red |
83 |
8.1.2 Distribución Periódica para el 60% de Ancho de Banda del Enlace de Red |
89 |
8.2 DISTRIBUCIÓN DE POISSON |
92 |
8.2.1 Distribución de Poisson Para el 30% de Ancho de Banda del Enlace de Red |
92 |
8.2.2 Distribución de Poisson Para el 60% de Ancho de Banda del Enlace de Red |
95 |
9. CONCLUSIONES |
99 |
10. RECOMENDACIONES Y TRABAJOS FUTUROS |
102 |
11. BIBLIOGRAFÍA |
103 |
11.1 LIBROS |
103 |
11.2 REVISTAS |
104 |
11.3 INVESTIGACIONES |
104 |
11.4 INFOGRAFIA |
105 |
11.5 BIBLIOGRAFIA PARA ANALISIS ESTADISTICO |
106 |
ANEXOS |
108 |
LISTA DE TABLAS
Pag
Tabla
1. Software Utilizado
|
61 |
Tabla 2. Requerimientos
mínimos para la instalación de la herramienta |
69 |
Tabla
3. Resultados de cálculos estadísticos para, distribución periódica del 30% de ancho de banda de enlace
de red |
87 |
Tabla 4. Distribuciones Normales para 30% de ancho de
banda de enlace de red |
88 |
Tabla 5. Resultados de cálculos estadísticos para
distribución periódica, del 60%
de ancho de banda de enlace de red. |
89 |
Tabla 6. Distribuciones Normales para 60% del ancho de
banda del enlace de
red |
91 |
Tabla 7. Resultados de cálculos estadísticos para
distribución de Poisson, para
30% de ancho de banda del enlace de red. |
92 |
Tabla 8. Distribución de Poisson, para 30% de ancho de
banda del enlace de red. |
95 |
Tabla 9. Resultados de cálculos estadísticos para
distribución de Poisson, para
60%
de ancho de banda del enlace de red |
95 |
Tabla 10. Distribución de Poisson, para 60% de ancho de banda del enlace de red |
97 |
LISTA DE FIGURAS
Pag
Figura 1. Encapsulamiento de datos en TCP/IP. |
7 |
Figura 2. Contenido de la Trama Ethernet |
8 |
Figura 3. Estructura de un paquete IP |
10 |
Figura 4. Estructura paquete TCP |
12 |
Figura 5. Estructura de Datagrama UDP |
14 |
Figura 6. Estructura de capas desde el punto de vista de Linux. |
16 |
Figura 7. Esquematización de un programa con Libpcap |
19 |
Figura 8. Red en la que un Host monitoriza el tráfico que fluye por esta |
20 |
Figura 9. Principales estructuras de red contenidas en Linux |
24 |
Figura 10. Salida estándar de TCPDUMP |
31 |
Figura 11. Salida de TCPDUMP con Verbose |
33 |
Figura 12. Salida de TCPDUMP con snaplength |
35 |
Figura 13. Modelo de Desarrollo Incremental |
42 |
Figura 14. Modelo de Desarrollo Incremental con desarrollo en cascada de los incrementos |
43 |
Figura 15. Caso de Uso Envío y Captura de Tráfico |
48 |
Figura 16. Caso de Uso Generación de tráfico por el Sender. |
49 |
Figura 17: Caso de Uso Captura y Análisis de paquetes en el Receiver |
50 |
Figura 18. Caso de Uso Análisis de Tráfico |
51 |
Figura 19. Apertura de Puerto 5001 desde MGEN en PC Receiver |
54 |
Figura 20. Puerto UDP/5001 abierto por MGEN |
55 |
Figura 21. Entorno de pruebas para el Testbed |
62 |
Figura 22. Comando Ifconfig |
63 |
Figura 23. Parámetros para la Tarjeta de Red |
63 |
Figura 24. Ejecución del comando Ping |
64 |
Figura 25. Proceso de instalación de MGEN |
65 |
Figura 26. Ejecución inicial de MGEN |
65 |
Figura 27. Comprobación de Dependencias de GCC |
66 |
Figura 28. Estructura del Programa Testbw |
70 |
Figura 29. Instalación de Testbw |
72 |
Figura 30. Verificación del Binario compilado |
72 |
Figura 31. Ejecución Inicial de Testbw |
73 |
Figura 32. Captura con IPTRAF |
74 |
Figura 33. Captura de tráfico con testbw |
74 |
Figura 34. Generación de Tráfico Periódico al 30% y 60% del tamaño del canal |
76 |
Figura 35. Bandwidth calculado del 30% del canal usando distribución Periodic |
77 |
Figura 36. Bandwidth calculado del 60% del canal usando distribución Periodic |
78 |
Figura 37. Generación de Tráfico Poisson al 30% y 60% del tamaño del canal |
79 |
Figura 38. Bandwidth calculado del 30% del canal usando distribución Poisson |
80 |
Figura 39. Bandwidth calculado del 60% del canal usando distribución Poisson |
81 |
Figura 40. Distribución periódica para un 30% de ancho de banda del enlace de red |
88 |
Figura 41. Distribución Periódica para 60% de ancho de banda del enlace de red |
90 |
Figura 42. Distribución Periódica para 60% de ancho de banda del enlace de red, (en escala x106 bps para ancho de banda) |
91 |
Figura 43. Distribución de Poisson para 30% de ancho de banda del enlace de red |
93 |
Figura 44. Distribución de Poisson para 30% de ancho de banda del enlace de red, (en escala x106 bps para ancho de banda) |
94 |
Figura 45. Distribución de Poisson para 60% de ancho de banda del enlace de red |
96 |
Figura 46. Distribución de Poisson para 60% de ancho de banda del enlace de red, ( en escala x106 bps para ancho de banda) |
97 |
LISTA DE ANEXOS
Pag
Anexo 1. CÓDIGO FUENTE DE LA HERRAMIENTA TESTBW |
109 |
Anexo 2. LICENCIA GPL |
115 |
Anexo 3. CAPTURA DE TRAFICO PERIODICO DEL 30% DEL CANAL |
128 |
Anexo 4. CAPTURA DE TRAFICO PERIODICO DEL 60% DEL CANAL |
129 |
Anexo 5. CAPTURA DE TRAFICO POISSON DEL 30% DEL CANAL |
130 |
Anexo 6. CAPTURA DE TRAFICO POISSON DEL 60% DEL CANAL |
131 |
GLOSARIO
ACK: Paquete
TCP con la bandera de Acuse de Recibido Activa
BSD: Berkeley
Software Distribution
FTP: File
Transfer Protocol
IETF: Internet Engineering Task Force
ICMP: Internet Control Message Protocol
IP: Internet Protocol
Kernel: Núcleo del Sistema Operativo
KB: Kilobyte
Kb: Kilobit
LAN: Local
Area Network
MAC: Media
Access Control address
MB: Megabyte
Mb: Megabit
Mbit: Megabit
MSS: Maximum
Segment Size
MTU: Maximum
Transmission unit
NIC: Network Interface Card
QoS: Quality
of Service
RFC: Request For Comment
TCP: Transmission Control Protocol
TOS: Type of Service
UDP: User
Datagram Protocol
VPN: Virtual
Private Network
WAN: Wide Area Network
RESUMEN
Este trabajo muestra que a partir de la captura de tramas Ethernet de la capa 2 (de enlace), es
posible generar un cálculo del ancho de banda entre el envió de paquetes en un
enlace de red. Para este proyecto se
empleo exclusivamente herramientas de software libre, entre las que se
destacan: el sistema operativo GNU/Linux,
el generador de trafico MGEN, el
compilador de lenguaje C GCC, el sniffer
TCPDUMP y el API libpcap.
El proyecto empieza con una recopilación y estudio de los principales
protocolos de red utilizados en el modelo TCP/IP, así como el estudio de las principales estructuras de
programación utilizadas en el desarrollo de la herramienta. También se explican las etapas de Ingeniería
de Software realizadas en el proyecto como el Análisis y Diseño, Desarrollo y
pruebas, utilizando el modelo de desarrollo Incremental. Por último se
especifica la implementación y configuración del Testbed desarrollado.
Se utilizó una metodología de
desarrollo incremental con sucesivas iteraciones en cada etapa, hasta llegar a
la versión final de la herramienta que se denominó TESTBW. Se generó tráfico de
MGEN de tipo Periódico y de Poisson, y las mediciones obtenidas de tráfico en
la red, se analizaron a través de métodos estadísticos de distribuciones
Periódicas y de Poisson, para 30% y 60% de ancho de banda del enlace de red.
Palabras Clave: Tcpdump, MGEN, Ancho de Banda, TCP/IP,
Sniffers, Libpcap, Testbed, Software Libre, Linux, Ethernet.
ABSTRACT
This work shows that capturing Ethernet
frames, it is possible to calculate the bandwidth in a network link. The
project exclusively utilized open source tool such as GNU/Linux operating
system, the MGEN, traffic generator, the C language compiler GCC, the
TCPDUMP sniffer and the API library libpcap.
The project begins studying the main
TCP/IP network protocols and the main
programming structures required to develop the desired packet capturing tool.
In addition, the Software Engineering steps performed in the project are
explained. Finally, implementation details and testbed configuration are specified.
An incremental development
methodology was used with successive iterations on each step until defining the
final tool called TESTBW. Periodic and Poisson traffic of 30% and 60% of the
link capacity were generated using MGEN. All the measurements were analyzed
using statistical methods.
Key Words: Tcpdump, MGEN,
Bandwidth, TCP/IP, Sniffers, Libpcap, Testbed, Free Software, Linux, Ethernet.