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.