FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

142
1 FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE GENERADORES DE TRÁFICO MULTIPLATAFORMA ANDRÉS FELIPE CASTAÑO MEJÍA LINA MARCELA OCAMPO PELÁEZ MICHAEL STEVENS OROZCO PIEDRAHITA UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA PROGRAMA DE INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES PROYECTO DE GRADO 2011

Transcript of FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

Page 1: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

1

FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE GENERADORES DE TRÁFICO MULTIPLATAFORMA

ANDRÉS FELIPE CASTAÑO MEJÍA LINA MARCELA OCAMPO PELÁEZ

MICHAEL STEVENS OROZCO PIEDRAHITA

UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

PROGRAMA DE INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES PROYECTO DE GRADO

2011

Page 2: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

2

FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE GENERADORES DE TRÁFICO MULTIPLATAFORMA

ANDRÉS FELIPE CASTAÑO MEJÍA LINA MARCELA OCAMPO PELÁEZ

MICHAEL STEVENS OROZCO PIEDRAHITA

Informe de Proyecto de Grado

Asesor ING. LINE YASMIN BECERRA SÁNCHEZ

UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

PROGRAMA DE INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES PROYECTO DE GRADO

2011

Page 3: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

3

CONTENIDO

Pág.

RESUMEN .............................................................................................................. 9

INTRODUCCIÓN .................................................................................................. 10

1. OBJETIVOS ..................................................................................................... 12

1.1 OBJETIVO GENERAL .................................................................................... 12 1.2 OBJETIVOS ESPECÍFICOS ........................................................................... 12

2. MARCO TEÓRICO ........................................................................................... 13 2.1 GENERADORES DE TRÁFICO ..................................................................... 13

2.2 TRÁFICO EN UNA RED ................................................................................. 13

2.3 MÉTODOS PARA GENERAR TRÁFICO: ...................................................... 14 2.3.1 Tráfico Sintético ........................................................................................ 14 2.3.2 Basado en Trazas ..................................................................................... 14

2.3.3 Conducido por ejecución de aplicaciones paralelas ............................. 15 2.4 TIPOS DE TRÁFICO EXISTENTES ............................................................... 15

2.4.1 Capa de Aplicación .................................................................................... 16 2.4.2 Capa de Transporte .................................................................................... 18 2.4.3 Capa de Red ................................................................................................ 19 2.5 SOFTWARE GENERADORES DE TRÁFICO ................................................ 21 2.5.1 Ostinato ....................................................................................................... 21 2.5.2 NSAuditor .................................................................................................... 21

2.4.3 Ethereal ....................................................................................................... 22

Page 4: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

4

2.5.4 TF – GEN ..................................................................................................... 22 2.5.5 IPERF ........................................................................................................... 23

2.5.6 HPING 2 ....................................................................................................... 23 2.5.7 Némesis ....................................................................................................... 23 2.5.8 Rude and Crude .......................................................................................... 24 2.5.9 Scapy ........................................................................................................... 24

2.5.10 Generador de tráfico de Internet Distribuido ......................................... 25 2.5.11 Pktgen ....................................................................................................... 25 2.5.12 PacketGenerator ....................................................................................... 26

2.5.13 Packet Excalibur ....................................................................................... 26 2.5.14 Packgen ..................................................................................................... 26

2.5.15 GASP……………………………………………………………………...……...27 2.5.16 GSpoof 3.0 ................................................................................................ 27 2.5.17 Harpoon ..................................................................................................... 27 2.5.18 ISIC ............................................................................................................ 28

2.5.19 PackETH .................................................................................................... 28 2.5.20 PackIt ......................................................................................................... 28 2.5.21 PacketX ..................................................................................................... 29

2.5.22 SendIP ....................................................................................................... 29 2.5.23 TCP Ivo ...................................................................................................... 30

2.5.24 LIBNET ...................................................................................................... 30 2.5.25 MGEN ......................................................................................................... 30

Page 5: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

5

3. METODOLOGÍA ............................................................................................... 32

4. DESARROLLO DEL PROYECTO .................................................................... 34 4.1 SOFTWARE SELECCIONADOS .................................................................... 34 4.1.1 Ostinato ....................................................................................................... 34 4.1.2 Harpoon ....................................................................................................... 44

4.1.3 Software Analizador de protocolos de red Wireshark ............................ 47 4.2 PRUEBAS DE GENERACIÓN DE TRÁFICO ................................................. 60 4.2.1 Pruebas con Ostinato ................................................................................ 60

4.2.2 Pruebas con Harpoon ................................................................................ 72

5. CONCLUSIONES ............................................................................................. 80

6. RECOMENDACIONES ..................................................................................... 82

7. REFERENCIAS BIBLIOGRÁFICAS ................................................................. 84

8. ANEXOS ........................................................................................................... 90

9. ARTÍCULO PUBLICABLE .............................................................................. 126

Page 6: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

6

LISTA DE ILUSTRACIONES

Pág. TABLA 1. Protocolos de Red Modelo OSI………………………….…………………15 FIGURA 1. Instalador WinPcap………………………………………………….……..37 FIGURA 2. Instalador Wireshark……………………………………………..………..37 FIGURA 3. Instalación de Winpcap…………………………………………………....38

FIGURA 4. Instalación de Wireshark…………………………………………………..39

FIGURA 5. Ventana Principal de Ostinato…………………………………………....40

FIGURA 6. Ventana referente a la selección de protocolos…………….…………..41

FIGURA 7. Ventana referente a la vista de configuraciones…………….………….42

FIGURA 8. Ventana referente al control de corriente………………………………..43 FIGURA 9. Ventana principal de Wireshark…………………………………………..52 FIGURA 10. Ventana referente a la selección de la interfaz………………………..52 FIGURA 11. Ventana que muestra las diferentes interfaces………………………..53

FIGURA 12. Ventana de opciones de Captura……………………………………….54 FIGURA 13. Ventana referente a la opción Capture Filter………………………….55

FIGURA 14. Ventana referente a la opción Start…………………………………….56

FIGURA 15. Ventana referente a la visualización de paquetes capturados con filtro………………………………………………………………………………………..57 FIGURA 16. Ventana de visualización con filtros…………………………………….58 FIGURA 17. Ventana de ayudas, referente a la opción Expression……………….59

FIGURA 18. Ventana referente a la detención de captura de paquetes………….60

Page 7: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

7

FIGURA 19. Ventana Principal de Ostinato, Selección de puerto………………….61 FIGURA 20. Ventana de creación de una nueva corriente………………………….62 FIGURA 21. Ventana de selección de protocolo de texto…………………………..63 FIGURA 22. Ventana de configuración de dirección fuente y destino…………….64 FIGURA 23. Ventana de selección de puerto HTTP…………………………………65

FIGURA 24. Ventana donde se elige el número de paquetes……………………...66 FIGURA 25. Ventana de visualización de configuraciones HTTP…………………67 FIGURA 26. Visualización de captura de tráfico HTTP en Wireshark……………..68

FIGURA 27. Ventana de selección de protocolo SIP………………………………..69 FIGURA 28. Ventana de elección del número de paquetes………………………..70

FIGURA 29. Ventana de visualización de configuraciones SIP……………………71 FIGURA 30. Ventana de visualización de captura de tráfico SIP en Wireshark….72 FIGURA 31. Diagrama de Red construida para generación de tráfico TCP con Harpoon…………………………………………………………………………………...73 FIGURA 32. Generación de tráfico TCP………………………………………………77 FIGURA 33. Ejecución del Wireshark para la Captura de tráfico…………………..78

FIGURA 34. Visualización de la captura de tráfico en Wireshark………………….79

Page 8: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

8

LISTA DE ANEXOS

Pág. ANEXO 1: Manual Harpoon………………………………………………………….110

Page 9: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

9

RESUMEN

En este informe se da a conocer una exploración general sobre los diferentes tipos de tráfico de red y las diferentes herramientas generadoras de tráfico existentes. La investigación muestra que actualmente se cuenta con una gran variedad de software que permite generar tráfico de diferentes naturalezas, lo cual es muy útil en el análisis de pruebas de desempeño de una red, ya sea que se realicen pruebas con elementos de una red real o a nivel de simulación. Actualmente muchos investigadores han visto la necesidad de crear sus propios programas para generar diferentes tipos de tráfico y han sido puestos a disposición de los usuarios para usarlos, mejorarlos o modificarlos de acuerdo a sus necesidades. El objetivo de este documento es dar a conocer mediante una breve descripción los diferentes Software generadores de tráfico de red disponibles. Como valor agregado se describe el proceso de instalación, funcionamiento y captura de tráfico para dos de estos software: Harpoon y Ostinato, incluyendo así mismo el proceso de instalación y el funcionamiento de Wireshark como herramienta analizadora de protocolos, muy útil en la captura y medición de tráfico de red. Palabras Clave: Exploración, Software, Tráfico, Generador de tráfico. ABSTRACT This report discloses a general exploration of the different types of network traffic and different traffic generating tools available. Research shows that currently has a wide variety of software that allows you to generate traffic of different natures, which is very useful in analyzing performance test of a network, whether carried out tests with real network elements or level simulation. Currently, many researchers have seen the need to create their own programs to generate different types of traffic and have been made available to users to use them, improve them or change them according to their needs. The aim of this paper is to present a brief description by different software network traffic generator available. As an added value describes the installation, operation and capture traffic for two of these software: Harpoon and Ostinato, including likewise the installation and operation of Wireshark protocol analyzer as a tool, useful in the capture and measurement network traffic. Keywords: Exploration, Software, Traffic, Traffic generator.

Page 10: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

10

INTRODUCCIÓN En muchas investigaciones de telecomunicaciones en las que se necesita evaluar la eficiencia y desempeño de una red, se requieren algunas herramientas que permitan inyectar tráfico de diferentes naturalezas a elementos de redes reales o redes simuladas, para hacer pruebas que permitan evidenciar el comportamiento de las mismas. Por ejemplo, al realizar comunicaciones entre dos estaciones a través de una red IP, se genera un flujo de tráfico alto o tráfico excesivo, que en ocasiones crea colisiones y estas a su vez ocasionan congestiones en la red, debido a la cantidad de peticiones que se crean por unidad de tiempo en un instante determinado; ―para evaluar el tipo de congestiones, dimensionar y gestionar los recursos de la red‖ 1 e identificar las posibles consecuencias que estas traerían para el buen funcionamiento del sistema, los investigadores han visto la necesidad de crear herramientas generadoras de tráfico que permitan hacer pruebas simulando situaciones reales de comunicación, de tal manera que se pueda inyectar tráfico a una red con el fin de encontrar posibles problemas en sobrecarga de flujo a través del canal y realizar un análisis sobre cómo se comporta dicha red en determinado momento. Con la ayuda de estos software se hace una gestión a la red, y a partir de un reporte detallado de cada uno de los sucesos durante la transmisión se generarán hipótesis en cuanto a qué pasa sí la red o los servicios se ven saturados de tráfico, lo cual define que tan disponible y eficiente es la red y se determinará si cumple o no con calidad de servicio. El presente proyecto contiene los resultados de una exploración sobre tipos de tráfico de red y software generadores de éstos, que puedan ser de ayuda en el momento de realizar pruebas de funcionamiento y desempeño de una red. Muchos de estos software han sido desarrollados y puestos a disposición ante la comunidad académica e investigativa para que puedan ser usados, mejorados o modificados de acuerdo a las especificidades de cada investigación. Los resultados de la exploración realizada permiten evidenciar una gran cantidad de herramientas de software generadoras de diferentes tipos de tráfico, de los cuales se hace una breve reseña de sus funcionalidades. Como un valor agregado se hace una descripción más profunda de dos de estas herramientas Harpoon y Ostinato, mostrando paso a paso como es su instalación, funcionamiento y

1 M. Alvarez-Campana1, A. Azcorra3, J. Berrocal1, J. Domingo2, D. Larrabeiti3, X. Martínez2, J. I. Moreno3, J. R. Pérez1 y

J. Solé Pareta2; CASTBA: Medidas de tráfico sobre la Red, Académica Española de Banda Ancha, Departamento de Ingeniería de Sistemas Telemáticos, Universidad Politécnica de Madrid, http://www.it.uc3m.es/azcorra/papers/castba_telecom98.pdf

Page 11: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

11

pruebas de generación y captura de tráfico, para lo cual, se utiliza un analizador de protocolos de red llamado Wireshark. En la primera parte de este informe, se encontrará la sección 2.3 la cual permitirá informarse acerca de los métodos que utilizan los desarrolladores de software para crear los diferentes generadores de tráfico y bajo qué argumentos se basan en su implementación. En la sección 2.4 se pueden observar los tipos de tráfico que actualmente se pueden apreciar en la mayoría de las redes. En la sección 2.5 se encuentran los software generadores de tráfico disponibles en la red, en la cual se encontrará una breve descripción y sus características. En la sección 3 se encontrarán detalles de la metodología que se aplicó hacia el desarrollo de la investigación. En la sección 4 se podrán encontrar con más detalle los software generadores de tráfico seleccionados y sus respectivas pruebas. Hacia el final del documento podremos mirar a que conclusiones se llegó con la investigación y que recomendaciones se pueden brindar a todos los que en su momento necesiten implementar un generador de tráfico.

Page 12: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

12

1. OBJETIVOS

1.1 OBJETIVO GENERAL Realizar la fundamentación teórica sobre los diferentes software generadores de tráfico existentes de tal manera que se puedan evidenciar sus características principales y funcionalidades.

1.2 OBJETIVOS ESPECÍFICOS

Estudiar los diferentes tipos de tráfico existentes. Explorar los diferentes software generadores de tráfico existentes para

determinar sus características principales y funcionalidades. Seleccionar dos (2) software generadores de tráfico a partir del estudio

previamente realizado para hacer pruebas de generación de tráfico. Elegir un software analizador de protocolos de red para realizar pruebas de

captura de tráfico.

Page 13: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

13

2. MARCO TEÓRICO

2.1 GENERADORES DE TRÁFICO Son software utilizados para imitar las características del tráfico real existente en una red, generar tráfico y de esta manera hacer pruebas necesarias y evaluar el estado de ésta, de acuerdo a las necesidades para las cuales haya sido diseñada dicha red. Algunos son creados por empresas o por investigadores que buscan tener herramientas que les facilite el diagnóstico de desempeño en una red, aunque unos son creados para generar un tipo de tráfico en especial, y otros generan gran variedad de tipos de tráfico. En la mayoría de los casos se utilizan diferentes generadores de tráfico, dependiendo de los requerimientos de la red, esto con el fin de demostrar calidad de servicio, mejorar el rendimiento y el diseño. En la sección 2.5 se describirán las herramientas de software encontradas para la generación de diferentes tipos de tráfico. 2.2 TRÁFICO EN UNA RED El tráfico de datos se refiere a toda la información que circula por la red, todo el flujo de datos, tamaño y de qué manera puede intervenir en el comportamiento de la red, discriminando de igual forma protocolos, puertos y aplicaciones; y de esta manera diagnosticar posibles problemas, que puedan afectar directamente el correcto funcionamiento de la misma. En muchas ocasiones es necesario inyectar tráfico en una red para saber el comportamiento de esta con respecto al tipo y tamaño de tráfico inyectado; para poder evaluar el estado de una red existen varios métodos de generación de tráfico de los cuales se debe elegir el más adecuado teniendo en cuenta la dimensión de la red a evaluar; dentro de los cuales se destacan, el trafico sintético, trazas de aplicaciones reales y simulación conducida por la ejecución. (Ridruejo & González, 2004).

Page 14: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

14

2.3 MÉTODOS PARA GENERAR TRÁFICO

2.3.1 Tráfico Sintético

Tráfico uniforme de matriz transpuesta, este tipo de tráfico está diseñado para emular el comportamiento de aplicaciones de cálculo científico. En este método se utilizan distintas distribuciones estadísticas de las cuales se obtiene el tráfico. Existen tres distribuciones las cuales se utilizan generalmente para generar el tráfico en la red de interconexión, la distribución temporal, establece el tiempo de relación entre paquetes; la distribución espacial, fija los nodos de destino de los paquetes; la distribución del tamaño, establece el tamaño de los paquetes que se generan. Por lo general se utilizan unos parámetros básicos al generar tráfico a través de este método, pero estos van de acuerdo al tipo y los aspectos de la red a evaluar. Para generar tráfico se debe tener en cuenta, que principalmente se debe parametrizar cada una de las distribuciones de acuerdo a los requerimientos de la red en estudio, de acuerdo a esto, cada distribución tiene ciertos parámetros que son aplicables para su posible combinación y de esta manera fijar un perfil al generador. (Ridruejo & González, 2004, 2)

2.3.2 Basado en Trazas Este método se utiliza, ya que el sintético no deja resultados confiables, se aparta un poco de lo exacto y lo real; con éste es posible generar trazas de trafico más reales de acuerdo a las aplicaciones que soporta una red, y de esta forma se acerca un poco más a la exactitud, con el fin de mostrar la manera de poder evaluar la capacidad y fidelidad en la red de forma confiable. Para emplear el presente método se debe hacer un pre-proceso especificando los campos a tener en cuenta en la generación del tráfico; (tipo de evento, nodo en que ocurrió, nodo que lo provoco, tamaño del evento), la mayoría de las veces que se usa este método se toma como punto de partida las capturas de tráfico obtenidas por un sniffer en una red Ethernet. (Ridruejo & González, 2004, 3)

Page 15: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

15

2.3.3 Conducido por ejecución de aplicaciones paralelas Para llevar a cabo este método es necesario iniciar la simulación en cada uno de los nodos y en la red de interconexión entre ellos, luego se ejecuta la aplicación que ayudará a auditar el comportamiento de la red, de esta manera se puede ver una simulación casi real, pero se debe tener en cuenta que esto provoca un retardo en el sistema, ya que todos los nodos están dentro de la simulación de forma paralela; para la simulación de la red de interconexión se puede utilizar el simulador que más convenga dependiendo los requerimientos de la red. (Ridruejo & González, 2004, 4)

2.4 TIPOS DE TRÁFICO EXISTENTES El conjunto de reglas que permite la comunicación y transmisión de datos entre dos nodos (computadoras, terminales) que están conectados a una red, es denominado protocolo de red. De acuerdo a la Pila de Protocolos TCP/IP, los protocolos de red se ubican de la siguiente manera: TABLA 1. Protocolos de Red Pila de Protocolos TCP/IP

Capa TCP/IP Protocolos

Aplicación HTTP, FTP, SMTP, VoIP, Telnet, DNS, SSH

Transporte UDP, TCP

Red IP, ICMP

Física

Fuente: Autor

Page 16: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

16

2.4.1 Capa de Aplicación

HTTP El Protocolo de Transferencia de Hipertexto (HTTP, Hypertext Transfer Protocol), que trabaja en la capa de aplicación, es el encargado de controlar todas las transacciones que se realizan en la World Wide Web (www), es decir, se encarga de dar respuesta a las peticiones que son efectuadas entre un usuario y un servidor de la web para así poder visualizar una página web. El protocolo HTTP funciona con ayuda de otros protocolos como lo es el DNS (Sistema de Nombres de Dominio) para cumplir con sus obligaciones. Toda la información web que se puede visualizar está diseñada con un lenguaje de formato denominado HTML (Lenguaje de Marcado de Hipertexto). Cabe de destacar que el protocolo HTTP es algo inseguro al momento de la transmisión de los datos, aunque existen algunas posibles soluciones como lo es S-HTTP (Secure Hypertext Transfer Protocol). Las comunicaciones HTTP generalmente se llevan a cabo a través del protocolo TCP/IP utilizando por defecto el puerto TCP 80, sin embargo, éste puede utilizar otros puertos. (Fielding et al., 1999) FTP El Protocolo de Transferencia de Archivos (FTP, File Transfer Protocol) es el que permite subir o descargar archivos de un servidor, está diseñado para ofrecer la máxima velocidad en la transmisión de los datos, pero tiene un inconveniente muy grande y es que no ofrece la máxima seguridad, puesto que toda la información que viaja se realiza en texto plano sin ningún tipo de cifrado, lo que conlleva a que cualquier persona pueda capturar el tráfico transmitido sin mayores inconvenientes. Existen dos tipos de transferencias de archivos, ASCII (Adecuado para transferir archivos que sólo contengan caracteres imprimibles), y binario (Este tipo es usado cuando se trata de archivos comprimidos, ejecutables para PC, imágenes, archivos de audio)

Page 17: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

17

El FTP por defecto utiliza el puerto 20 para datos y el 21 para control. (Postel &Reynolds, 1985). SMTP El Protocolo Simple de Transferencia de Correo (SMTP, Simple Mail Transfer Protocol) que funciona en la capa de aplicación, proporciona una fiable y eficiente transmisión de correo electrónico ya sea a uno o a varios destinatarios dentro de la misma o diferente red. El tráfico presente en el SMTP es el texto compuesto por caracteres ASCII. (Postel, 1982). SSH El Protocolo Secure Shell (SSH) permite realizar una transmisión de datos de forma segura, a diferencia de otros protocolos como TELNET o TCP (que también sirven para la transmisión de datos), SSH envía el tráfico de una manera encriptada, haciendo casi imposible que un tercero pueda descifrar de una manera legible lo que se está transmitiendo, cabe destacar que la información que se envía y recibe viene con una encriptación de 128 bits. Éste protocolo permite la conexión de un usuario a un host remotamente y comprime los datos generando una mayor velocidad en la transmisión de los mismos. Hoy por hoy se cuenta con dos versiones, SSH y Open SSH. (Medina, 2004-2005). DNS El Sistema de nombre de dominio (DNS, Domain Name System) se utiliza principalmente para la resolución de nombres, es decir, lo que se pretende es decir qué dirección IP pertenece a determinada página web. El DNS lo que permite es no tener que recordar largas direcciones IP para poder acceder a una página web, sino que con un nombre (mucho más fácil de recordar), podamos acceder a ellas, ya el protocolo es el encargado de buscar la dirección IP perteneciente al nombre de dominio que se dé. Postel (1994) y (Smaldone, 2006).

Page 18: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

18

ICANN, Internet Corporation for Assigned Names and Numbers, es la organización que permite el registro de los números de dominio. El principal problema que presenta el protocolo DNS es que, al estar basado en UDP (protocolo de transporte que no garantiza la recepción de la información enviada), tanto las consultas como las respuestas pueden fallar. Los requerimientos del DNS se realizan a través del puerto 53. Postel (1994) y (Smaldone, 2006). Telnet El Protocolo Telnet permite conectar un cliente con un servidor a través de un intérprete de comandos, el tráfico enviado es tipo ASCII. Éste protocolo está basado en tres principios fundamentales que son:

Terminal virtual de red.

El principio de opciones negociadas.

Reglas de negociación. El objetivo principal del protocolo Telnet es permitir que un usuario maneje un terminal de una manera remota. El Protocolo Telnet trabaja en cooperación con otros protocolos como lo son el FTP, SMTP y POP3. (Postel & Reynolds, 1983)

2.4.2 Capa de Transporte

UDP El Protocolo de Datagrama de Usuario (UDP, User Datagram Protocol), trabaja en la capa de transporte, permite enviar datagramas sin haberse realizado una conexión con anterioridad; el módulo del UDP debe estar en la capacidad de determinar las direcciones de origen y destino. Debido a que es un protocolo no orientado a la conexión, no proporciona ningún tipo de control de errores ni de flujo, no se sabe si los paquetes llegan correctamente, aunque cabe destacar que utiliza algunos mecanismos de detección de errores, y al detectar un error el datagrama no es entregado al nodo destino sino que es descartado.

Page 19: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

19

Este protocolo es utilizado en aplicaciones que requieren poco retardo en la transmisión de datos, como las utilizadas en tiempo real; y en aquellos dispositivos que no soportan protocolos complejos como el TCP. Los puertos que pueden ser utilizados pro UDP van desde el 0 hasta el 65.535. Postel (1980).

TCP El Protocolo de Control de Transmisión (TCP, Transmision Control Protocol) tiene inmerso muchos otros protocolos, los cuales permiten que un host se pueda comunicar con otro (sin importar el hardware ni software que cada uno tenga), y estos a su vez puedan estar conectados a la red internet. Este protocolo funciona a nivel de transporte, el cual se enlaza con los protocolos de niveles superiores, y con el protocolo de red IP, es de aclarar que este protocolo no se entiende con otros de la capa de red como lo son IPX, y NetBIOS. (Salavert, 2003) Características:

Protocolo Orientado a la conexión, lo que lo hace ventajoso en comparación con el protocolo UDP.

Tiene recuperación de errores, control de flujo y trabaja bajo conexiones full dúplex (Flujo de datos concurrentes en ambas direcciones).

2.4.3 Capa de Red

ICMP

El Protocolo de Mensajes de Control de Internet (ICMP, Internet Control Message Protocol) que está en la capa de red, trabaja en conjunto al Protocolo IP, ya que éste último no garantiza la entrega de los paquetes, ICMP es utilizado para informar acerca de inconsistencias en la entrega de paquetes erróneos, y control de datos en una red; por lo tanto este no fue diseñado para transporte. Los mensajes ICMP se envían en varias situaciones como lo son:

Page 20: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

20

Cuando un datagrama no llega a su destino.

Cuando el datagrama llega con errores.

Cuando la puerta de enlace (Gateway) puede comunicarle al host que hay una ruta más corta por la cual se puede enviar el datagrama.

Como ICMP trabaja con IP, los mensajes de error enviados también pueden tener errores, por lo tanto es cuando se envía un nuevo mensaje de ICMP. Postel (1981). IP

Protocolo llamado Protocolo de Internet, el cual tiene como propósito transmitir datagramas a través de un conjunto de redes interconectadas entre sí, con el fin de que cada datagrama alcance su destino.

El protocolo IP (Internet Protocol), establece una serie de reglas básicas que debe seguir una computadora para poder comunicarse con otras dentro de una red, y establece el formato de los datagramas; de esta manera define un esquema de direccionamiento, el cual usa para asignarle a cada máquina una dirección única, con la cual se va a identificar dentro de la red. (Herrera, 2003)

Una de las aplicaciones del protocolo IP es VoIP (Voice Over IP) VoIP

Voz sobre el protocolo de Internet (VOIP,) es la familia de tecnologías que permiten a las redes IP utilizarlas para aplicaciones de voz, tales como telefonía, mensajería instantánea de voz y teleconferencias. Voz IP también es Llamada Telefonía IP, Telefonía de Internet, Telefonía de banda ancha, VoIP es la técnica utilizada para el enrutamiento de conversaciones de voz a través de Internet o por cualquier otra red basada en IP. (Sattar Abdul, 2008)

A diferencia de las llamadas en el modelo tradicional (Conmutación de Circuitos), en las llamadas de Voz IP, se utiliza la ―Conmutación de Paquetes‖, en escenario de conmutación de paquetes, los dispositivos múltiples

Page 21: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

21

comparten una sola red de datos, comunicándose mediante el envío de paquetes de datos de unos a otros. (José & Rafael, 2006)

2.5 SOFTWARE GENERADORES DE TRÁFICO 2.5.1 Ostinato Ostinato es un generador y analizador de tráfico de paquetes de redes de comunicaciones con una GUI amigable. Posee creación de paquetes personalizados con edición de cualquier campo para diversos protocolos: Ethernet, 802.3, LLC SNAP, VLAN (with Q-in-Q), ARP, IPv4, IPv6, IP-in-IP también conocido como IP Tunneling, TCP, UDP, ICMPv4, ICMPv6, HTTP, SIP, RTSP, NNTP, etc. Es útil tanto para pruebas funcionales como de rendimiento. (Ostinato, 2010).

Se ejecuta en Windows y Linux 2.5.2 NSAuditor Es una herramienta que reúne un amplio rango de utilidades de red, para efectuar diversas operaciones como auditorías, escaneo, monitorización, y mucho más. Permite descubrir servicios de red y comprobar sus posibles vulnerabilidades, listar todos los puntos finales TCP y UDP junto con su proceso asociado, descubrir nombres de NetBios, rastrear servidores MS SQL, intentar detectar rastros de hardware, entre otros. El programa permite también el filtrado y análisis de paquetes de red en tiempo real, escaneo de proxys web, búsqueda de direcciones IP, y en total más de 35 herramientas y utilidades de red para hacer todo tipo de operaciones: sniffing, acceso a máquinas, validación de email, generador de tráfico HTTP, búsquedas de DNS y WHOIS, generación de informes en formato HTML y XML, etc. (NSauditor, 2010)

Page 22: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

22

Plataformas soportadas:

Solo para Windows. 2.4.3 Ethereal Ethereal es utilizado por los profesionales de redes en todo el mundo para solucionar problemas de análisis, desarrollo de software y protocolos. Su código es abierto esto permite añadir mejoras por parte de la comunidad a través de la red. (Ethereal, 2007) Funciona en todas las plataformas informáticas más populares, incluyendo Unix, Linux y Windows. Plataformas soportadas:

Windows

Red hat / fedora

Sun Solaris

2.5.4 TF – GEN Tf-Gen permite generar tráfico en la red de área local (Ethernet, por ejemplo). Si se desea evaluar el rendimiento de red, es necesario generar tráfico en la red. Trabaja con una Aplicación GUI bajo Windows a 32 bits. Este generador puede inyectar tráfico multicast, y generarlos de acuerdo a diferentes patrones. Se recomienda usar TF-GEN bajo Windows NT/2000; éste software genera únicamente tráfico TCP/IP y UDP. (Yumo, 2010) Plataformas de ejecución:

Windows.

Page 23: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

23

2.5.5 IPERF Iperf es una herramienta moderna para la medición del rendimiento de la red escrito en C++, que utiliza pruebas de red común, permite generar tráfico TCP y UDP, flujos de datos y medir el rendimiento de una red. Además, permite al usuario ajustar diversos parámetros que pueden ser utilizados para pruebas, alternativamente o en sintonía para la optimización de una red. Iperf sigue una funcionalidad cliente-servidor, y puede medir el rendimiento entre los dos extremos, ya sea bi-direccionalmente o unidireccionalmente; es software de código abierto y funciona en varias plataformas incluyendo Linux, Unix y Windows. (Iperf, 2003) 2.5.6 HPING 2 Hping es una herramienta de tipo generador de paquetes. Soporta protocolos TCP, UDP, ICMP y protocolos RAW-IP, tiene la capacidad de enviar archivos entre un canal cubierto. (Sanfilippo, 2006) Se pueden realizar funciones tales como: testear firewalls, scannear puertos (mediante flags), Os Fingerprint, Traceo de rutas, e incluso, Hping2 es una utilidad principalmente creada para auditar redes. Como la mayoría de las herramientas utilizadas en la seguridad informática, Hping es útil para los expertos en seguridad, posee una gran cantidad de solicitudes de las pruebas para la red y administración del sistema. Plataformas soportadas:

Existe Hping2 para Windows.

Linux.

2.5.7 Némesis Némesis es un paquete de red de línea de comandos es de fabricación artesanal y de utilidad para las pruebas de inyección para los sistemas de detección de

Page 24: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

24

intrusiones de red, cortafuegos, pilas IP, etc. Némesis puede crear e inyectar ARP, DNS, ETHERNET, ICMP, IGMP, IP, OSPF, RIP, TCP y paquetes UDP. Permite hacer uso de la propiedad intelectual y los modos de inyección Ethernet, casi todos los paquetes personalizados se pueden hacer manualmente y se inyectan. (Nathan & Stone, 2004) Plataformas soportadas:

BSD

Linux

Solaris

Mac OS X

Microsoft Windows 2.5.8 Rude and Crude RUDE representa en tiempo real de datos del emisor de UDP y CRUDE para el colector de RUDE. RUDE es un programa pequeño y flexible, que genera tráfico a la red, que puede ser recibida y registrada en el otro lado de la red con el CRUDE. (Laine, Saaristo & Prior, 2002) En la actualidad estos programas pueden generar y medir sólo el tráfico UDP. Plataforma soportada:

Linux con licencia GPL2.

2.5.9 Scapy Scapy es un programa de paquetes de manipulación interactiva. Es capaz de forjar o decodificar los paquetes de un amplio número de protocolos y enviarlos, la captura de ellos, coinciden con las peticiones y respuestas, y mucho más. Se pueden manejar fácilmente las tareas más clásicas como la exploración, tracerouting, el sondeo, las pruebas unitarias, los ataques o el descubrimiento de la red (que puede reemplazar hping, el 85% de nmap, ARPSpoof, arp-sk, arping, tcpdump, tethereal, p0f, etc.) También funciona muy bien en un sinnúmero de otras tareas específicas que la mayoría de otras herramientas no puede manejar, como el envío de marcos válidos, inyectando su propio marco 802,11, la combinación de técnicas (VLAN hopping + envenenamiento de caché ARP, VOIP

Page 25: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

25

decodificación en el canal cifrado WEP, entre otros. (Biondi, P & Scapy Community, 2008) Plataformas Soportadas:

Linux

Unix genérico

OpenBSD

FreeBSD

Mac OS X 10.4 (Tiger)

Windows. 2.5.10 Generador de tráfico de Internet Distribuido D-ITG presenta una implementación de múltiples tareas. Los protocolos soportados son: TCP, UDP, ICMP, DNS, Telnet, VoIP (G.711, G.723, G.729, detección de actividad de voz, comprimido RTP). Utiliza distribuciones exponenciales, de Pareto y de Poisson. Este generador de tráfico fue diseñado para incrementar la tasa de bits generados, aumentar la tasa de bits recibidos, con lo cual buscan incrementar a su vez la escalabilidad y usabilidad del mismo. D-ITG permite el establecimiento de condiciones de servicio (DS) y el paquete de campo TTL. Tanto duración de la prueba y el retraso (con respecto al tiempo inicial del experimento) se pueden establecer. (Pescapé, Emma, Avallone, Botta & Ventre, 2004) Plataformas soportadas:

Distribuciones de Linux.

Windows. 2.5.11 Pktgen Pktgen es una herramienta de prueba de alto rendimiento incluida en el kernel de Linux. Se puede utilizar para generar paquetes ordinarios para probar otros dispositivos de red. Especialmente es interesante el uso de Pktgen para probar enrutadores o puentes. Ya que Pktgen está en el núcleo de linux, se pueden generar tasas de paquetes muy altas. (Olsson R, 2005)

Page 26: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

26

Plataformas soportadas:

Distribuciones de Linux. 2.5.12 PacketGenerator Es una herramienta para realizar pruebas de carga de red y pruebas de reproducción de tráfico. Se trata de un programa de software para la transmisión de tráfico a través de 10/100M Ethernet desde un PC con Windows. El software es compatible con el modo de paquete único, para el envío múltiple de un mismo paquete y el modo de tampón de regeneración de tráfico capturado de la red real. (Packet Generator, n.d/2010) Plataformas soportadas:

Windows (Comercial) 2.5.13 Packet Excalibur Motor gráfico multi-plataforma de red de paquetes y secuencias de comandos de texto extensible con protocolo basado en las descripciones. Es una herramienta de red para construir y recibir paquetes a medida. Con paquetes Excalibur podrás decidir los atributos de paquetes desde la capa física hasta la cima, olfatear paquetes falsos (generador de paquetes) en una sola interfaz, scripts de construcción en el entorno gráfico, definir protocolos adicionales en archivos de texto simple. (Packet Excalibur, n.d/2010) Plataformas soportadas:

Linux.

Windows. 2.5.14 Packgen Packgen es un generador de paquetes de red simple, escrito en Ruby. Maneja marcadores DiffServ, útil para probar ancho de banda y QoS. Puede generar varios flujos de datos, cada uno con sus propias propiedades como el nombre, destino, ancho de banda, tamaño del paquete, DSCP (punto de código de servicios diferenciados) y rango de tiempo. (Ghislain, 2005)

Page 27: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

27

Plataformas soportadas:

Ruby (Licencia GPL)

2.5.15 GASP GASP significa «Generador y analizador del sistema para los protocolos". Le permite construir paquetes a mano y probar el comportamiento de su programa cuando se enfrentan a algunos paquetes extraños. GASP se divide en dos partes: un compilador que tengan las especificaciones de los protocolos y generar el código para manejarlo, este código es un nuevo comando Tcl como GASP en basarse en Tcl / Tk y amplía las instalaciones de secuencias de comandos proporcionada por Tcl. (Riesterer, 2000) Plataformas soportadas:

Windows.

Linux. 2.5.16 GSpoof 3.0 Gspoof es una herramienta que hacen más fácil y precisa la creación y el envío de paquetes TCP/IP. Funciona desde la consola (línea de comandos) y tiene una interfaz gráfica fácil de usar escrita en GTK. Apoya la manipulación encabezado Ethernet, la manipulación de cabecera IP, la manipulación de cabecera TCP, la carga útil de TCP, las inundaciones, el apoyo a la notificación de la congestión. (Embyte, 2009) Plataformas soportadas:

Linux (Licencia GPL) 2.5.17 Harpoon Harpoon es un generador de tráfico de nivel de flujo. Se utiliza un conjunto de parámetros de distribución que pueden ser extraídos automáticamente a partir de vestigios de Netflow para generar flujos, incluye características temporales y espaciales. Harpoon puede ser usado para generar tráfico de fondo representativo de aplicación o protocolo de pruebas, o para realizar pruebas de hardware de

Page 28: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

28

conmutación de red. Harpoon genera tráfico TCP, UDP, HTTP, DNS, NTP. (Sommers, 2005) Plataformas soportadas:

Linux

Solaris 8

FreeBSD

MAcOSX 2.5.18 ISIC ISIC (IP inspector de la integridad) es una suite de utilidades para el ejercicio de la estabilidad de una pila de IP y su componente de las pilas (TCP, UDP, ICMP.) Genera paquetes pseudo aleatorios del protocolo de destino; en los paquetes se da la tendencia a cumplir. Es decir, el 50% de los paquetes generados pueden tener opciones de propiedad intelectual. 25% de los paquetes pueden ser fragmentos IP. (ISIC, n.d/2010) Plataformas soportadas:

Linux.

2.5.19 PackETH PackETH es una herramienta generadora de paquetes para Ethernet. Permite crear y enviar cualquier paquete posible o secuencia de paquetes en la Ethernet. Protocolos soportados: Ethernet II, Ethernet 802.3, 802.1Q, QinQ, ARP, IPv4, definida por el usuario carga útil de la capa de red, UDP, TCP, ICMP, IGMP, definida por el usuario carga útil de la capa de transporte, RTP. (Killerbee2002, 2006) Plataforma soportada:

Linux (GPL2) 2.5.20 PackIt

Page 29: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

29

Paquete de caja de herramientas se puede personalizar, inyectar, controlar y manipular el tráfico IP. Puede suplantar casi todos los TCP, UDP, ICMP, IP, ARP, RARP, y las opciones de Ethernet de cabecera, PackIt puede ser útil en la prueba de firewalls, detección de intrusos y sistemas de prevención, escaneo de puertos, simulación de tráfico de red y generales de TCP / IP de auditoría. (Packit, n.d/2010) Plataformas soportadas:

Linux (GPL2)

2.5.21 PacketX PacketX es un generador de paquetes que se pueden utilizar para simular diversos ataques, y ofrece una manera fácil de comprobar la robustez de las aplicaciones de seguridad diferentes, tales como firewalls y routers. Este generador de paquetes se puede utilizar para crear paquetes 'spoofed' (paquetes que se hacen a mano para incluir información de la 'fuente' falso) y ver si el firewall o router detectan este intento de ataque. (NT OBJECTives, Inc., n.d./2010) Plataforma soportada:

Windows.(gratis) 2.5.22 SendIP SendIP es una herramienta de línea de comandos para permitir el envío de paquetes IP. SendIP tiene un gran número de opciones de línea de comandos para especificar el contenido de cada cabecera de un NTP, BGP, RIP, RIPng, TCP, UDP, ICMP o IPv4 primas y de paquetes IPv6. ([email protected], 2003) Plataforma soportada:

Linux (GPL)

Page 30: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

30

2.5.23 TCP Ivo TCP Ivo es una herramienta que proporciona reproducción de paquetes de alta velocidad desde un archivo de traza utilizando hardware de PC estándar y el software de código abierto está disponible de forma gratuita. Requiere varios parches para el kernel de Linux para un máximo rendimiento. Entre otras cosas, un parche para el kernel de baja latencia, un parche para el kernel preemptible, y un parche temporizador es necesario para apoyar a las tasas de gigabit. (Feng, Goel, Bezzaz &Walpole, 2003) Plataformas soportadas:

Linux. 2.5.24 LIBNET Libnet no es una herramienta, pero es una API de alto nivel (caja de herramientas) que permite al programador de aplicaciones construir e inyectar paquetes de red. Proporciona una interfaz simplificada para portátiles y paquetes de red de bajo nivel. La mayoría de las aplicaciones en Libnet utilizan la lista para la creación de paquetes y la funcionalidad subyacente de la inyección. (Libnet, n.d./2010) Plataformas soportadas:

Linux. (BSD gratis) 2.5.25 MGEN El Multi-Generador (MGEN) es un software de código abierto desarrollado por el Laboratorio de Investigación Naval (NRL). MGEN proporciona la capacidad de realizar pruebas de rendimiento de la red IP y mediciones utilizando tráfico UDP / IP (TCP se está desarrollando actualmente). MGEN actualmente se ejecuta en diferentes sistemas operativos basados en Unix (incluyendo Mac OS X) y las plataformas Win32. En este momento, dos versiones diferentes (MGEN 4.x y MGEN 3.x) de la MGEN están disponibles. (Naval Research Laboratory, n.d./2010)

Page 31: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

31

Page 32: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

32

3. METODOLOGÍA

Para llevar a cabo el presente proyecto y con el fin de cumplir con el objetivo general, se llevaron a cabo una serie de actividades las cuales tienen como referente un enfoque cualitativo; la investigación es de tipo argumentativa y complementaria; la metodología a utilizar es la teoría fundamentada, con la cual se pretende obtener una mejor visión a cerca de los diferentes tipos y generadores de tráfico existentes. De la misma forma, fue necesaria una propuesta inicial del problema, para lo cual se pasó por los procesos de, Planificación, Análisis, Implementación y Pruebas respectivas. Toda la información que está sujeta en este informe es producto de la investigación exhaustiva y progreso de cada una de las etapas anteriormente dichas con tiempos establecidos. En la etapa de planificación se llevo a cabo la construcción de un cronograma de actividades, el cual sirvió para darle una mejor administración y control de tiempos de ejecución de las diferentes tareas y definir los alcances del proyecto. Las actividades que se llevaron a cabo fueron:

1. Exploración de tipos de tráfico: se realizó la búsqueda de los diferentes tipos de tráfico existentes, usados comúnmente en redes. El tiempo empleado en esta actividad fue de 1 meses.

2. Exploración de herramientas generadoras de tráfico: se investigó sobre las herramientas generadoras de tráfico, y se estudió de cada una los tipos de tráfico que generaba, características principales y funcionamiento. El tiempo empleado en esta actividad fue de 2 meses.

3. Selección de dos generadores de tráfico: luego de haber estudiado las diferentes herramientas generadoras de tráfico existentes, se seleccionaron dos de acuerdo a las mejores características y tipos de tráfico que manejaba. El tiempo empleado en esta actividad fue de 3 meses.

4. Estudio de las dos herramientas seleccionadas: al haber seleccionado las herramientas más acordes a las necesidades, se inició un estudio más a fondo de cada una de ellas, manuales y perspectivas. El tiempo empleado en esta actividad fue de 3 meses.

5. Instalación y pruebas con las herramientas seleccionadas: al estudiar las dos herramientas seleccionadas y conocer un poco más, a cerca de su funcionamiento, se procedió a instalar cada una de ellas en las plataformas

Page 33: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

33

más apropiadas; luego se realizaron una serie de pruebas pertinentes para evaluar el funcionamiento de las mismas. El tiempo gastado en esta actividad fue de 3 meses.

Page 34: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

34

4. DESARROLLO DEL PROYECTO 4.1 SOFTWARE SELECCIONADOS De acuerdo a la actividad tres (3) contenida dentro de la metodología del presente proyecto se seleccionaron (2) software generadores de tráfico, los cuales permiten generar varios tipos de tráfico. Se eligió Ostinato y Harpoon, de los cuales se presenta en más detalle las características, el funcionamiento, la instalación y algunas capturas de tráfico. La elección de estos generadores de tráfico de debe a las siguientes características:

Escalabilidad: Harpoon permite crear nuevos módulos de generación de tráfico, los cuales se pueden ajustar a la necesidad de cada usuario.

Multiplataforma: Ostinato puede ser ejecutado tanto en Windows como en Linux.

Harpoon posee entre sus características que es un generador de tráfico escrito bajo c y c++ y que utiliza distribuciones exponenciales para su funcionamiento.

Simplicidad: Ostinato es una herramienta amigable al usuario en cuanto a instalación y configuración se refiere.

Ostinato entre sus características esta que permite generar un número mayor de tipos de tráfico, y los más representativos en internet.

Harpoon por su lado permite generar tráfico similar al de internet, entre estos se encuentran algunos de audio y video, DNS y NTP.

4.1.1 Ostinato Ostinato es un generador y analizador de tráfico de paquetes de redes de comunicaciones con una GUI amigable. Pretende ser Wireshark en reversa (Ver Sección 4.1.3 para saber más a cerca de Wireshark) por lo tanto es complementario a Wireshark. Posee creación de paquetes personalizados con edición de cualquier campo para diversos protocolos. (Ostinato, 2011)

Page 35: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

35

A. Características

Funciona tanto en Windows y Linux.

Soporta los protocolos estándar más comunes Ethernet/802.3/LLC de SNAP, VLAN (con QinQ), IP, ARP,TCP, UDP, ICMP

Modifica cualquier campo de cualquier protocolo.

Pila de protocolos en cualquier orden arbitrario.

Creación y configuración de múltiples flujos.

Configurar las tasas de flujo, las explosiones, número de paquetes.

Solo el cliente puede controlar y configurar varios puertos en varios equipos de generación de tráfico.

Control exclusivo de un puerto, proporciona un entorno de prueba controlada. Para evitar que los paquetes perdidos actúen el sistema operativo de una forma no deseada.

La ventana de estadísticas muestra el puerto en tiempo real, de recepción y transmisión y las tasas de captura de paquetes (necesidades Wireshark para ver los paquetes capturados). Ostinato (2011)

Ostinato es uno de los software generadores de tráfico, elegido dentro de los muchos que se encontraron, teniendo en cuenta sus características, interfaz amigable con el usuario, facilidad de configuración a la hora de generar tráfico, y en complemento con el Wireshark la facilidad de visualizar y analizar las diferentes capturas; esto llevó a concluir que sería uno de los adecuados para trabajar dentro del proyecto, a partir de esto se decidió estudiarlo más a fondo con el fin de identificar las posibles ventajas y desventajas del mismo a la hora de ejecutarse. Inicialmente se procedió a buscar el software para conocer un poco más sobre él y verificar su instalación tanto en Windows como Linux, a lo largo de esta búsqueda surgieron algunos inconvenientes, los cuales se detallarán más adelante. Después de encontrar el paquete instalador para Linux llamado ―ostinato-src-0.3.tar.gz‖, el cual fue descargado de la página encontrada llamada ―Ostinato Packet/Traffic Generator and Analyzer de http://code.google.com/p/ostinato/‖, dedicada únicamente a este software y donde se muestran algunos detalles de la instalación, se encuentran las descargas para los diferentes sistemas operativos más usados recientemente y una guía rápida de usuario en la cual explican como iniciar Ostinato de una forma fácil y rápida.

Page 36: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

36

Para instalar el software desde la fuente se debe contar inicialmente unas aplicaciones complementarias, las cuales también se pueden descargar del sitio oficial y se nombran a continuación:

QT 4.3+ Protocol Buffers 2.2+ libpcap (Winpcap for Windows) bindconfig (for Windows - optional)

En la página de Ostinato también se encuentra una explicación más a fondo de cómo instalarlo desde la fuente, pero esta no se tuvo en cuenta, ya que éste se logró instalar de forma sencilla, y así realizar algunas pruebas. B. Instalación Como está descrito capítulos anteriores, este software existe tanto para Linux como para Windows, teniendo en cuenta esto, se realizaron intentos de instalación primero en Linux de la siguiente manera: Instalación en Linux

1. Se descarga el archivo ―ostinato-src-0.3.tar.gz‖, el cual se descomprime

desde la terminal. Con el siguiente comando: # tar xvfz ostinato-src-0.3.tar.gz

2. Al estar en el directorio raíz donde se ha descargado el archivo ostinato-src-

0.2.tar.gz, se instala la aplicación contenida en el directorio actual llamada Ostinato. Ejecutando los siguientes comandos: # ./configure # make # make install Ostinato

3. Se sigue el mismo procedimiento anterior con los demás archivos complementarios para la eficiente ejecución de Ostinato, descritos anteriormente, como el Winpcap.

Page 37: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

37

Este intento de instalación se realizó siguiendo las instrucciones consignadas en la página de Ostinato, pero esta no se logró completamente debido a que aparecieron unos errores en el proceso los cuales no fueron posibles de solucionar, a continuación se citan los tipos de errores que se presentaron:

A pesar de que esta página contiene mucha información acerca del software no habla a cerca de los errores que surgen durante la instalación de Ostinato en Linux.

Al tratar de instalar el software en Fedora 10 distribución de Linux, se ejecuta el comando ―tar xvfz ostinato-src-0.2.tar.gz‖ para desempaquetar el archivo comprimido, pero al ejecutar el comando ―make install‖, el cual se ejecuta directamente desde el directorio raíz, no se hace efectiva la instalación, aparece el siguiente error ―There are no packages available ostinato-2.0‖

Después de estudiar las posibles soluciones para la instalación del software en la distribución Fedora 10, y no llegar a una, se decidió instalar el software en Windows, dado que este no difería mucho en funcionamiento si se instalaba en cualquiera de los dos Sistemas Operativos, pues su interfaz gráfica era igual, y el archivo generado por el software analizador Wireshark tenía el mismo formato tanto en Linux como en Windows; a continuación se describen los pasos para su instalación. Instalación en Windows

1. Inicialmente se descarga el software de la página http://code.google.com/p/ostinato/

2. Se descarga el WinPcap del mismo sitio

FIGURA 1. Instalador WinPcap

Fuente: Autor

3. Se descarga el Wireshark, ya que es el software a través del cual Ostinato entrega resultados de la captura de tráfico

FIGURA 2. Instalador Wireshark

Page 38: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

38

Fuente: Autor

4. Se instalan las tres aplicaciones para poder hacer efectivo el funcionamiento de Ostinato, de la siguiente manera:

a. WinPcap

Se ejecuta el instalador desde la carpeta donde queda guardado después de su descarga.

Se inicia la instalación

FIGURA 3. Instalación de Winpcap

Fuente: Autor

Page 39: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

39

Se da clic en ―Next‖ repetidamente hasta finalizar la instalación. b. Wireshark

Se ejecuta el instalador desde la carpeta donde fue descargado previamente.

Se inicia la instalación.

FIGURA 4. Instalación de Wireshark

Fuente: Autor

Se da clic en ―Next‖ continuamente hasta terminar la instalación. Algunos Problemas encontrados al ejecutar Ostinato en Windows

Al ejecutar el software en Windows XP, con los requisitos previos de los que hablan en el sitio web y al correr la aplicación principal, los grupos de puertos no aparecen conectados como debería.

Page 40: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

40

Después de buscar mucho con el fin de resolver el problema planteado anteriormente, se llegó a la conclusión, después de ensayar en dos equipos con las mismas especificaciones e iguales sistemas operativos, que puede ser el hardware el que haya provocado fallos en la ejecución de Ostinato.

Al ejecutar por fin Ostinato en otro equipo, con el mismo sistema operativo, éste funciona, pero es necesario agregar un dispositivo de red de bucle invertido ―Ms loopBack-driver‖.

C. Funcionamiento

Ventana Principal de Ostinato, en esta ventana se selecciona el puerto a utilizar para la generación de tráfico, se crean las corrientes y se configuran.

FIGURA 5. Ventana Principal de Ostinato

Fuente: Autor

Protocol Selection, Selección de protocolos, en esta ventana se seleccionan los protocolos con los que se desea iniciar la captura de tráfico, como se

Page 41: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

41

puede apreciar en la figura 6 existen una serie de protocolos incluidos en esta herramienta para generar tráfico, en esta ventana están organizados de acuerdo a los niveles en el modelo OSI y se seleccionan los protocolos necesarios para el tráfico a generar.

FIGURA 6. Ventana referente a la selección de protocolos

Fuente: Autor

Packet View, en esta ventana se muestran las configuraciones de los protocolos seleccionados, número de paquetes, dirección de fuente y destino, y demás configuraciones realizadas.

Page 42: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

42

FIGURA 7. Ventana referente a la vista de configuraciones

Fuente: Autor

Stream Control, en esta ventana se configura la corriente, número de paquetes a ser enviados, y el control de la corriente; como se aprecia en la figura 8, se selecciona la opción Packets en la casilla Send, En la casilla Numbers, se establece el número de paquetes a enviar; el resto de casillas se dejan con la información por defecto.

Page 43: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

43

FIGURA 8. Ventana referente al control de corriente

Fuente: Autor

D. Ventajas

Software de fácil instalación en Windows.

Cuenta con varios tipos de tráfico que se pueden generar.

Facilidad de configuración de las corrientes de tráfico.

Interfaz gráfica amigable al usuario.

Page 44: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

44

Permite generar la captura de tráfico a través de Wireshark, el cual permite guardar esta captura en un archivo de formato .pcap, y facilita la visualización y análisis.

E. Desventajas

Este software no trabaja con ninguna distribución estadística, para el análisis del tráfico.

4.1.2 Harpoon Harpoon2 es un generador de tráfico que puede ser usado para generar tráfico representativo para pruebas a nivel de protocolos o aplicación o para pruebas de hardware de conmutación de red. También tiene como objetivos generar tráfico de red escalable de aplicaciones independientes a un nivel de flujo IP (2) Para ser fácilmente parametrizado, y crear tráfico que sea estadísticamente idéntico al tráfico medido en un punto clave en internet. Harpoon contiene tres modelos de transferencia de paquetes UDP: tasa de paquetes constante, un ping-pong periódico de intervalo fijo, y un ping-pong distribuido exponencialmente. El tipo de primera fuente es similar a algunas de audio y vídeo, mientras que los dos últimos tipos son destinados para imitar la norma Network Time Protocol (NTP) y de nombres de dominio (DNS), respectivamente. Harpoon está diseñado bajo la arquitectura Cliente-Servidor. A. Características

Harpoon puede ser instalado bajo cualquier distribución de Linux.

Utiliza el software analizador de protocolos Wireshark (Ver sección 4.1.3 para más información sobre este software), para analizar las capturas de tráfico.

Es de fácil implementación para personas con buen nivel de conocimiento en Linux.

Entre los requerimientos para la construcción de Harpoon se debe incluir un compilador de C++. Recientes versiones de GCC satisfacen este requerimiento, también se debe implementar los hilos POSIX, y la librería de análisis eXpat XML.

2 A FLOW LEVEL TRAFFIC GENERATOR. USER MANUAL. Joel Summers 2005.

Page 45: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

45

Los scripts harpoon_conf.py y harpoon_reconf.py requieren el interpretador de Python versión 2.3 o mayor.

B. Instalación Pasos generales para construir Harpoon en cualquier distribución de Linux

1. Descargar y descomprimir la distribución de Harpoon, usando GNU tar,

mediante: Tar xzvf harpoon_distribution.tgz‖

2. Ejecute ./configure sobre el directorio de harpoon. Este paso construirá apropiadamente los archivos Make sobre el sistema. La instalación por defecto se realizará en /usr/local/harpoon.

3. Luego ejecute Make. Por defecto los componentes principales de Harpoon, todos los plugins y algunas herramientas son construidas.

4. Luego ejecute make selfconf (opcional). Para construir la herramienta de autoconfiguración harpoon_flowproc.

5. Ejecute make doc. Se necesitará las herramientas texinfo GNU y/o doxygen para este trabajo.

6. Ejecute make install (opcional). Mueve los componentes apropiados para la instalación del directorio objetivo. Por defecto, el directorio es /usr/local/harpoon. (Harpoon, 2006)

El manual traducido de Harpoon se encuentra anexo a este documento (Ver Anexo 1).

Paso a paso instalación de Harpoon bajo Debian:

Lo primero que hay que realizar es instalar el compilador de c++. o Editar el /etc/apt/sources.list

Comentar las líneas que contengan deb cdrom. Agregar las siguientes líneas, las cuales permiten agregar los

repositorios para poder descargar los paquetes de internet: deb http://ftp.us.debian.org/debian lenny main contrib non-free deb-src http://ftp.us.debian.org/debian lenny main contrib non-

free o Hacer un update para que los cambios del source.list tengan efecto.

Page 46: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

46

apt-get update o Instalamos el compilador de c++.

apt-get install g++ o lanzar el siguiente comando para saber cómo se llama el paquete de

expat exactamente: apt-cache search expat

o lanzar el siguiente comando para instalar la librería expat: apt-get install libexpat1-dev

o lanzar el siguiente comando para instalar el make: apt-get install make

Luego comenzamos con la Instalación que sugiere el manual de Harpoon (Ver Anexo 1): o Bajo el directorio de Harpoon realizamos los siguientes pasos:

./configure Make Make Install.

Si al hacer el Make se producen errores, se debe observar bajo que directorio se encuentra en archivo en c++ que debemos corregir, y agregar la respectiva librería de c++ a la que pertenezca la función que ocasione el error.

C. Funcionamiento Para probar el funcionamiento de Harpoon se debe hacer lo siguiente; Validar los archivos de configuración del lado del cliente y servidor; Modificar el archivo de configuración de direcciones; Iniciar Harpoon en ambas máquinas, tanto cliente como servidor; lo cual se puede apreciar de forma más directa en la sección 4.2.2 donde se hace una prueba de generación de tráfico con Harpoon. Nota: ( Se debe tener en cuenta que pueden haber múltiples configuraciones de plugins TCP corriendo como cliente y servidor en un único proceso, pero cada uno debe tener nombres diferentes.) Para ver el funcionamiento de Harpoon más a fondo, es necesario ver el manual. (Ver Anexo 1)

Page 47: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

47

D. Ventajas

Ya que Harpoon maneja distribuciones estadísticas como: Distribución Exponencial y de Pareto, se puede configurar qué tipo de distribución utilizar y qué tanto volumen de tráfico inyectar en la red, además se pueden configurar los intervalos de duración entre paquetes de acuerdo a las necesidades. Se pueden anidar archivos de configuración XML los cuales permiten crear nuevas configuraciones en cuanto a la generación de tráfico se refiere, tomando cada uno y modificando el código XML del archivo principal que se va a validar. Harpoon maneja una característica que lo hace flexible y es que si se quiere inyectar cualquier otro tipo de tráfico que en el momento Harpoon no esté en la capacidad de generar, brinda la posibilidad de adicionar módulos de diferentes tipos de tráfico que el usuario mismo construya, en lenguaje C. E. Desventaja

La única desventaja es a nivel de amigabilidad de la herramienta, ya que no cuenta con una interfaz gráfica que facilite su administración y gestión, ya que todo se realiza por medio de la consola (BASH).

4.1.3 Software Analizador de protocolos de red Wireshark El software analizador de protocolos de red que permitió estudiar las diferentes capturas de tráfico fue el Wireshark, ya que es el software más usado y completo en el proceso de captura de tráfico de red. Wireshark, anteriormente llamado Ethereal, es una herramienta que permite analizar el tráfico (paquetes/protocolos) que está circulando por la red en cualquier momento y de una manera detallada, este tipo de software es denominado sniffer. Para la implementación del wireshark se puede utilizar su interfaz grafica o hacerlo por medio de línea de comandos, cabe destacar que debe estar con privilegios de ―root‖. (Wireshark, 2011) Wireshark tiene dos métodos para analizar el tráfico que viaja a través de la red:

Page 48: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

48

En una red que se encuentre en funcionamiento al momento de analizarla.

Desde un archivo de lectura previamente generado por algún otro software. Algunas de las características que acompañan al software son:

Multiplataforma.

Trabaja con GPL.

Cuenta con una característica de filtrado que le permite solo la búsqueda de paquetes definidos previamente.

Posibilita la obtención de información detallada del protocolo utilizado por el paquete.

Permite la importación y exportación de los paquetes capturados desde y hacia otros programas.

No se comporta como un IDS (Instrusion Detection System) aunque ayuda a la detección de anomalías en la red.

Es Open Source.

A. Instalación El instalador en todos los sistemas operativos y en sus diferentes versiones se puede obtener de la página oficial http://www.wireshark.org/. Para este caso se instalará en la distribución de Linux Fedora 10 y la versión 1.4.0 del Wireshark. Antes de iniciar con el proceso de instalación como tal del Wireshark, es recomendable instalar previamente las siguientes herramientas:

Glib: Se puede obtener en www.gtk.org (Terminal yum search glib, se instalan glib.i386 & glib-devel.i386))

GTK+: Se puede obtener en www.gtk.org

Libpcap: Librería que utiliza wireshark para capturar los paquetes. Se puede obtener en www.tcpdump.org

Una vez instaladas las utilidades del Wireshark anteriormente mencionadas, se inicia con el proceso de instalación, lo primero que se debe hacer es descomprimir el archivo del Wireshark descargado previamente, esto se hace con el comando: tar zxvf <versión a instalar del wireshark, en este caso: wireshark-1.4.0.tar.gz> Luego se procede a entrar al directorio donde quedan los archivos previamente descomprimidos ingresando el comando:

Page 49: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

49

cd <ruta del directorio wireshark, en este caso wireshark-1.4.0/> Una vez se esté en el directorio se configuran los archivos fuentes para asegurar su buen funcionamiento ejecutando el comando: ./configure Luego pueden aparecer errores de byacc, yacc & bison, etc., para solucionarlo se buscan dos archivos faltantes (.i386 y –devel.i386) con: yum search <nombre> Y se instala con: yum install <nombre> A continuación se pretende generar el archivo ejecutable para su respectiva instalación ingresando make Una vez se obtiene el archivo ejecutable todo está listo para iniciar el proceso de instalación ingresando el comando make install Para ejecutar desde la terminal el comando es: ./wireshark Filtros En muchas ocasiones, cuando analizamos una red nos aparecen muchos tipos de tráfico de paquetes, de los cuales solo queremos visualizar unos cuantos que viajan por la red, para ello, Wireshark ofrece una gran utilidad y son los filtros, estos son los que permiten que solo se capture el tráfico (paquetes) deseado obviando el resto. Wireshark establece dos tipos de filtros, filtros de visualización y filtros de captura.

Filtros de visualización: Este tipo de filtro se hace sobre los tipos de tráfico que ya han sido capturados por el Wireshark, esto no quiere decir que si

Page 50: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

50

hacemos un filtro se eliminen los demás, lo que sucede es que únicamente se va a mostrar del conjunto de los capturados, los que cumplen con la instrucción del filtro.

Filtros de captura: Para hacer uno de los filtros de captura se debe hacer uso de las librerías pcap en Linux o WinPcap en Windows. Cuando se habla de filtros de captura, se hace referencia a los únicos paquetes que se muestran y estos son a su vez los que cumplen con las condiciones del filtrado.

Existen muchas maneras de filtrar el tráfico de paquetes, para ello se tienen algunas instrucciones que serán descritas a continuación: Filtros de visualización:

ip.addr ! = = 192.168.100.45 Visualiza todo el tráfico excepto del host con la dirección 192.168.100.45

ip.addr = = 192.168.100.45 Visualiza todo el tráfico de origen y destino por el host con dirección 192.168.100.45

udp.port 26 Visualiza todo el tráfico de origen y destino UDP del puerto 26

ip.src = = 192.168.100.45 Visualiza todo el tráfico de destino hacia el host con dirección 192.168.100.45

ip dst = = 192.168.100.45 Visualiza todo el tráfico de origen del host con la dirección 192.168.100.45

Filtros de Captura:

port 28 Captura todo el tráfico que tiene como origen y destino el puerto número 21

not port 21 Captura todo el tráfico pero que no tiene como origen y destino el puerto número 21

src port 21 Captura todo el tráfico que tiene como origen el puerto número 21

dst port 21 Captura todo el tráfico que tiene como destino el puerto numero 21

portrange 20 – 28 Captura todo el tráfico que tiene como origen y destino los puertos que se encuentran en el rango de 20 a 28

host 192.168.100.45 Captura todo el tráfico que tiene como origen y destino la dirección 192.168.100.45

Page 51: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

51

dst host 192.168.100.45 Captura todo el tráfico que tiene como destino la dirección 192.168.100.45

src host 192.168.100.45 Captura todo el tráfico que tiene como origen la dirección 192.168.100.45

host www.ucp.edu.co Captura todo el tráfico que tiene como origen y destino la pagina web www.ucp.edu.co

ether proto \ip Captura todo el tráfico IP

ip proto \tcp Captura todos los segmentos del tráfico TCP

net 192.168.1.2 Captura todo el tráfico que tiene como origen y destino la subred 1.2

net 192.168.1.2/24 Captura todo el tráfico que tiene como origen y destino la subred 1.2 mascara /24

Aparte de los anteriores ejemplos, se pueden tener combinaciones con algunas instrucciones como lo son:

Unión: && ó and

Negacion: ! ó not

Alteración: ll ó or

Igual a: eq ó ==

No igual: ne ó !=

Mayor o igual: ge ó >=

Menos o igual: le ó <=

Mayor que: gt ó >

Menor que: lt o <

Algunos ejemplos son:

not host 192.168.100.45 and not host 192.168.100.50 Captura todo el tráfico de origen y destino menos de los host con direcciones 192.168.100.45 y 192.168.100.50

ip.addr = = 192.168.100.45 and tcp.port = = 53 Visualiza todo el tráfico origen y destino por el Puerto 53 que hace referencia al host con dirección 192.168.100.45

not multicast and not broadcast Captura todo el tráfico de origen y destino menos multicast y broadcast

Teniendo ya claro como generar un filtro a través de las estructuras antes mencionadas, ahora se explicará cómo usarlos directamente en el Wireshark:

Page 52: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

52

En la figura 9 se observa la interfaz inicial del Wireshark FIGURA 9. Ventana principal de Wireshark

Fuente: Autor

Como se puede apreciar en la figura 10 para iniciar con los filtros de captura primero se debe seleccionar la interfaz por la cual se desea capturar los paquetes, esto se hace seleccionando de la barra de herramientas la opción Capture - Interfaces FIGURA 10. Ventana referente a la selección de la interfaz

Page 53: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

53

Fuente: Autor

A continuación se abre una ventana la cual indica las posibles interfaces por las cuales se puede iniciar con la captura de paquetes como se ve en la figura 11. FIGURA 11. Ventana que muestra las diferentes interfaces

Fuente: Autor

Una vez se determine cuál será la interfaz por la cual se realizará la captura de paquetes, se selecciona la opción Options de la interfaz seleccionada; dentro de ésta se abre una ventana como se aprecia en la figura 12. Algunos de los parámetros que tiene esta ventana son:

Interface: Define la interfaz que se está utilizando para la captura.

IP address: Muestra la dirección IP de la interfaz que se ha seleccionado anteriormente.

Capture packets in promiscuous mode: Si no se selecciona esta casilla solo se capturara el tráfico que va dirigido hacia el equipo propio, si se habilita la opción se capturará todo el tráfico de la red.

Limit each packet to: contiene el tamaño máximo de los datos de cada uno de los paquetes, por defecto el tamaño es de 65365.

File: se especifica el nombre con que será guardado el archivo de la captura que se esté realizando.

Use múltiple files: Si no se desea guardar un solo archivo con toda la información capturada esta opción es la opción ideal, lo que hace es que cada vez que se cumpla una condición con la captura, se guarda un archivo diferente.

Stop Capture: Configurando las opciones se puede determinar en qué momento se desea que la captura de paquetes finalice.

Display options:

Page 54: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

54

o Update list of packets in real time: Si se deshabilita esta opción, solo se mostrarán los paquetes una vez finalizada la captura.

o Automatic scrolling in live capture: Permite tener un scroll para viajar por la ventana de los paquetes capturados.

o Hide capture info dialog: Esconde la ventana en donde se encuentra el resumen de toda la captura.

Name resolution: o Enable MAC name resolution: Si se deshabilita esta opción no se

mostrarán los nombres de los equipos, por el contrario se mostrarán las direcciones MAC pertenecientes a éstos.

o Enable network name resolution: Si se deshabilita esta opción no se mostrarán los nombres de los equipos, por el contrario se mostrarán las direcciones IP pertenecientes a estos.

o Enable transport name resolution: Se utiliza cuando no se conocen bien los puertos de las aplicaciones para ver qué protocolo se está utilizando.

FIGURA 12. Ventana de opciones de Captura

Page 55: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

55

Fuente: Autor

En la opción Capture Filter, figura 13, se escribe la instrucción que define al filtro. Si se desea tener una ayuda sobre los filtros se ingresa a la opción Capture Filter, allí se abrirá una ventana que tiene algunos filtros predeterminados, basta solo con seleccionarlos si se desean usar. FIGURA 13. Ventana referente a la opción Capture Filter

Fuente: Autor

Una vez teniendo definido el filtro, se procede a iniciar con la captura de los paquetes seleccionando la opción Start, ésta se puede apreciar en la figura 14.

Page 56: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

56

FIGURA 14. Ventana referente a la opción Start

Fuente: Autor

La interfaz del Wireshark con paquetes capturados después de haber establecido un filtro se ve de la siguiente manera:

Page 57: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

57

FIGURA 15. Ventana referente a la visualización de paquetes capturados con filtro

Fuente: Autor

Una vez realizada la captura de paquetes, se pueden hacer los filtros de visualización, desde la interfaz donde se visualizan todos los paquetes capturados; en la opción Filter, se escribe la descripción que utilizará el Wireshark para realizar este tipo de filtrado, una vez aplicado el filtro solo se verán los paquetes que hayan sido capturados y cumplan con esta condición, como se muestra en la figura 16.

Page 58: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

58

FIGURA 16. Ventana de visualización con filtros

Fuente: Autor Si se desea obtener ayuda por el Wireshark respecto a los filtros de visualización, basta con seleccionar la opción Expression. Que se encuentra al lado del campo Filter, allí aparecerá una ventana que muestra algunas ayudas, como se aprecia en la figura 17.

Page 59: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

59

FIGURA 17. Ventana de ayudas, referente a la opción Expression

Fuente: Autor

Si se desea detener la captura de paquetes solo basta con ir a la barra de herramientas opción Capture – Stop. Como se muestra en la figura 18.

Page 60: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

60

FIGURA 18. Ventana referente a la detención de captura de paquetes

Fuente: Autor

4.2 PRUEBAS DE GENERACIÓN DE TRÁFICO En esta sección se describirá como realizar pruebas de generación y captura de tráfico con los dos software escogidos Ostinato y Harpoon. 4.2.1 Pruebas con Ostinato A continuación se indicará la manera de hacer pruebas de generación y captura de tráfico HTTP y SIP y la forma cómo, al guardar la captura de ambos tipos de tráfico, estas se visualizan a través del software analizador de protocolos Wireshark.

PRUEBA DE CAPTURA DE TRÁFICO HTTP

1. Se selecciona un puerto, en este caso el de bucle invertido, como se muestra en la figura 19.

Page 61: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

61

FIGURA 19. Ventana Principal de Ostinato, Selección de puerto

Fuente: Autor

2. Se crea una nueva corriente, como se muestra en la figura 20, se da clic derecho, New Stream.

Page 62: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

62

FIGURA 20. Ventana de creación de una nueva corriente

Fuente: Autor

3. Luego se edita, dando clic en el símbolo de configuración ubicado al lado izquierdo de la nueva corriente.

4. Seleccionando los protocolos para la captura, en este caso en la casilla de Frame length, se selecciona Incremento, en L1 se selecciona MAC, en L2 Ethernet II, en L3 IPV4 y en L5 Text, donde se genera tráfico relacionado con texto como HTTP y SIP, como se muestra en la figura 21.

Page 63: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

63

FIGURA 21. Ventana de selección de protocolo de texto

Fuente: Autor

5. En la pestaña de los datos del protocolo, se indican las direcciones fuente y destino dando clic en IPv4, como se aprecia en la figura 22.

Page 64: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

64

FIGURA 22. Ventana de configuración de dirección fuente y destino

Fuente: Autor

6. En la pestaña de protocolo de texto se elige el puerto necesario, en este caso el puerto 80 HTTP, como se muestra en la figura 23.

Page 65: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

65

FIGURA 23. Ventana de selección de puerto HTTP

Fuente: Autor

7. Luego se elige el número de paquetes a generar, ver figura 24, en este caso se estableció un número de 3000 paquetes.

Page 66: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

66

FIGURA 24. Ventana donde se elige el número de paquetes

Fuente: Autor

8. Por último se podrán ver los datos configurados anteriormente, ver figura 25.

Page 67: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

67

FIGURA 25. Ventana de visualización de configuraciones HTTP

Fuente: Autor

Page 68: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

68

FIGURA 26. Visualización de captura de tráfico HTTP en Wireshark

Fuente: Autor

PRUEBA DE CAPTURA DE TRÁFICO SIP Se repiten los pasos 1 a 5, que se siguieron en la captura anterior de HTTP.

1. En la pestaña de protocolo de texto se elige el puerto necesario, en este

caso el puerto 5060 SIP, como se aprecia en la figura 27.

Page 69: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

69

FIGURA 27. Ventana de selección de protocolo SIP

Fuente: Autor

2. Luego se elige el número de paquetes a generar, en este caso se estableció un número de 3000 paquetes, como se muestra en la figura 28.

Page 70: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

70

FIGURA 28. Ventana de elección del número de paquetes

Fuente: Autor

9. Por último se podrán ver los datos configurados anteriormente. Como se puede apreciar en la figura 29.

Page 71: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

71

FIGURA 29. Ventana de visualización de configuraciones SIP

Fuente: Autor

Page 72: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

72

FIGURA 30. Ventana de visualización de captura de tráfico SIP en Wireshark

Fuente: Autor

4.2.2 Pruebas con Harpoon Se realizaron pruebas con Harpoon de generación y captura de tráfico TCP, a continuación se describen los pasos a realizar.

Page 73: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

73

A. Configuración de la red Equipos y elementos

Switch cap 2 Trendnet

2 patch core RJ45

2 portatiles con sistema operativo Linux Fedora.

Diagrama de red, ver figura 31. FIGURA 31. Diagrama de Red construida para generación de tráfico TCP con Harpoon

Fuente: Autor

Configuración

Con los dos PCs en Linux conectados al switch apropiadamente, lo primero que se debe hacer es configurar la dirección IP de cada uno de los computadores, de la siguiente manera:

Abrir una terminal

Autenticarse como superusuario ($su )

Editar el archivo de configuración de la interfaz del primer equipo de la siguiente manera:

# nano /etc/sysconfig/network-scripts/ifcfg-eth0

Agregar las siguientes líneas:

Page 74: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

74

DEVICE=eth0 BOOTPROTO=static IPADDR= 192.168.0.1 (al otro equipo le puede asignar 192.168.0.5) HWADDR= (dirección mac que viene por defecto en el archivo de configuración). TYPE= ethernet ONBOOT=yes

Saliéndose del editor y guardando los cambios en el archivo de configuración de la interfaz eth0 (control O, para guardar y control X para salir del editor nano).

Luego se reinicia el servicio de red:

# service network restart.

Para probar si la dirección IP establecida anteriormente se guardó correctamente, se ejecuta el siguiente comando:

# ifconfig (Apareceran las interfaces que posee el sistema, observar que IP posee la eth0 en inet addr.)

Hacer estos pasos en el otro equipo.

Probar conectividad haciendo ping entre los equipos con el comando: # ping -dirección IP-

Notas: Se debe tener en cuenta que se debe desactivar el selinux, para garantizar la conexión entre las máquinas; se deshabilita de la siguiente manera: Por la interfaz grafica de Linux ingresar a la barra de menú; Sistema/administración/administrador de Selinux en la ficha estado, deshabilitar el Selinux con la primera opción (Modo obligatorio por defecto del sistema). Si el sistema operativo está virtualizado bajo Windows hacer los siguientes pasos:

Deshabilitar el firewall de Windows en el panel de control.

Configurar los adaptadores de red de la máquina virtual de la siguiente manera:

Adaptador 1 modo puente y comprobar que el nombre tenga el puerto ethernet.

Page 75: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

75

Configuración de Harpoon

Ingresar como superusuario

Para validar los archivos de configuración, tener en cuenta que se debe ingresar al directorio src del directorio raíz Harpoon (del cual se descomprimió).

Configurar las direcciones IP, en los archivos de configuración para cliente y servidor en el directorio examples que se encuentra en el directorio raíz Harpoon.

# nano (Ruta donde está ubicado Harpoon siguiente de).. ./.examples/tcp_server_ex2.xml.

Buscar con control w dentro del archivo la palabra address y ahi establecer las direcciones IP tanto del cliente como del servidor.

En el cliente: <address_pool name="client_source_pool">

<address ipv4="0.0.0.0" port="0" /> </address_pool>

<address_pool name="client_destination_pool"> <address ipv4="127.0.0.1/32" port="10000" />

</address_pool> (En vez de "127.0.0.1/32", se coloca la dirección IP del PC que

hace las veces de Servidor) En el servidor: se deja la dirección tal cual ―0.0.0.0‖

Validar los archivos de configuración tanto del cliente como del servidor de la siguiente manera desde el directorio src:

# ./config_validator/..(Ruta donde está ubicado Harpoon siguiente de ) . ./examples/ tcp_client_ex2.xml

Iniciar Harpoon con el siguiente comando: En el servidor

# usr/local/Harpoon/run_harpoon.sh/ -v10 –w300 –c –f ..(Ruta donde está ubicado Harpoon siguiente de).. /examples/tcp_server_ex2.xml

Page 76: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

76

En el cliente # usr/local/Harpoon/run_harpoon.sh/ -v10 –w300 –f ..(Ruta donde está ubicado Harpoon siguiente de).. /examples/tcp_client_ex2.xml

Notas: Tener en cuenta que el tipo de archivo de plugin para los sistemas operativos Linux, es con extensiones .so y para los sistemas operativos macOS con la extencion .dylib Para iniciar Harpoon se debe ejecutar desde el directorio raíz de Harpoon. (Si no se hace de esta forma, no se generará el tráfico) Prueba TCP

Después de iniciar la generación de tráfico a través de los archivos tcp_client_ex2.xml y tcp_server_ex2.xml, configurados inicialmente con las direcciones del cliente y el servidor, se visualiza la generación de tráfico en las máquinas cliente y servidor como se muestra en la figura 32.

Page 77: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

77

FIGURA 32. Generación de tráfico TCP

Fuente: Autor

Cuando se inicia la generación de tráfico, se procede a iniciar Wireshark como se muestra en la figura 33.

Page 78: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

78

FIGURA 33. Ejecución del Wireshark para la Captura de tráfico

Fuente: Autor

Page 79: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

79

FIGURA 34. Visualización de la captura de tráfico en Wireshark

Fuente: Autor Esta prueba es un proceso que queda pendiente para que otras personas interesadas lo utilicen y sigan trabajando e investigando sobre más aplicaciones con Harpoon.

Page 80: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

80

5. CONCLUSIONES

En este proyecto se han estudiado los diferentes tipos de tráfico, y se han explorado los diferentes software generadores de tráfico, con el fin de seleccionar algunos y hacer las pruebas pertinentes con cada una de las herramientas seleccionadas. Para elegir un buen generador de tráfico, no basta con buscar e implementar el primero en la lista de resultados; se deben tener en cuenta las diferentes necesidades para las cuales va operar el software, y después de explorar varias opciones seleccionar el que más se acomode a éstas.

Ostinato es un buen generador de tráfico, ya que maneja diferentes tipos de tráfico como IPV4, SIP, HTTP, TCP, UDP, ICMP, IGMP, NNTP y entrega resultados detallados debido a su trabajo conjunto con Wireshark; además tiene una GUI muy amigable, lo que facilita la configuración de direcciones origen y destino y número de paquetes a la hora de generar diferentes tipos de tráfico; cabe anotar que esta herramienta permite generar múltiples tipos de tráfico a la vez; por otro lado es un generador de tráfico más fácil de manipular para el usuario, ya que está bajo la plataforma Windows.

De acuerdo a la exploración realizada y a la documentación presentada de Harpoon se logró evidenciar que es una herramienta, autoconfigurable y provee una generación de tráfico tanto a nivel de flujo como bidireccional. Además que utiliza modelos de distribución estadísticos, tales como: distribución exponencial y de Pareto, lo cual produce confianza y garantiza en tiempos determinados, los resultados en cuanto a la generación de volúmenes de tráfico que se quieran inyectar desde el lado del servidor hasta un host cliente. Como valor agregado a este proyecto se incluye la traducción del manual de Harpoon como facilidad a aquellas personas que se les dificulte el idioma en inglés; la traducción del mismo fue producto de un trabajo conjunto de los autores y la asesora del presente proyecto.

Se aprendió que al instalar Harpoon en un sistema operativo tipo Unix, antes de la compilación se deben agregar las librerías estándar de c y c++ y unas cuantas adicionales que permitirán tener una buena compilación sin errores, tales como la # include <stdio.h>, # include <limits.h> las cuales permiten incluir las funciones de C y C++ para las distribuciones Estadísticas como la distribución Exponencial y de

Page 81: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

81

Paretto dentro de la compilación para que Harpoon pueda tener las bases suficientes para gestionar y administrar el trafico a generar. Fue de gran importancia para llevar a cabo las pruebas de los generadores de tráfico el utilizar la virtualización, ya que gracias a ella se facilitaron los diferentes tipos de cambios entre sistemas operativos y analizar las diferentes formas de funcionamiento en cada uno de ellos. Se utilizaron dos plataformas de virtualización; VMware y Oracle VirtualBox. Aparte de esto se adquirieron conocimientos muy extensos en cuanto a la administración en el sistema operativo Linux bajo la interfaz de línea de comandos (Shell). Resultó muy interesante el investigar acerca de los generadores de tráfico porque permite reducir la brecha de conocimiento en cuanto a la realidad actual, de cómo se generan los paquetes en un red mundial como lo es internet, además el manejo y la administración de la herramienta Wireshark permitió aprender sobre lo que se le denomina protocol testing, ya que sirvió de gran apoyo en la fase de pruebas para analizar el diferente tipo de tráfico que se estaba generando.

Page 82: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

82

6. RECOMENDACIONES

A continuación se describen algunas recomendaciones relacionadas con la implementación de los diferentes generadores de tráfico, dentro de la investigación realizada, se debe tener en cuenta:

Después de la instalación del software generador de tráfico Ostinato, éste debe ejecutarse con facilidad en la máquina sin problemas, siempre y cuando se hayan seguido completamente las instrucciones de instalación, sin embargo pueden presentarse algunos de los siguientes inconvenientes:

Si no puede ampliar el grupo de puertos, para ver una lista de los puertos conectados, compruebe el icono del grupo de estado de los puertos:

Un icono rojo indica que está desconectado; luego intente conectar con el grupo de puerto nuevo.

Si al intentar conectar sigue el problema, compruebe la bandeja del sistema para ver si 'drone' (el componente del servidor de Ostinato) se está ejecutando - si no es así, ejecute drone de forma manual;

Si el icono del grupo estado del puerto es de color verde (conectado) pero aún no se puede expandir el grupo de puertos para ver una lista de puertos, vuelva a verificar que se está ejecutando Ostinato con privilegios de administrador. (Ostinato, 2011).

A la hora de generar tráfico para un tiempo determinado con Ostinato, se debe seleccionar un número de paquetes considerable de tal manera que abarque el tiempo necesario de la captura de tráfico. Antes de poner en funcionamiento un software generador de tráfico, se debe conocer muy bien sobre él, para así configurar correctamente cada uno de los parámetros necesarios, y así garantizar una buena captura de tráfico. Tener en cuenta que a la hora de elegir determinado generador de trafico se debe analizar y planificar de una manera correcta las características y requisitos en cuanto a Sistema Operativo y Hardware se refiere para que la instalación tenga éxito y todo armonice de acuerdo a los requerimientos del generador de tráfico, ya que por experiencia se han encontrado varios inconvenientes tales como: el tipo

Page 83: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

83

de arquitectura a utilizar, si se va a implementar una plataforma a 32 o 64 bits, memoria RAM mínima que se requiere para que los procesos e hilos que manejan los generadores sean lo más eficaces posible, también tener en cuenta si se va a utilizar un sistema operativo tipo Unix, analizar que distribución seria la adecuada para su implementación, ya que el núcleo del kernel en el cual se va a instalar el generador debe de estar entre un rango determinado. Si se elige Harpoon como generador de tráfico, se podría utilizar para generar grandes volúmenes de tráfico y poder ser uno de los software por excelencia a la hora de probar y experimentar con Dispositivos de red. Con la herramienta generadora de tráfico Harpoon, solo se logró validar los ejemplos de TCP server y TCP client; este generador es bastante robusto, pues tiene muchas más funcionalidades que pueden ser exploradas y continuadas en un trabajo futuro, ya que en el presente documento se entrega solo una parte introductoria.

Page 84: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

84

7. REFERENCIAS BIBLIOGRÁFICAS

Alvarez, M. Azcorra, A. Berrocal, J. Domingo, J. Larrabeiti, D. Martínez, X. Moreno, J. Pérez, J.R. y Solé Pareta, J. (2009, 27 de Mayo) CASTBA: Medidas de tráfico sobre la Red Académica Española de Banda Ancha. [Homepage]. Consultado el día 18 de Mayo de 2011, de la World Wide Web: http://www.it.uc3m.es/azcorra/papers/castba_telecom98.pdf

Alzate M. Introducción al Tráfico Autosimilar en Redes de Comunicaciones. [Homepage]. Consultado el día 01 de diciembre de 2010, de la World Wide Web: http://gemini.udistrital.edu.co/comunidad/profesores/malzate/TraficoFractal.pdf Botta Alessio, Dainotti Alberto, Pescapè Antonio. (2007). Multi-protocol and multi-platform traffic generation and measurement", INFOCOM 2007 DEMO Session, Anchorage (Alaska, USA) Traffic Generator. [Homepage]. Consultado el día 07 de diciembre de 2010 de la World Wide Web: http://www.grid.unina.it/software/ITG/codice/ditg-pres.pdf Cáceres, M.O. (2003). Elementos de estadística de no equilibrio y sus aplicaciones al transporte en medios desordenado. Barcelona: Reverté S.A. Casamor A. (2003). Los protocolos en las redes de ordenadores. Barcelona: UPC. Cortés, J. J.C.& Jodar, S. L. & Rosello, F. D. & Villanueva, R. J. (2004). Problemas y modelos matemáticos para la administración y dirección de empresas II. Camino de Vera: Universidad Politécnica de Valencia. Edarguz. (2010 Febrero). Redes de computadores. [Homepage]. Consultado el día 14 de mayo de 2011, de la World Wide Web: http://www.blogger.com/profile/13437238550437782352 Embyte. (2009). GSpoof. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://gspoof.sourceforge.net

Page 85: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

85

Ethereal. (2007). The world's most popular network protocol analyzer. [Homepage]. Consultado el día 08 de octubre de 2011, de la World Wide Web: http://www.ethereal.com/ Feng, W. Goel, A. Bezzaz, A. Walpole, J. (2003). TCPivo: A High Performance Packet Replay Engine. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.thefengs.com/wuchang/work/tcpivo/ Fielding R., Gettys J., Mogul J., Frystyk H., Masinter L., Leach P. y Berners-Lee T. (1999). Hypertext Transfer Protocol -- HTTP/1.1. [IETF, RFC2616]. . Ghislain M. (2005). Packgen network packet generator. [Homepage]. Consultado el día 08 de Octubre de 2010, de la World Wide Web: http://packgen.rubyforge.org/files/README.html Hallberg B. (2007). Fundamentos de redes (4 ed.). México: McGraw-Hill Herrera, P. (2003). Tecnologías y redes de transmisión de datos. México: LIMUSA S.A. Hping Security Tool. (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://gd.tuwien.ac.at/www.hping.org/index.html Olsson, R. (2005) Consultado el dia 21 de julio de 2010 de la World Wide Web: http://www.linuxinsight.com/files/ols2005/olsson-reprint.pdf ISIC. (Sin Fecha). [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://www.packetfactory.net/projects/ISIC Iperf. Enterprise Application Development Iperf. (2003). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.noc.ucf.edu/Tools/Iperf/

Page 86: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

86

Killerbee2002. (2006) PackETH - ethernet packet generator. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://packeth.sourceforge.net La distribución uniforme. (Sin Fecha). [Homepage]. Consultado el día 6 de diciembre de 2010, de la World Wide Web: http://www.ub.edu/stat/GrupsInnovacio/Statmedia/demo/Temas/Capitulo4/B0C4m1t1.htm Laine, J. Saaristo, S. Prior, R. (2002). Rude & Crude. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://rude.sourceforge.net/ Ley de Zipf. (Sin Fecha). [Homepage]. Consultado el día 6 de diciembre 2010, de la World Wide Web: http://www.worldlingo.com/ma/enwiki/es/Zipf's_law Libnet. (Sin Fecha). [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://www.packetfactory.net/projects/libnet/ Medina J. (2004/2005). Protocolo SSH. [Homepage]. Consultado el día 17 de octubre de 2010, de la World Wide Web: http://sopa.dis.ulpgc.es/ii-aso/portal_aso/leclinux/seguridad/ssh/ssh.pdf Métodos y Aplicaciones U.D. Bioestadística. (Sin Fecha). [Homepage]. Consultado el día 5 de diciembre 2010, de la World Wide Web: http://www.bioestadistica.uma.es/libro/node69.htm Nathan, J. Stone, R. (2004). Nemesis. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://nemesis.sourceforge.net/ Naval Research Laboratory. (Sin Fecha). Multi-Generator (MGEN). [Homepage]. Consultado el día 08 de octubre de 2010 de la World Wide Web: http://cs.itd.nrl.navy.mil/work/mgen/index.php Nsauditor Network Security Auditor. (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.nsauditor.com/

Page 87: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

87

NT OBJECTives, Inc. PacketX. (Sin Fecha). [Homepage]. Consultado el día 08 de julio de 2010, de la World Wide Web: http://www.ntobjectives.com/packetx.htm NT OBJECTives, Inc. (Sin Fecha) PackIt. [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://www.ntobjectives.com/packetx.htm Ostinato (Sin Fecha). Paquete generador de tráfico y analizador. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://code.google.com/p/ostinato/ Packet Excalibur. (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.securitybugware.org/excalibur/ Packet Generator. (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de la World Wide Web: 2010, de http://www.clearsightnet.com/products-packetgenerator.jsp Pescapé A. Emma D. Avallone S. Botta A. Ventre G. (2004). D-TG, Distributed Internet. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.grid.unina.it/software/ITG/sdescr.php Biondi P & Scapy Community. (2008). Scapy. [Homepage.] Consultado el día 08 de octubre de 2010 de la World Wide Web: http://www.secdev.org/projects/scapy Postel J. (1994). Estructura y Delegación del Sistema de Nombres de Dominio. [IETF, RFC1591]. Postel J. y Reynolds J. (1985). File Transfer Protocol (FTP). [Homepage] [IETF, RFC959]. Consultado el día 05 de octubre de 2010, de la World Wide Web: http://es.wikipedia.org/wiki/File_Transfer_Protocol Postel J. (1981). Internet Control Message Protocol. [Homepage]. [IETF RFC792]. Consultado el día 06 de octubre de 2010, de la World Wide Web: http://www.rfc-editor.org/rfc/rfc792.txt

Page 88: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

88

Postel J. (1982). Simple Mail Transfer Protocol. [Homepage]. Consultado el día 06 de octubre de 2010, de la World Wide Web: http://www.telefoniavozip.com/voip/que-es-la-telefonia-ip.htm Postel J. y Reynolds J. (1983). Telnet Protocol Specification. [IETF RFC854]. [Homepage]. Consultado el día 07 de octubre de 2010, de la World Wide Web: http://www.ietf.org/rfc/rfc854.txt Postel J. (1980). User Datagram Protocol. [IETF RFC768]. [Homepage]. Consultado el día 07 de octubre de 2010, de la World Wide Web: http://www.ietf.org/rfc/rfc768.txt [email protected]. (2003) Send IP. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.earth.li/projectpurple/progs/sendip.html Huidobro, J. M., Conesa, R. (2006), Sistemas de Telefonía: Funcionamiento de la VOIP. Madrid: Paraninfo. Sattar, A., (2008). VOIP Voice Over Internet Protocol Architecture and Features: What is VoIP, (Primera Edicion). Pakistan. Riesterer,.L. (2000). Gasp. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://laurent.riesterer.free.fr/gasp/ Ridruejo, P. F. J. González, C.A. Alonso, J. M. (2004). TrGen: sistema de generación de tráfico para simuladores de redes de interconexión. [Homepage]. Consultado el día 29 de Agosto 2010, de la World Wide Web: http://www.sc.ehu.es/acwmialj/papers/generadores.pdf Salavert, C. (2003). Los protocolos en las redes de ordenadores. Barcelona: UPC. Smaldone, J. (5 de diciembre de 2006). Cómo funciona el DNS. [Homepage]. Consultado el día 06 de octubre de 2010, de la World Wide Web: http://blog.smaldone.com.ar/2006/12/05/como-funciona-el-dns/

Page 89: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

89

Sommers, J. (2005). Harpoon: A Flow-level Traffic Generator. [Homepage]. Consultado el día 24 de mayo de 2011, de la World Wide Web: http://cs.colgate.edu/faculty/jsommers/harpoon Sanfilippo, Salvatore. (2006). What is Hping. [Homepage]. Consultado el día 08 de octubre de 2010 de la World Wide Web: http://wiki.hping.org/ [email protected]. (Sin Fecha). Network Packet/Traffic Generator Tool LIBNET. [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://protocoltesting.com/trgen.html VBulletin. (2009). Generador de Tráfico. [Homepage]. Consultado el día 23 de octubre de 2010, de la World Wide Web: http://www.chw.net/foro/internet-y-redes-f24/285157-generador-de-trafico.html Wireshark. (Sin Fecha) About Wireshark. [Homepage]. Consultado el día 16 de mayo de 2011, de la World Wide Web: http://www.wireshark.org/about.html Yumo. (Sin Fecha). What's ―TfGen‖. [Homepage]. Consultado el día 08 de octubre de 2010 de la World Wide Web: http://www.st.rim.or.jp/~yumo/pub/tfgen.html

Page 90: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

90

8. ANEXOS

ANEXO 1: MANUAL DE HARPOON MANUAL DE HARPOON El siguiente manual fue producto de una traducción de su manual original, después del estudio acerca del software generador de tráfico Harpoon, el cual fue hecho por los autores con el acompañamiento del asesor del presente proyecto. A continuación se encontrarán las diferentes secciones sobre la visión general de Harpoon; en la sección 1 se encontrará la información general a cerca de Harpoon, su arquitectura y componentes; la sección 2 hace mención a la configuración básica; en la sección 3 se encuentra la configuración avanzada de Harpoon; en la sección 4 se inicia la ejecución de Harpoon; en la sección 5 se encuentra la información acerca del manejo del Software Harpoon; y en los diferentes apéndices contenidos en el presente Anexo, se encontrarán una serie de ejemplos de los temas tratados en las diferentes secciones. 1. INFORMACIÓN GENERAL DE HARPOON Harpoon es un generador de tráfico a nivel de flujo. Usa un conjunto de parámetros de distribución que pueden ser extraídos de forma automática a partir de las trazas de NetFlow para generar flujos para mostrar las cualidades estadísticas presentes en las medidas de las trazas de internet, incluyendo las características temporales y espaciales. Harpoon puede ser usado para generar tráfico de fondo representativo para pruebas de aplicación o protocolo, o para realizar pruebas de hardware de conmutación de red. Este manual empieza por describir la arquitectura de Harpoon. Los Capítulos siguientes describen cómo configurar, ejecutar y administrar Harpoon efectivamente. Un plan de trabajo para iniciar y correr Harpoon es leer este capítulo, el capítulo 1 [Información General de harpoon], página 1, seguido por el siguiente capítulo, el capítulo 2 [Configuración básica], página 7, en referencia según sea necesario el Capítulo 4 [Corriendo Harpoon], página 24 y el Apéndice A [Mas ejemplos], página 33, para el parámetro de línea de comandos, la variable de entorno, y ejemplos específicos. Los lectores que deseen utilizar las herramientas de auto-configuración o para implementar Harpoon en grandes bancos de pruebas deben leer todo el manual. 1.1 Arquitectura de Harpoon Los objetivos de diseño de Harpoon son (1) Para generar tráfico de red escalable de aplicaciones independientes a un nivel de flujo IP (2) Para ser fácilmente parametrizado, para crear tráfico que es estadísticamente idéntico al tráfico medido en un punto clave en internet. [Figura 1.1 Diagrama de flujo de los datos de alto nivel de Harpoon] Representan un flujo de alto nivel de estos objetivos. Iniciamos con la definición básica de un flujo IP y usamos esto para crear un modelo constructivo para la generación de un tráfico de red que describimos a continuación.

Page 91: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

91

Figura 1.1 Diagrama de flujo de los datos de alto nivel de Harpoon. Registros de Flujo IP se recogen en una posición dada de una red operacional usando software estándar como flow-tools. Aspectos claves de los flujos en acción son extraídos durante el paso de auto-configuración. Estos parámetros se utilizan para generar tráfico en un banco de pruebas que coincide estadísticamente con el temporal (durante el día), características de volumen así como la espacial (origen y destino de frecuencia de dirección IP) y características de los flujos en vivo. Un flujo IP se define generalmente como una serie unidireccional de paquetes IP de un protocolo determinado, que viajan entre un par de puertos fuente y destino en un plazo de tiempo determinado. La condición final de esta afirmación es un tanto ambigua, por lo que pragmáticamente enlaza nuestra definición a la aplicación NetFlow de Cisco y las herramientas que utilizamos para reunir y analizar el flujo de datos en la red. Los datos de NetFlow incluyen pares de puertos origen y destino AS/IP, paquetes y recuentos de bytes, tiempos de inicio y finalización de flujo, la información de protocolo y un OR de banderas TCP para todos los flujos de paquetes, además de otros campos. Estos datos se exportan ya sea en plazos temporizados o cuando se producen determinados eventos (por ejemplo, un FIN TCP o RST, o se llena una caché), lo que primero ocurra. Aunque esto parece resolver pragmáticamente la ambigüedad en la definición de un flujo, determinados comportamientos relacionados con el momento de vencimiento, puede variar (Véase Cisco NetFlow, Libro Blanco

1). El resultado es que el registro del tiempo del flujo al inicio es correcto,

mientras que el registro del tiempo del flujo al final no lo son. Esta imprecisión no afecta un usuario de Harpoon, pero si hace una diferencia en las herramientas de auto-configuración. Para más detalles véase el Documento técnico Harpoon. A partir de esta definición operativa de un flujo, la arquitectura Harpoon comienza con la noción de transferencia de archivos unicast utilizando TCP o UDP. Harpoon no tiene en cuenta la dinámica de transferencia de archivos a nivel de paquetes TCP. Más bien se basa en las versiones de TCP que se ejecutan en los hosts finales para transmitir un archivo solicitado. El modelado de trafico UDP se complica por el hecho de que los comportamientos de la emisión de paquetes forman parte de una aplicación específica. En la actualidad, Harpoon contiene tres modelos de transferencia de paquetes UDP: tasa de paquetes constante, un ping-pong periódico de intervalo fijo, y un ping-pong distribuido exponencialmente. El tipo de primera fuente es similar a algunas de audio y vídeo, mientras que los dos últimos tipos son destinados para imitar la norma Network Time Protocol (NTP) y de nombres de dominio (DNS), respectivamente. El tráfico UDP en Internet hoy en día, es probable que se componga de una variedad más amplia de tráfico a nivel de aplicación (incluyendo voz, gusanos SQL, etc.), cuyo comportamiento no es capturado en nuestro actual modelo de tres tipos de fuente. Desarrollo de un modelo con un conjunto más diverso de fuentes de tráfico UDP, se deja para el trabajo futuro. El modelo de flujo de Harpoon es una arquitectura de dos niveles y se represente en la figura 1.2.

Page 92: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

92

[Basada en el flujo Harpoon de dos niveles jerárquicos de modelo de tráfico]. Nos referimos al nivel más bajo del modelo de Harpoon como el nivel de conexión. Está hecha de dos componentes que tienen propiedades mensurables de distribución. El primer componente es el tamaño del archivo transferido, y es el segundo componente es el intervalo de tiempo entre peticiones consecutivas de transferencia de archivos, el tiempo de interconexión. Harpoon hace peticiones para archivos con tamaño extraídas de una distribución empírica PFileSize. Las iniciaciones de las conexiones están separadas por intervalos de tiempo establecidos en una distribución empírica PinterConnection. El nivel superior del modelo de Harpoon que se conoce como el nivel de sesión, las sesiones de Harpoon son divididas en tipos, ya sea TCP o UDP, realizando transferencias de archivo utilizando el protocolo respectivo durante el tiempo que estén activas. El nivel de sesión tiene dos componentes: el número de sesiones activas y la distribución espacial de IP. Modulando el número de sesiones que están activas en cualquier momento, Harpoon puede coincidir los bytes, paquetes y volúmenes de flujo de los datos originales y darse cuenta de los volúmenes de flujo del tráfico temporal (durante el día), que son una característica común en la internet

2. El promedio del numero

de sesiones de cada tipo (TCP/UDP) que están activas en cualquier punto en un día, es derivado de una serie consecutiva de flujos de datos que no se superponen a los segundos de longitud del intervalo IntervalDuration para crear un modelo empírico para PActiveSessions. La escalabilidad es naturalmente conseguida, dividiendo el número de sesiones activas a través de cualquier número de hosts que comprende el banco de pruebas. Para cada sesión, Harpoon recoge las direcciones de origen y destino de los rangos de direcciones disponibles, para hacer una serie de solicitudes de transferencia de archivos. La selección de la dirección se hace preferentemente usando pesos extraídos de las distribuciones empíricas PIPRangesrc and PIPRangedest. A continuación, una serie de solicitudes de transferencia de archivos, se llevan a cabo entre el origen y destino para los segundos en el IntervalDuration. Cuando Harpoon se inicia, comienza con el número promedio de sesiones en el primer intervalo y procede a través de intervalos consecutivos de la duración de la prueba. En resumen el modelo de Harpoon se compone de una combinación de 5 modelos de distribución para sesiones TCP: Tamaño de archivo, Tiempo de interconexión, Rangos de IP fuente y destino, Numero de sesiones activas. Hay tres modelos de interconexión para las sesiones UDP: Tasa de bits constante, Ping-Pong periódico y exponencial. Cada una de estas distribuciones se puede especificar de forma manual o, en el caso de tráfico TCP, extraídas de restos de paquetes, o datos de NetFlow recogidos de un Router en vivo. Estos modelos permiten la carga de trabajo generada por Harpoon, para ser independiente de la aplicación o que se aplican a una aplicación específica. Los modelos se combinan de una manera constructiva para crear una serie de solicitudes de transferencia de archivos, que los resultados estén representados en el nivel de flujo de tráfico de red. Los parámetros para las sesiones TCP, se resumen a continuación:

Parámetro Descripción

PFileSize Distribución empírica de los tamaños de archivos transferidos.

PInterConnection Distribución empírica de el tiempo transcurrido entre el consecutivo de conexiones iniciadas TCP, por un par de direcciones IP Origen y Destino.

PIpRangesrc and PIpRange dest

Los rangos de direcciones IP con peso preferencial, establecido para que coincida con las distribuciones de frecuencia empírica de los datos originales.

PActive sessions La distribución del número promedio de sesiones (pares IP origen destino) activa durante los intervalos consecutivos de los datos medidos. Mediante la modulación de esta distribución, Harpoon puede

Page 93: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

93

coincidir con el byte temporal de paquetes, y los volúmenes de flujo de los datos originales.

IntervalDuration Tiempo de granularidad sobre el cual Harpoon coincide con los paquetes promedio de bytes y volúmenes de flujo.

Figura 1.2: Basado en los niveles jerárquicos de flujo del modelo de Harpoon. Las sesiones se componen de una serie de conexiones separadas por duraciones extraídas de la distribución del tiempo de la interconexión. Selección de la dirección IP origen y destino (A y B en la figura) es ponderada para que coincida con la distribución de frecuencias de los datos de flujo original. El número de sesiones activas determina la carga media total ofrecida por Harpoon. Una gran cola de distribución empírica de tamaño del archivo y un modelo de transferencia ON / OFF, genera comportamientos a nivel de paquetes auto-similar.

1.2 Componentes de Software Harpoon Hay 5 programas y scripts incluidos con Harpoon:

Harpoon, ejecutable principal, junto con los plugins de generación de tráfico para la aplicación de Harpoon, comportamiento a nivel de usuario utilizando las implementaciones de protocolo del sistema operativo suministrado, (por ejemplo, TCP) u otro tipo de procesos de emisión de paquetes.

config-validator, una utilidad para la validación de la estructura de un archivo configurado.

harpoon-flowproc, una utilidad para los registros de flujo pre procesados. (versión 5 o formato Netflow de flujo de herramientas) para la auto-configuración.

harpoon-config.py, una utilidad para generar los archivos de configuración para Harpoon (La auto-configuración).

harpoon-reconf.py, una utilidad para ajustar archivos de configuración existentes, para producir el volumen de tráfico que desee.

Harpoon, config_validator y harpoon_flowproc son programas de C++. Los requerimientos para la construcción de Harpoon incluyen un compilador C++ con una biblioteca funcional de plantillas estándar (versiones recientes de GCC satisfacen estos requerimientos), una implementación de hilos POSIX, y una librería expat XML

3. La librería flow-

tools 4 es opcionalmente usada por Harpoon_flowproc. Si no se encentra instalación de flow-tools,

la herramienta Harpoon_flowproc seguirá siendo construida, pero sólo será capaz de procesar cadenas de registros en formato Netflow 5. Las scripts harpoon_conf.py y harpoon_reconf.py requieren un intérprete de python, versión 2.3, o superior

5. Si no se encuentra un intérprete de Python adecuado, las otras herramientas se

construirán, pero aparecerá una advertencia al configurar el software.

Page 94: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

94

Los plugins de generación existen como módulos de carga dinámica (también conocidos como bibliotecas de paquetes de enlace dinámico), por ejemplo toda la lógica especifica de la generación de flujo de tráfico TCP se limita al módulo TCPplugin, y toda la lógica específica de la generación de trafico para UDP con tasa de bits constante, se limita al modulo UDPcbrPlugin, (Apéndice C [Crear nuevos módulos de generación de tráfico] página 43, se describe cómo crear módulos para generar cualquier tipo de tráfico que desee). No es necesario entender cómo trabajan los módulos básicos de generación de tráfico como TCP, o UDP-CBR, pero si las funciones básica de las distribuciones usadas x los diferentes plugins, para alimentar adecuadamente los archivos de configuración con formato Harpoon. Los capítulos siguientes describen cómo utilizar estas herramientas para producir tráfico deseado. Para la configuración básica pruebe con los archivos de configuración de ejemplo, proporcionados con la distribución de software Harpoon, véase el capítulo 2 [Configuración básica], página 7. Para una discusión más amplia de la configuración Harpoon con las herramientas de auto-configuración, consulte el capítulo 3 [Configuración avanzada], página 15. Opciones de línea de comandos, las variables de entorno aplicables y el manejo de señales de las herramientas más arriba mencionadas, entran en el capítulo 4 [Corriendo Harpoon], página 24. Por ultimo, mas ejemplos sobre la configuración, uso y manejo de Harpoon figuran en el Apéndice A [Mas ejemplos], página 33. Tenga en cuenta que este manual se supone un conocimiento práctico de los sistemas UNIX-ish y comandos de la shell. Si necesita ayuda en los conceptos básicos, debe buscar en otra parte. 1.2.1 Construcción del Software Harpoon

La construcción de Harpoon consta de los Siguientes pasos:

1. Desempaquetar la distribución. Usando GNU tar, "tar xzvf harpoon_ distribution.tgz " hará el truco, sustituyendo el archivo en particular nombre de "harpoon_distribution.tgz".

2. Ejecutar. /configure en el directorio de nivel superior del software sin descomprimir. Este paso construirá apropiadamente los archivos en su sistema. Si lo desea, puede utilizar la opción - -prefix para especificar donde se va a instalar el software. La ubicación de la instalación por defecto es / usr / local / Harpoon.

3. Ejecute make. De forma predeterminada, los componentes principales de Harpoon, todos los plugins, y algunas herramientas (actualmente indocumentados) se construirán. Si está disponible, utilice GNU make, ya que algunos programas no controla correctamente algunas de las construcciones en archivos makes de Harpoon.

4. (opcional) make selfconf. Construye el harpoon_flowproc herramienta de configuración propia.

5. (opcional) make doc. Usted necesita las herramientas GNU Texinfo y/o doxygen para que esto funcione.

6. (opcional) make install. Mover los componentes adecuados al directorio de destino de instalación. De forma predeterminada, el directorio de instalación es / usr / local / Harpoon. Harpoon se conoce para generar y ejecutar en FreeBSD 5.1 hasta 5.4, Linux 2.2 hasta 2.6, Mac OS X 10.2-10.4 y Solaris 8-10. Harpoon no está disponible para Windows, aunque hay un intento de hacer que esto sea posible.

Si no logra configurar ciertas librerías necesarias, puede probar con la siguiente sintaxis: $ CPPFLAGS=-I/path-to-include-files LDFLAGS=-L/path-to-libs \ ./configure

Page 95: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

95

Esta sintaxis general, trabaja para configurar y permitir buscar en los directorios de la derecha. De forma predeterminada, Harpoon se construye con el nivel de optimización "-O2" y con símbolos de depuración '-g'. Una manera fácil de cambiar esta situación es el uso de la siguiente sintaxis: $ CXXFLAGS="-g" ./configure Harpoon se basará en el ejemplo anterior con símbolos de depuración, pero no de optimización. La construcción de Harpoon sin símbolos de depuración y un nivel deseado de optimización se puede lograr de una manera similar. Por último, es muy probable que usted establezca LD_LIBRARY_PATH (Linux, FreeBSD y Solaris) o DYLD_LIBRARY_PATH (MacOS X) para el directorio, en el plugin de objetos están instalados. Consulte la Sección 4.1.4 [Variables de entorno], página 25 para más información. 2. CONFIGURACIÓN BÁSICA

Este capítulo trata de las configuraciones simples de Harpoon con el ejemplo suministrado en archivos de configuración (en el subdirectorio 'ejemplos' de la distribución de software). Cambios simples a los archivos de configuración para adaptarse a locales de direccionamiento y requisitos de volumen de tráfico también se discuten. El siguiente capítulo describe las configuraciones más complicadas de Harpoon con sus propios registros de flujo. Se supone que usted ha construido con éxito Harpoon (véase la sección 1.2.1 [Creando el software de Harpoon], página 5). Ejemplo de configuración encontrado en el subdirectorio ―Examples‖, hay dos ejemplos de Configuración de tráfico TCP siempre que: ‗tcp_client.xml‘ and ‗tcp_server.xml‘ Una configuración muy simple con fines ilustrativos. ‗tcp_client_ex2.xml‘ and ‗tcp_server_ex2.xml‘ Un par de cliente/servidor TCP con tiempos de interconexión generados a partir de la distribución exponencial con una media de1 segundo y tamaños de archivos generados a partir de la distribución de Pareto con alfa = 1.2 shape= 1500 (bytes). 2.1 Validando una Configuración El primer paso hacia el funcionamiento de Harpoon es hacer que los archivos de configuración que va a utilizar tengan el formato correcto. Una herramienta, config_validator existe para este propósito. La herramienta tiene un único argumento, el archivo de configuración. A continuación se muestra la salida de ejecutar config_validator sobre "tcp_client_ex2.xml ' y 'tcp_server_ex2.xml. $ ./config_validator ../examples/tcp_client_ex2.xml loading ../examples/tcp_client_ex2.xml bad address - no prefix len? Checking load of TcpClient name: TcpClient objfile: tcp_plugin.dylib maxthreads: 10 personality: client client source pool:

Page 96: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

96

address list: 0.0.0.0 - 0.0.0.0 :0 (1) client destination pool: address list: 127.0.0.1 - 127.0.0.1 :10000 (1) dumping distributions (first 10): active_sessions: 10 interconnection_times: 3.99391 0.293601 2.12709 1.21451 0.409159 0.1121 0.580837 0.101379 0.724933 0.224031 Hay una serie de elementos a tener en cuenta:

En primer lugar, cada plugin de configuración tiene un nombre. El nombre de este plugin es TcpClient. El nombre debe ser único para todos los plugins cargados y en funcionamiento en el mismo proceso de Harpoon. (Tenga en cuenta que puede tener múltiples configuraciones de plugins TCP corriendo como cliente y servidor en un único proceso, pero cada uno debe tener nombres diferentes.)

El archivo de objeto compartido, cargado para este plugin es "tcp_plugin.dylib‖. El cargador del sistema operativo encuentra este archivo mediante la búsqueda en los directorios especificados por la variable de entorno LD_LIBRARY_PATH. Consulte la Sección 4.1.4 [Variables de entorno], página 25 para obtener más información.

En Harpoon, las sesiones se asignan de manera 1-1 en los hilos. El plugin MaxThreads especifica el número máximo de subprocesos del sistema operativo que desean iniciar en el plugin. Para generar un determinado nivel de tráfico, un cierto número de hilos por sesiones se hacen activos en intervalos sucesivos de tiempo. Este número de sesiones activas se especifica en la distribución active_sessions. Tenga en cuenta que un número determinado de sesiones activas puede ser mayor que el valor dado por MaxThreads. En este caso, el parámetro MaxThreads actúa como un límite, el número actual de sesiones activas es min (MaxThreads, ActiveSessionsi), donde ActiveSessionsi es el número de sesiones activas para el intervalo i. Mas [parámetros de distribución], página 4 a revisar el rol de sesiones de Harpoon.

Personality, especifica si este plugin está actuando en rol de servidor o en el rol de cliente.

Client source pool and client destination pool, denota las direcciones que utiliza este plugin, dado que se trata de un plugin de cliente, el grupo de origen de cliente se utiliza para enlazar el local del lado de las conexiones TCP a una dirección local especifica. En este ejemplo, la dirección local es 0.0.0.0, lo que significa que el sistema operativo se llenará en una dirección predeterminada local. Las direcciones de client destination pool, especifica las direcciones remotas y puertos en los que Harpoon está escuchando servidores TCP.

Por último, 10 valores aleatorios de las distribuciones utilizadas por el punto final en particular (cliente o servidor) se imprimen. Para los clientes de TCP, hay dos distribuciones pertinentes: active_sessions y interconnection_times. Para los servidores TCP (Ejemplo que se muestra a continuación), hay dos distribuciones pertinentes: Active sessions y file zises.

Validación del archivo de configuración del servidor se muestra a continuación: $ ./config_validator ../examples/tcp_server_ex2.xml

Page 97: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

97

loading ../examples/tcp_server_ex2.xml bad address - no prefix len? Checking load of TcpServer name: TcpServer objfile: tcp_plugin.dylib maxthreads: 37 personality: server server address pool: address list: - 0.0.0.0 :10000 (1) dumping distributions (first 10): active_sessions: 37 file_sizes: 18643900 15150 807481 157679 23465 4930 39188 4418 56341 10863

Ahora que el archivo de configuración del lado del cliente se ha validado y se explica, no hay nada nuevo para describir. Tenga en cuenta que el nombre del plugin ha cambiado a tcpserver y la personalidad es server, pero el plugin de archivo de objeto compartido sigue siendo tcp_plugin.dylib. Para los servidores, el MaxThreads y parámetros active_sessions especifican el número de hilos de espera activa para atender las solicitudes de archivos. Estas cifras se pueden establecer con el mismo valor solo en la mayoría de los casos. (El problema de cómo muchos hilos /sesiones de mantenerse activo es similar al problema de la configuración de un servidor web. A diferencia de los servidores web modernos, Harpoon no asigna hilos de servidor de forma dinámica, por lo que este número debe ser estático y establecido en los archivos de configuración a un valor razonable.) Por último, tenga en cuenta que la dirección del servidor se establece en una dirección predeterminada (0.0.0.0 ) y el puerto esta establecido en 10000.

2.2 Modificando el Archivo de configuración de direcciones: Para el archivo de configuración del lado del cliente que se muestra más arriba, el grupo de dirección de destino se establece en una única dirección de 127.0.0.1 - la interfaz de bucle invertido. Esto no es particularmente útil, ya que nos gustaría para generar tráfico a través de una red, no sólo a través de algunas capas del sistema operativo. Este grupo de direcciones se cambia fácilmente. Utilizando su editor de texto favorito, abra 'tcp_client_ex2.xml' el archivo. Hacia el final del archivo se encuentran las siguientes líneas: ... <address_pool name="client_source_pool"> <address ipv4="0.0.0.0" port="0" /> </address_pool> <address_pool name="client_destination_pool"> <address ipv4="127.0.0.1/32" port="10000" /> </address_pool> ... Para cambiar la dirección del servidor (client_destination_pool), cambie el bloque de direcciones, 127.0.0.1/32 es la dirección deseada. Para prefijos de host (mascara 32) la máscara es opcional; especificar 127.0.0.1 tiene el mismo efecto que especificar 127.0.0.1/32. (config_validator advierte sobre la falta de prefijo, sin embargo, vea los ejemplos anteriores, advertencia: ―bad address - no prefix len?‖.) Si hay dos servidores que se ejecutan en maquinas separadas y sin direcciones contiguas, solo tiene que añadir otra línea <address.../> con la segunda dirección.

Page 98: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

98

Tenga en cuenta que para los servidores, la definición del conjunto de direcciones sigue la misma estructura, pero no es una limitación actual en que sólo una dirección se utiliza para el enlace. Es decir, especificando dos direcciones de un servidor para escuchar en él, no tendrá el efecto deseado; una sola dirección se utilizará. Por ahora, utilizando el especificador de dirección por defecto, 0.0.0.0, es la mejor opción. 2.3 Iniciando Harpoon Ahora tenemos dos archivos de configuración con direcciones de un valor apropiado. Los siguientes ejemplos muestran cómo iniciar Harpoon con estos archivos de configuración. Suponemos que la variable de entorno LD_LIBRARY_PATH se ha establecido correctamente (véase la sección 4.1.4 [Variables de entorno], página 25). Por otra parte, un script Shell run_harpoon.sh se instala cuando se ejecuta make install, que establece la variable de entorno en el directorio correcto y luego ejecuta Harpoon. Los ejemplos siguientes utilizan esta escritura, que se ha instalado en la ubicación predeterminada de / usr / local /arpón. En la maquina servidor: $ /usr/local/harpoon/run_harpoon.sh -v10 -w300 -c \ -f examples/tcp_server.xml ... 10:02:16 sev(07) stopping plugin TcpServer 10:02:16 sev(00) TcpServer: plugin stopped - threads killed and reaped 10:02:16 sev(07) starting plugin TcpServer 10:02:16 sev(02) TcpServer: no plugin state existed on start - created 10:02:16 sev(01) TcpServer: started plugin with 1 threads. 10:02:16 sev(01) <stopping plugins: TcpServer:ok ><starting plugins: \ TcpServer:ok > 10:02:16 sev(09) harpoon started. verbosity<10>warp_factor<60> \ autoincr?<1>continuousrun?<1> 10:02:16 sev(05) 00:00 - emulation time tick … En la maquina cliente: $/usr/local/harpoon/run_harpoon.sh -v10 -w300 -f examples/tcp_client.xml ... 10:02:40 sev(07) stopping plugin TcpClient 10:02:40 sev(00) TcpClient: plugin stopped - threads killed and reaped 10:02:40 sev(07) starting plugin TcpClient 10:02:40 sev(02) TcpClient: no plugin state existed on start - created 10:02:40 sev(01) TcpClient: started plugin with 1 threads. 10:02:40 sev(01) <stopping plugins: TcpClient:ok ><starting plugins: \ TcpClient:ok > 10:02:40 sev(09) harpoon started. verbosity<10>warp_factor<300>\ autoincr?<1>continuousrun?<0> 10:02:40 sev(05) 00:00 - emulation time tick … Las opciones de línea de comandos utilizados anteriormente requieren de una explicación: '-v10 ' Activar mensajes detallados. Usted debe utilizar esta configuración (nivel 10) del nivel de detalle, sobre todo la primera vez que va a empezar con Harpoon. '-W300' Establece la duración del intervalo de longitud a 300segundos (también conocido como "factor de deformación"). Dada una especificación de sesiones activas (<active_sessions>),

Page 99: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

99

en un archivo de configuración, Harpoon itera a través de esta lista, establece el número de sesiones activas para cada valor por una duración de 300 segundos. Si los intervalos originales fueron una hora de duración(es decir, el número medio de sesiones se calculó en sucesivos intervalos de una hora) y la bandera '-w' se establece en 600segundos, un período de 24 podría ser emulado en 14.400 segundos (4 horas). Debe quedar claro a partir de esta explicación el término viene de "factor de deformación". ‘-f [examples/tcp_client.xml, examples/tcp_server.xml]’, Especifica el archivo de configuración para cargar. '-f', múltiples banderas se pueden utilizar para contar Harpoon para cargar más de un archivo de configuración. '-c' Mientras las tres primeras opciones se utilizan para cada lado (cliente y servidor) de Harpoon, el parámetro '-c 'es utilizado para el lado del servidor. Esta opción le dice a Harpoon continuamente el ciclo en su lista de sesiones activas, se especifica en <active_sessions>. Normalmente, Harpoon se repetirá una sola vez a través de esta lista, a continuación dejará la actividad. Para los experimentos de duración determinada, esto es a menudo el comportamiento deseado. Sin embargo, generalmente para estos servidores este comportamiento debe evitarse. La razón es que los servidores (al menos para los plugins proporcionados con la distribución de software Harpoon) no producen el tráfico sin alguna solicitud o la provocación de los clientes. Por tanto, es mucho más fácil dejar simplemente ejecutando servidores, montado sobre una lista de sesiones activas (normalmente se establece en un valor único de todos modos), como un servidor web de funcionamiento continuo. Más información sobre los parámetros de línea de comandos se da en [Parámetros de línea de comandos Harpoon], página 24. Ahora que se inician el cliente y el servidor, se puede obtener información de estos procesos a través de XML-RPC. Uso de la secuencia de comandos stats.py en el subdirectorio 'cli' (y un intérprete de Python de la versión 2.2 o superior): $ python ./stats.py -u http://servermachine:8180/ \ -u http://clientmachine:8180/ stats for <ServerProxy for servermachine:8180/> server-wide information: emulation_interval 1 ---- plugin-specific information: TcpServer is running - up for 81 seconds target threads = 1 active threads = 1 num_transfer = 36 send_bandwidth_total_bps = 35555.6 send_bandwidth_recent_bps = 35555.6 bytes_sent_total = 360000.0 bytes_sent_recent = 360000.0 personality = server stats for <ServerProxy for clientmachine:8180/> server-wide information: emulation_interval 0 ---- plugin-specific information: TcpClient is running - up for 21 seconds target threads = 1 active threads = 1 num_requests = 10

Page 100: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

100

personality = client Tenga en cuenta que las estadísticas recogidas utilizando la herramienta stats.py son aproximadas y sólo reflejan el punto de vista de aplicación. No se debe utilizar como una medida ―Real" (como para la propuesta en el paper). Ellos están allí para ayudar simplemente con el diagnóstico y seguimiento de procesos Harpoon actualmente en ejecución. Otras herramientas de XML-RPC se proporcionan en el subdirectorio 'cli'. Más información sobre ellos se proporciona en el capítulo 5[Administrando Harpoon], página 29. 2.4 Modificación de una configuración para producir deferentes volúmenes de tráfico Un requerimiento común es para harpoon generar una específica carga promedio. Una herramienta, harpoon_reconf.py se ofrece para ayudar en la determinación adecuada del número de sesiones a configurar en un cliente para producir el nivel de tráfico deseado. Si queremos establecer el número de sesiones a fin de que la tasa de tráfico (ancho de banda) producido por Harpoon es de 5 Mbps promediado sobre un intervalo de 10 minutos, podemos utilizar la herramienta harpoon_reconf.py de la siguiente manera (desde el directorio fuente de Harpoon de nivel superior):

La herramienta informa que el número de sesiones activas se debe establecer en tres (Promedio). Las opciones que se utilizan para harpoon_reconf.py son los siguientes:

‘-d’ Activa la información detallada (compilación).

‘-c examples/tcp_client_ex2.xml’ Especifica el archivo de configuración de lado del cliente. Este es un parámetro necesario.

‘-s examples/tcp_server_ex2.xml’ Especifica el archivo de configuración de lado del servidor. Este es un parámetro necesario.

‘-i 600’ Especifica la duración del intervalo. El valor que se utiliza para este parámetro debe ser el mismo que el parámetro "-w" pasado a Harpoon. Ver [Parametros de la línea de comando para Harpoon], página 24 y sección 2.3 [Iniciando Harpoon], página 10 para más información. Este es un parámetro necesario.

‘-r 5000000’ Especifica el objetivo de la tasa de tráfico, en bits por segundo. Por otra parte, usted puede usar el parámetro '-b' para especificar el volumen total (en bytes) que se deben generar sobre el intervalo especificado de duración (dado por "-i"). Ya sea '-r' o '-b' es necesario.

Tenga en cuenta que la bandera '-d' fue utilizada, produciendo una salida detallada. El volumen de destino bytes para producir durante el intervalo solicitado de 600 segundos es 375 000 000 (5000000 / 8 × 600 = 375 millones). La media y desviación estándar de las sesiones necesarias para producir 5 Mbps son 3 y 0,772, respectivamente. El valor de salida simbytes es la cantidad media de tráfico (en bytes) estimada que se producida por tres sesiones. Este valor siempre será

Page 101: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

101

mayor que el objetivo (en general, pero no demasiado), ya que las herramientas de configuración de auto configuración objetivo para producir al menos tanto tráfico como fue enviado originalmente. Después de reiniciar el servidor y el cliente, utilizamos stats.py un minuto más tarde para comprobar el estado del servidor y ver que Harpoon está produciendo alrededor de 5 Mbps. Esta herramienta tiene una sola opción, '-u', para especificar la dirección del escuchador del Harpoon XML-RPC. De forma predeterminada, se utiliza el puerto 8180.

Cerca del final de la prueba, se corre stats.py de nuevo para comprobar el progreso:

Vemos que Harpoon está haciendo una buena combinación a 5 Mbps y está muy cerca del promedio match_rate calculado anteriormente. Recordemos que la combinación es hecha basada en algunos intervalos de tiempo (Mirar [Modelo de tráfico jerárquico basado en flujo de nivel 2 de Harpoon]). Tenga en cuenta también que esta combinación es aproximada, y depende de muchos factores. La naturaleza de la distribución implícitas (tamaño de los archivos y los tiempos de interconexión) tienen un gran impacto en la bondad de la combinación, pero la selección de la duración del intervalo también tiene un efecto significativo. Generalmente, los intervalos más largos (es decir, cinco o diez minutos) son los mejores. Muy a menudo la correspondencia entre lo que esperan y lo que se obtiene es bastante buena, pero puede ser "menos bueno" si usted elige un corto intervalo de tiempo y tienen una distribución con una variabilidad extrema. 3. CONFIGURACIÓN AVANZADA En el capítulo anterior, se discutió la configuración básica de Harpoon, incluida la validación de archivos de configuración, establecimiento de las direcciones finales deseadas, y puesta a punto de Harpoon para producir el volumen de tráfico que desee. En este capítulo se llenan los vacíos del capítulo anterior, discutiendo, con más detalle, la estructura de archivos de configuración Harpoon (usando los plugins generadores de tráfico TCP como base para la discusión), y el uso de las herramientas de auto-configuración.

Page 102: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

102

Harpoon utiliza documentos XML para sus archivos de configuración. Como se describe en [la validación de archivos de configuración], página 26, un esquema XML se distribuye con Harpoon que define la estructura de archivos de configuración para el suministro del plugin de tráfico TCP. Se proporcionan herramientas para generar automáticamente los archivos de configuración de los registros de flujo sin haber sido tratado. También hay una herramienta, config_validator, que es un validador simple de archivos de configuración. El validador no puede atrapar todos los errores lógicos, pero cogerá todos los errores sintácticos. Si bien la herramienta de auto-configuración harpoon_conf.py puede generar archivos de configuración válidos para Harpoon, a menudo es útil para ajustar manualmente los archivos generados por este script (secuencia de comandos) en función de los requisitos de banco de pruebas. Por esta razón, la descripción de cómo utilizar las herramientas de auto-configuración es seguida por una discusión de la estructura detallada de los archivos de configuración. 3.1 HERRAMIENTAS DE AUTO-CONFIGURACIÓN Para auto-configuración, hay dos pasos necesarios y un paso opcional. 1. Proceso de registros de flujo con la herramienta harpoon_flowproc. Los registros de flujo pueden estar en formato cableado de Netflow versión 5 o en formato de flujo-herramientas. La salida de este paso es una representación de flujo intermedio. 2. Procesar el formato intermedio producido en el paso anterior mediante la herramienta harpoon_conf.py para producir archivos de configuración de Harpoon. 3. Opcionalmente, los archivos de configuración producidos en el paso 2 se puede procesar para producir una tasa de bit diferente de la traza de flujo original. La herramienta harpoon_reconf.py tiene dos archivos de configuración Harpoon como entrada para realizar esta tarea. 3.2 La herramienta harpoon_flowproc La herramienta harpoon_flowproc toma registros de flujo virgen, ya sea en formato cableado Netflow versión 5, o en formato de flujo-herramientas. Si su sistema no dispone de herramientas de flujo instalado, sólo será capaz de utilizar la capacidad de Netflow vírgen. La herramienta toma los registros de flujo como entrada estándar y produce un formato intermedio sobre una salida estándar. Este formato intermedio es utilizado por la herramienta harpoon_conf.py (ver sección 3.3 [avanzada conf.py Harpoon], página 16, abajo) para producir archivos de configuración para Harpoon. De forma predeterminada, harpoon_flowproc utiliza un valor de IntervalDuration de 60 segundos, espera las banderas TCP en los registros de flujo, y espera el formato de entrada a las herramientas de flujo. Consulte la Sección 4.3.1 [correr flowproc Harpoon], página 26 para obtener más información sobre las opciones de línea de comandos. El siguiente ejemplo muestra un valor de una hora de los registros de flujo que se canalizó dentro de harpoon_flowproc, con la salida por escrito a "flowproc.out‖. Esto demuestra que hubo más de 4 millones de flujos alrededor de esa hora, con unos 1,8 millones de flujos TCP. Sin embargo, sólo 1,2 millones de flujos TCP tuvieron banderas SYN y FIN o RST (es decir, eran "bien formadas"). Por último, el flujo tratado no tiene que ser realizado en cualquiera de los flujos. (Tenga en cuenta que no es anormal que el flujo tratado es mínimo o no requerido, al menos en los rastros de registro de flujo que se han visto.)

3.3 La herramienta harpoon_conf.py

Page 103: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

103

El script Python harpoon_conf.py utiliza la salida de la herramienta harpoon_conf para producir archivos de configuración para Harpoon. En el ejemplo siguiente, una duración de intervalo de 600 segundos se especifica ('-i' 600), el pool de direcciones de origen y destino se especifican (opciones ‗-S‘ y '-D '), y la salida de los archivos de configuración tienen el prefijo "testoutput‖. Consulte la Sección 4.3.2 [corriendo Harpoon conf.py], página 27 para obtener más información sobre los parámetros de línea de comandos.

Los archivos de configuración como resultado de este script pueden todavía necesitar ser ajustados. En particular, el número de sesiones activas en el archivo de configuración del cliente puede ser superior al número máximo de subprocesos por proceso en el sistema operativo donde Harpoon se llevará a cabo. Ya sea que o usted desee crear una configuración multi-host, dividiendo la generación de carga sobre un cierto número de máquinas. Para estas situaciones, usted tendrá que editar manualmente los archivos de configuración, cambiar el número de sesiones activas por un valor apropiado, y estableciendo las direcciones fuente y destino del cliente por valores apropiadas. 3.4 La herramienta harpoon_reconf.py El harpoon_reconf.py se utiliza para ajustar archivos de configuración cliente y servidor existentes para producir una velocidad de bits especificado. Los archivos de configuración que utiliza este script pueden ser producidos por la herramienta de harpoon_conf.py o se puede hacer usando los archivos de configuración basada en las distribuciones de las distribuciones conocidas. En el siguiente ejemplo, el tipo de destino se especifica como 5 Mbps y el script reporta que 314 sesiones deben ser configuradas para producir este volumen. El script por si mismo no modifica los archivos de configuración, por lo que este valor se debe establecer en el archivo de configuración del cliente. Ver también la sección 2.4 [Modificación de una configuración para producir diferentes volúmenes de tráfico], página 12, y la Sección 4.3.3 [correr Harpoon reconf.py], página 28

3.5 Estructura de los archivos de configuración La mejor manera de describir la estructura de los archivos de configuración de Harpoon es a través de un ejemplo:

Page 104: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

104

La etiqueta de nivel superior en cualquier archivo de configuración debe ser <harpoon_plugins>. Dentro de ese elemento, cualquier número de generación de tráfico <plugin>s puede ser definido. Todos los archivos de configuración de Harpoon deben ser estructurados de esta manera; el analizador XML que utiliza Harpoon (expat — http://expat.sourceforge.net/) hace cumplir este requisito. 3.5.1 Definiciones <plugin> Para el elemento <plugin>, hay tres atributos requeridos, y un atributo opcional:

Name: Un identificador para este plugin. Éste debe ser único para todas las encarnaciones de un módulo generador de tráfico que se ejecuta bajo el control de un único ejecutable Harpoon. Es decir, debe tener las etiquetas separadas <plugin> definidas por las porciones del cliente y el servidor del mismo generador de tráfico si se están ejecutando en el mismo proceso de Harpoon. Por ejemplo, para el lado del cliente del plugin TCP se puede utilizar el nombre de "TCPClient" y por el lado del servidor puede usar "tcpserver".

Objfile: El archivo objeto en el que el código de generación de tráfico es compilado. Para la mayoría de los sistemas operativos como UNIX, éste archivo se quedará en la extensión .so. Para MacOS X, esta extensión es normalmente .dylib.

Maxthreads: Un entero que define el número máximo de hilos para crear para este plugin. Un hilo representa una sesión de Harpoon. Tenga en cuenta que sistemas operativos diferentes imponen límites en el número máximo de hilos por proceso. Harpoon felizmente intentará crear un millón de hilos si se le pide - que depende de usted para asegurarse de que este número tenga sentido. Si Harpoon no puede crear el número de hilos que se le soliciten, éste va a colapsar, dejando a ambos (usted y al Harpoon) de una manera casi miserable.

Personality: Este atributo debe contener el valor "server" o "client". Harpoon se organiza como una aplicación cliente-servidor. Éste atributo específica como el generador de tráfico llamado en el archivo de configuración debe comportarse, ya sea como un cliente o como un servidor. Más concretamente, cada módulo plugin tiene dos puntos de entrada de código: server_session y client_session. El punto de entradas adoptadas depende de este atributo. Véase el Apéndice C [Creando nuevos módulos de generación de tráfico], en la página 43 para más detalles.

3.5.2 CONFIGURANDO LAS DISTRIBUCIONES Dentro de un elemento <plugin>, se definen los datos de distribución utilizados por el plugin. Dependiendo de la "personality" del plugin y sobre el generador de tráfico en particular, diferentes distribuciones pueden ser necesarias. Por ejemplo, para el cliente TCP, los tamaños de los

Page 105: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

105

archivos son irrelevantes, ya que es el servidor que genera archivos. Tenga en cuenta que la herramienta config_validator no supone que todas las distribuciones son necesarias y sólo comprueba la existencia de distribuciones que tengan sentido basadas en la personalidad configurada. Como se describe en el capítulo 1 [Resumen de Harpoon], página 1 y se resumen en [los parámetros de distribución], página 4, hay cinco distribuciones comprendiendo el modelo arquitectural de Harpoon para flujos TCP. La configuración de tres de esos parámetros se describe aquí. El direccionamiento se describe en la siguiente sección. Cada uno de los parámetros PFileSize, PInterConnection, PActiveSessions, PIPRangesrc y PIPRangedest se configuran mediante etiquetas XML <file_sizes>, <interconnection_times>, <active_sessions> y <address_pool>, respectivamente, también se muestra en el ejemplo siguiente. Valores separados por espacios en blanco para cada distribución deberían ser escritos entre las etiquetas de inicio y fin del elemento respectivo. No hay un orden necesario entre estas etiquetas. Para el pugin TCP, los servidores de esperan <file_sizes> y <active_sessions>. Los valores del tamaño del archivo se dan en bytes. Los clientes esperan <interconnection_times> y <active_sessions>. Los tiempos de interconexión se dan en (punto flotante) segundos. Ambos extremos requieren etiquetas <address_pool>, como se describe a continuación. La etiqueta <active_sessions> identifica el número de sesiones de Harpoon (hilos) que debe estar activa durante un intervalo dado. De forma predeterminada, este intervalo se supone que es de 60 segundos, aunque no tiene que ser así. Al ajustar el "warp factor" (opción "-w", [parámetros de línea de comando de Harpoon] página 24) en la línea de comando de Harpoon, cualquier asignación entre el tiempo de emulación y el tiempo de reloj de pared se puede hacer. El controlador del plugin de Harpoon ajusta el número de hilos activos por intervalo de acuerdo a la distribución que figura en <active_sessions>. De forma predeterminada, Harpoon se repetirá una vez por la lista de <active_sessions>, luego cesara la actividad del plugin (es decir, el número de sesiones activas se establece en 0). Para los clientes, esto es a menudo el comportamiento deseado. Para los servidores, sin embargo, esto no es muy a menudo deseable. El parámetro '-c' se puede dar a Harpoon para que los ciclos estén continuamente durante su lista de <active_sessions>. El atributo MaxThreads descrito anteriormente sirve como un tope al número de hilos que son creados por el plugin. Si los valores dados para <active_sessions> exceden MaxThreads, no más allá de los hilos MaxThreads se creará. Por el lado del cliente, la relación entre los valores dados para <active_sessions> y la carga generada por Harpoon debe ser sencilla. Para los servidores, a menudo es mejor suministrar simplemente un valor (que por lo general debe ser el mismo que el valor dado por el MaxThreads) para que los controladores del servidor se estén ejecutando en cada momento. La elección de este valor es similar al suministro de un servidor web, y los valores por defecto establecidos por las herramientas de configuración de Harpoon pueden o no necesitar de sintonía en diferentes ambientes. Los siguientes dos ejemplos muestran cómo las tres distribuciones descritas anteriormente aparecen en los archivos de configuración. Para estos ejemplos, ls cabeceras del plugin (los atributos) no se especifican, sólo las distribuciones aplicables. Para un servidor TCP, sólo los elementos <active_sessions> y <file_sizes> son necesarios:

Page 106: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

106

Para un cliente TCP, solo los elementos <active_sessions> y <interconnection_times> son necesarios:

3.5.3 CONFIGURANDO LAS DIRECCIONES Esta sección presenta las etiquetas XML para configurar el cliente de origen, las direcciones de destino y las direcciones del servidor. Las ideas básicas son las siguientes:

Cuando los clientes hacen peticiones a los servidores, se unen a unas direcciones fuente y a unos puertos, y se conectan a las direcciones remotas de destino y a los puertos;

Los servidores se unen a una dirección y puerto del servidor, esperando las solicitudes de los clientes; las direcciones fuente del cliente pueden ser especificadas o se puede configurar para que el sistema operativo asigne una dirección local por defecto (lo mismo vale para los servidores).

Todas las direcciones (direcciones fuentes del cliente, direcciones destino del cliente y las direcciones de los servidores) se definen usando las etiqueta XML <address_pool>, pero con valores diferentes para el nombre del atributo necesario. Dentro de cada grupo de direcciones, puede haber cualquier número de elementos <address>. Cada elemento <address> debe contener exactamente dos atributos: ipv4 y el puerto. El elemento dirección debe estar en un formato de estilo CIDR¹. El valor del puerto de 0 es un valor especial que indica que el sistema operativo de forma automática debe elegir un puerto local efímero para la conexión. Del mismo modo, la dirección "0.0.0.0" significa que el cliente debería obligar a la dirección local por defecto, y el

Page 107: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

107

servidor debe obligar a "*". Para las direcciones del servidor, sólo una dirección y el puerto debe ser definido: multihoming de esta manera no se aplica todavía. Tenga en cuenta que estas direcciones no dicen nada sobre el protocolo. Los elementos específicos de protocolos se definen dentro de código del plugin. El nombre del atributo de dirección "IPv4" sugiere que otros tipos de direcciones son posibles. En la actualidad, sólo se admiten las direcciones IPv4, pero es concebible que IPv6 será soportado en el futuro. El uso de cualquier atributo de una dirección, excepto "ipv4" generará un archivo de configuración de error de análisis. Continuando con los ejemplos anteriores, el conjunto de direcciones de servidor podría definirse como:

¹Una limitación de la corriente con este esquema es que los cuatro bytes de una dirección IPv4 se debe dar incluso para los prefijos cortos. En lugar de escribir 10.5/16, usted debe escribir 10.5.0.0/16. En este caso, el servidor se une a "*. 10000". Es decir, el puerto 10000 para cualquier dirección local en el servidor. Para la configuración del cliente, definimos un conjunto de direcciones de origen de 64 direcciones (actualmente, 62 direcciones usables, sin incluir las direcciones de red y broadcast) y para direcciones de destino definimos dos redes independientes clase C (254 direcciones utilizables)

Page 108: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

108

3.5.4 PONIENDO TODO JUNTO Para concluir los ejemplos de esta sección, se rellenan los atributos principales del plugin para completar los archivos de configuración. Para el servidor:

Page 109: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

109

Y para el cliente:

3.5.5 Anidación de los archivos de configuración Una característica de los archivos de configuración de Harpoon es que un archivo puede incluir otro, permitiendo que un usuario de Harpoon anide los archivos de configuración y la reutilización de distribución de datos idénticos en más de un plugin, sin duplicar los datos de los mismos. Usando la etiqueta <config_file> como en el ejemplo siguiente hace que el archivo llamado sea sustituido en su lugar:

Suponga que el archivo file_sizes.xml contiene:

La configuración resultante "behave" como si hubiera escrito:

Page 110: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

110

Una cosa muy importante a tener en cuenta es que cada archivo de configuración utilizado por Harpoon (si se trata de un archivo de configuración de "nivel superior" o uno que se incluye por otro) debe ser un documento XML bien formado. Una consecuencia es que los archivos sólo puede contener un elemento de nivel superior. Esencialmente, esto significa que un archivo que contiene exactamente el texto siguiente:

Es ilegal - el analizador XML que utiliza Harpoon dara advertencias. Usted debe estructurar los archivos de configuración para adaptarse a esta restricción. Otro punto a tener en cuenta (que se describirá más adelante) es que mientras que usted puede utilizar nombres de archivo que incluyen rutas de acceso completas o relativas, ninguna de las rutas relativas será relativa al directorio de trabajo del ejecutable Harpoon. Cualquier plugin del archivo objeto referenciado en los archivos de configuración también será referido a la relación del directorio de trabajo del Harpoon. 4. CORRIENDO HARPOON. 4.1 El Ejecutable harpoon Harpoon es el ejecutable usado para cargar los módulos para la generación de tráfico. La generación de tráfico no se implementa directamente en harpoon, es más bien un gestor de plugins de generación de tráfico. Utilizando parámetros de línea de comandos y una interfaz de gestión externa (XML-RPC) se puede cargar, descargar, iniciar, detener, y consultar los módulos degeneración de tráfico. 4.1.1 Parámetros de la línea de comando harpoon. La mayoría de la configuración se realiza a través de la interfaz de gestión externa, pero hay algunos parámetros de línea de comando para la carga inicial y la configuración de harpoon. Estos parámetros son:

`-f file name` o Con la -f se especifican los archivos de configuración que inicialmente se cargan.

Usted puede especificar varios parámetros -f con el fin de cargar más de un archivo de configuración.

`-l logfile` o El argumento interruptor –l es un nombre de un archivo en el cual los mensajes de

registro se anexa. De forma predeterminada, los mensajes de registro se escriben en STDERR.

`-p port` o La bandera -p establece el puerto que el servidor HTTP interno de Harpoon

escucha. De forma predeterminada, este puerto es 8180.

`-s sed` o La opción de -s establece una semilla específica para la generación de números

aleatorios. Si esta opción no está establecida, el generador de números aleatorios se siembra usando una combinación de tiempos y la identificación del proceso de Harpoon.

`-v verbiage_devel`

Page 111: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

111

o La opción-v establece el nivel de verbosidad de los mensajes de registro arrojados por harpoon. El argumento-v debe ser un número entero de 0 a 10, siendo 0 el mínimo de mensajes de registro que se emiten, y 10 significan la cantidad de la charla del programa que es registrada.

`-w warp_factor` o Con la opción -w, es posible establecer el número de segundos que componen un

IntervalDuration. De forma predeterminada, este valor es de 60 segundos, así que si los valores indicados en los usuarios PactiveUsers representan el número de usuarios activos por hora, tardará 24 minutos para emular un día completo. Vea el artículo harpoon completo, algunos de estos temas esta el establecimiento de este parámetro.

`-c` o la bandera -c se usa para decirle a harpoon que se desplace continuamente por

sus valores de Pactivessessions. El comportamiento para harpoon por es pasar tiempo Intervalduration en cada una de las PactiveSessions, pasando sucesivamente atravez de la serie de número de sesiones activas y parar después de el valor final. Con la opción –c, Harpoon estara para un ciclo indefinido sobre estos valores PactiveUsers.

-a o Use el interruptor –a para ocacionar que harpoon no este en el ciclo

automáticamente atravez de los valores PauctiveUsers, usando esta bandera es posible desplazarse manualmente (atravez de la interfaz XML-RPC) atravez de intervalos, harpoon ignorará el interruptor –w si –a esta establecido.

-? o Esta opción desecha la información usada sobre los parámetros de la línea de

comandos anteriores. Las opciones dadas a harpoon no reconocidas también tienen este efecto.

Además para los parámetros de la línea de comandos de harpoon descritos en {parámetros de línea de comando Harpoon}, pagina 24, dos características del tiempo de ejecución son señales controladoras implementadas por harpoon y capacidad de registros de eventos de Harpoon. 4.1.2 Señales implementadas por harpoon La siguiente tabla describe las señales implementadas por harpoon, las otras señales están bloqueadas. SIGINT SIGTERM

Enviando una senal interrumpida a harpoon tiene el efecto de apagarlo. Primero, todo hilo a nivel de usuario que corra el código de plugin se apagaran. Luego el escuchador HTTP/XML-RPC es detenido. Finalmente, Harpoon finaliza.

SIGUSR1

Enviando la senal USR1 a harpoon, tiene el efecto de apagar todos los hilos de plugins de nivel de usuario. Todos los plugins son devueltos al estado vacio. Harpoon mismo continúa el proceso de interfaz remota con el método de llamadas.

SIGUSR2

Enviando la senal USR2 a Harpoon causa que todos los plugins sean reiniciados (análogo al método ResetAll() XML-RPC descrito abajo). Primero, todos los hilos

Page 112: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

112

de plugin son detenidos, segundo, la hora emulada es reiniciada a 0, finalmente, los hilos plugins son reiniciados por todos los plugins cargados.

4.1.3 Registro de Eventos Harpoon La capacidad de registrarse dentro de harpoon es actualmente un poco limitada. Usando la opción `-v` para el ejecutable Harpoon causa que diferentes niveles de registros de mensajes sean escritos o eliminados. Todos los registros de mansajes son actualmente escritos al STDERR por defecto, a menos que un interruptor -l sea dado a harpoon. 4.1.4 Variables de Entorno Mientras no hayan variables de ambiente requeridas por harpoon, muchos sistemas operativos requieran establecer la variable LD_LIBRARY_PATH. (o una variable similar, ej, DYLD_LIBRARY_PATH en MacOS X) en orden con el fin de hacer dinámica la carga de los plugins apropiadamente. Antes de empezar Harpoon esta variable debe estar establecida para incluir el directorio donde los modulos de los plugins están instalados (muchas veces el directorio es harpoon, pero no necesariamente) si usted le han recomendado consultar las paginas relevantes del manual para referencia (ej. Ldconfig y ld.so para Linux, ld y ld.so.1 para solaris, y dyld para MAcOS X) Un script , run_harpoon.sh, es suministrado con la distribicion del software para establecer automáticamente las variable de entorno y luego invoca la ejecuacion de harpoon. Si usted hace un make install cuando esta contruyendo harpoon, este script será instalado y tiene las rutas correctas. Si usted no instala harpoon, el script no funcionara (por la falla de la instacion de la configuración del la ruta ). Si usted quiere usar el script simplemente ajustelo a sus necesidades. 4.2 Validando un archivo de configuración con config_validator Config_validator toma solo un argumento, el archivo de configuración será chekeado. Analiza el archivo de configuración dado e imprime el diagnóstico de lo que se ha analizado. Ejemplos de validación de archivos de configuración están dados en la sección A.2 { validadacion de Archivos de configuración } pagina 34. El config_validator usa el mismo código internamente como harpoon (y pueden ser un poco dificil) por eso es una buena idea validar sus archivos validados usando esta herramienta. Otra manera de validar su archivos de configuración es usar una herramienta de validación de esquemas XML de propósito general. Un archivo de estos en la Web es

http://apps.gotdotnet.com/xmltools/xsdvalidator/Default.aspx. El archivo harpoon_plugins.xsd (ver {XML configuración de esquema}, pagina 39), en el directorio de documentación de la distribución de harpoon, es un esquema XML que define la configuración de los archivos de la estructura de harpoon para el plugin TCP. ( note que este archivo solo define la estructura para el plugin TCP, después de eso su uso es limitado. Este es conservado con la distribución del software principalmente por razones históricas). Para referencia en el esquema

XML ver http://www.w3.org/XML/Schema. Note que el esquema sirve con un propósito similar

como el SGML DTDs, pero son escritos completamente en XML. 4.3 herramientas de autoconfiguración.

Page 113: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

113

Esta sección describe las opciones de la línea de comando para los tres archivos de configuración , harpoon_flowproc, harpoon_conf.py, y harpoon_reconf.py. 4.3.1 harpoon_flowproc La herramienta que procesa los registros de flujo como estándar de entrada y produce una serie de registros reformateada. (en ASCII) en estándar de salida. Hay un numero de limitaciones para este programa, haciéndolo inadecuado para un registro de flujo de trazas muy largo. -i Una de las principales tareas de harpoon_flowproc es oranizar el registro de flujo dentro de una serie de ―sesiones‖, las cuales están conectadas entre el mismo par de IP iniciadas con la misma duración de tiempo. La opción –i permite al usuario especificar esta duración de tiempo en segundos. Por defecto, un valor de 60 segundos es usado. Este valor debería también coincidir con el valor usado por el –i. para el script harpoon_conf.py. -n Harpoon_flowproc, por defecto, espera usar los formatos de registro de flujo flow-tools ( a menos que la libreria flow-tool no sea encontrada). Para usar el registro de formato Netflow 5 use la bandera –n. -w Harppon_flowproc hace ―al tratamiento de flujo‖ para unir el registro de flujo adyacente en un tiempo que es muy parecido a la referencia al mismo flujo. Por defecto solo registros que contengan banderas SYN y FYN o RST serán usadas (―flujos bien formados‖). Para agilizar este requerimiento use la bandera –w. usando esta opción, ningún registro de flujo será ignorado basado en las banderas TCP que faltan. Note que los ‗tratamientos de flujo‘ no será realizados si no hay vaderas TCP presentes, a pesar de todo la opción –w está establecida. 4.3.2 Harpoon_conf.py El script python harpoon_conf.py toma la salida del harpoon_flowproc y produce archivos de configuración XML que pueden ser usados por harpoon, mientras que los archivos de configuración pueden necesitar algún ajuste manual para un ambiente particular, ellos pueden ser usados de inmediato. Harpoon_conf.py requiere de un argumento, el archivo producido desde que corre harpoon_flowproc. Todas las opciones listadas abajo no son requeridas. -s Especifica el punto en tiempo (segundos en punto flotante) después de que los ítems desde el archivo de salida pueden ser usados. Este es un tiempo absoluto (i.e no relativo en el principio de la traza). A lo mejor usted puede usar esta bandera si usted quiere restringir harpoon_conf.py para solo procesar los registros de salida para un intervalo de tiempo particular. -e Especifica el punto en tiempo ( segundos en tiempo flotante) antes que los ítems del archivo de salida pueden ser usados. Esto es un tiempo absoluto (i.e no relativo en en principio de la traza). Usted usaría esta bandera en conjunto con –e solo para procesar los registros de salida con un intervalo de tiempo particular. -i Especifica el valor de IntervalDuration a usar. Por defecto, un valor de 300 segundos es usado. Generalmente, un valor más largo tal como 300 o 600 segundos es mejor. -m Especifica el número máximo de líneas a procesar desde el archivo de salida, esta opción es probablemente menos útil a menos que usted esté haciendo la misma depuración. Normalmente usar las opciones –s y –e es lo que realmente se usaría si se quiere solo procesar registros sobre un intervalo de tiempo en particular.

Page 114: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

114

-p Específica una cadena a usar como un prefijo para los archivos de salida, si la cadena ―textprefix‖ es usada, por ejemplo, los archivos de configuración XML ―textprefix_tcpclient.xml‖ y ―textprefix_tpcserver.xml‖ serán producidos. El prefijo por defecto es harpoonconf. -d Abrir alguna depuración de dialogo. Múltiples opciones –d causan mas diálogos. -D Especifica un pool de direcciones de destino del cliente como un prefijo CIDR. Por ejemplo, -D ‗192.168.1.0/24‘ la opción –D puede especificar múltiples tiempos. -s Especifica un pool de direcciones del origen del cliente como un prefijo CIDR. Por ejemplo, -s ‗192.168.2.0/24‘. La opción –D puede especificar multiples tiempos. Note que la dirección del servidor por defecto es la 0.0.0.0 y el puerto 10000. 4.3.3 harpoon_reconf.py El script python harpoon_reconf.py lee los archivos de configuración de los clientes y servidores existentes, y los retorna a producir volúmenes de trafico especifico. Solo la tasa de bit puede ser especificada en este tiempo. -c Use esta opción para especificar el archivo de configuración del cliente. Esta es una opción requerida. -s Use esta opción para especificar el archivo de configuración del servidor. Esta es una opción requerida. -i Especifica el valor de IntervalDuration con la opción –i el valor por defecto es 300 segundos. -r Especifica la tasa objetivo en bits por segundo usando esta opción. Esta es una opción requerida. -d Activar el dialogo de depuración. 5. ADMINISTRANDO HARPOON En adición al uso de XML para la configuración de archivos de este, harpoon incluye un demonio restrictivo HTTP el cual entiende los comandos POST para XML-RPC, y comandos PUT para cargar la configuración y archivos de los plugins. Estas interfaces pueden ser usadas remotamente para la administración de los demonios de harpoon. Este capítulo describe el uso del script basado en PHP para la administración de harpoon. Nosotros también damos detalles en las interfaces XML-RPC/ HTTP para harpoon. 5.1 Administración basada en la Web.

Un scritp php (http://php.net) y algunos Javascripts (manage_harpoon.php) y archivos de soporte CSS están incluidos con harpoon para facilitar la administración a larga escala de harpoon. Esta sección describe el uso o diseño de esta función. 5.2 Nivel bajo de las interfaces de administración Un servidor restrictivo HTTP está incluido en harpoon el cual permite ser administrado remotamente usando XML-RPC. El método HTTP PUT está también comprendido, permitiendo

Page 115: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

115

cargar los archivos de configuración XML y los binarios de los plugins de los demonios de harpoon a distancia. Esta sección describe esos detalles de la administración de harpoon a nivel bajo. Normalmente usted no necesita preocuparse por estos detalles a menos que la interface web no suministre lo suficiente para sus necesidades. 5.2.1 Métodos de Soporte XML-RPC La siguiente tabla lista todos los métodos XML-RPC reconocidos por harpoon. El ejecutable harpoon escucha por defecto el puerto 8180 para solicitudes. Esto puede ser cambiado con el interruptor –p descrito en ver {parámetros de la línea de comando de harpoon } pag 24. Hay scripts python simples suministrados con la distribución de harpoon que demuestra la forma básica

de manejar RPC. Para mas referencias, ver http://www.xmlrpc.org (hay un tutorial muy útil

disponible en este sito) y la documentación python, disponible en http://www.python.org/. Una

restricción para tener en cuenta con la interface XML-RCP de harpoon es que este es de hilos individuales (single-threads). Esto es, que puede ser manejado con una sola solicitud a la vez. Esta implementación tiene efectos secundarios que cualquier llamada que sea bloqueada por alguna cantidad de tiempo, prevendrá alguna llamada subsecuente desde o hasta que la llamada bloqueada termine.(la razón primaria para implementar el escuchador como un hilo individual, es limitar el número de hilos usados por harpoon por sí mismo, dejando tantos recursos disponibles como sean posibles para el nivel de trafico de usuario de generación de hilos.) Scripts simples Usando cada una de las interfaces descritas abajo son proveídos en el subdirectorio cli. A lo mejor usted también quisiera mirar brevemente la {herramienta ejemplo stats.py} pagina 13. Para una referencia completa usando una de estas interfaces. system.listMethods

Lista todos los métodos reconocidos por el servidor. Otro sistema de interfaces estándar, tales como system.methodSignature and system.methodHelp no están disponibles aun.

System.null Ping al servidor. Retorna la cadena null. Sin parámetros esperados. loadConfig

carga un archivo de configuración XML. El nombre del archivo es dado como un parámetro a este método, el nombre del archivo puede incluir una ruta relativa desde el directorio de trabajo de harpoon. Note que ninguno de los archivos de configuración anidados en la que actualmente está cargando (llamado por este método) también debe ser nombrado con rutas relativas al directorio de trabajo de harpoon. Un valor booleano es retornado indicando el éxito o falla.

UnloadConfig Descargar un plugin de configuración. El nombre del plugin es suministrado como un parámetro a este método. Cualquier estado del plugin es destruido ( unloadPlugin() – ver abajo) y la configuración de los datos por el plugin también son destruidos. El plugin debe de estar inactivo para el éxito de este método. Un valor booleano es retornado indicando verdadero o falso. queryPlugins

Page 116: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

116

retorna una lista de estructuras describiendo todas las configuraciones de los plugins que han sido cargados. Sin parámetros se espera.

unloadPlugin

Descarga el objeto compartido implementando un plugin, dejando la configuración intacta. Un parámetro es esperado, el nombre del plugin. El plugin debe haber sido previamente detenido por esta llamada para tener éxito. Retorna una cadena indicando verdadero o falso. Esta llamada puede ser útil para destruir algún estado estático retenido por el plugin a través de las llamadas a startPlugin y stopPlugin. Es decir, las estadísticas en las variables estáticas de la clase implementando el plugin se limpian como efecto secundario. Un valor booleano es retornado para indicar éxito o falla.

Loadplugin un parámetro es requerido el nombre del pugin. Carga el objeto compartido para el plugin nombrado en el parámetro. La configuración del plugin debe haber sido cargada para que esta llamada tenga éxito. Un valor booleano es retornado indicando falla o éxito. Stopplugin un parámetro es requerido, el nombre del plugin. Para todo los hilos ejecutándose para el plugin nombrado. Retorna un valor booleano indicando éxito o falla. Note que esta llamada puede tomar tiempo no despreciable, a causa de retardo parando satisfactoriamente los hilos de generación de tráfico. Ser paciente Startplugin un parámetro es requerido, el nombre del plugin. Comienzan los hilos a nivel de usuario para el plugin nombrado. Si el objeto compartido para el plugin no ha sido cargado, esta carga es hecha como efecto secundario a esta llamada. El plugin debe estar vacio y/o descargado para que esta llamada tenga éxito. Un valor booleano es retornado indicando éxito o falla. Getstats no se esperan parámetros. Retorna un arreglo de estructura indicando el estado y estadísticas de Harpoon y todos los plugins cargados. Resetall no se esperan parámetros. Detiene todos los plugins corriendo, reinicia la hora emulada a cero y reinicia todos los plugins. Un valor booleano es retornado indicando éxito o falla. Suicide no se esperan parámetros. Inicia un apagado de los hilos dentro de Harpoon, incluyendo el Harpoon mismo. Una cadena sin sentido es retornada. 5.2.2 CARGANDO ARCHIVOS CON http PUT En adición al procesamiento de los métodos XML-RPC usando el comando http POST sobre el puerto 8180, Harpoon también reconoce comandos de HTTPPUT. Usar PUT puede ser útil en configuración de distribución y archivos plugin a través de un número de procesos Harpoon. Las herramientas no son distribuidas con Harpoon para archivos de distribución, usted esa advertido para usar herramientas de libre existencia como curl o wget para esta tarea. El nombre de archivo destino es dado como la URI, y puede incluir un camino relativo. Cualquier slash precedido es descartado. Ejemplos de carga de configuración de archivos y plugins usando curl son dados a continuación: $ curl --upload-file dummy_plugin.xml \ http://10.2.0.2:8180/dummy_plugin.xml % Total % Recvd % Xferd Average Speed Time Curr. Dload Upload Total Current Left Speed 100 961 0 0 100 961 0 961 0:00:01 0:00:00 0:00:01 961 100 963 0 2 100 961 2 961 0:00:01 0:00:00 0:00:01 0 $ curl --upload-file dummy_plugin.so \ http://10.2.0.2:8180/test/dummy_plugin.so % Total % Recvd % Xferd Average Speed Time Curr. Dload Upload Total Current Left Speed 54 37563 0 0 54 20480 0 20480 0:00:01 0:00:00 0:00:01 20480

Page 117: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

117

100 37565 0 2 100 37563 2 37563 0:00:01 0:00:00 0:00:01 2780k $ En este primer ejemplo un archive de configuración XML (dummy_plugin.xml) es escrito en el directorio de trabajo de Harpoon. En el segundo ejemplo, un plugin objeto compartido dummy_plugin.so es escrito para el subdirectorio test ajo el directorio de trabajo de Harpoon. Note que hay consecuencias de seguridad claras del comando PUT. En el presente no hay soporte para autenticación o encripción de transacciones usando SSL. Tampoco hay forma de deshabilitar la interface XML-RPC. Estas características pueden ser agregadas a datos futuros. APÉNDICE A, MAS EJEMPLOS A.1 ARCHIVOS DE CONFIGURACIÓN XML Los siguientes ejemplos muestras porciones de las configuraciones provecidas ―tcp_client_ex2.xml‖ y ―tcp_server_ex2.xml‖, en el subdirectorio examples del software de distribución Harpoon. No todos los datos de configuración están escritos (notados por los elipses en los ejemplos). Primero,, configuración del cliente: <harpoon_plugins> <plugin name="TcpClient" objfile="tcp_plugin.dylib" maxthreads="10" personality="client"> <active_sessions> 10 </active_sessions> <interconnection_times> ... 3.993905 0.293601 2.127093 0.174206 0.391431 2.579116 0.273442 0.358623 0.173357 1.454077 ... </interconnection_times> <address_pool name="client_source_pool"> <address ipv4="10.54.40.2/32" port="0" /> </address_pool> <address_pool name="client_destination_pool"> <address ipv4="10.54.40.1/32" port="10000" /> </address_pool> </plugin> </harpoon_plugins> Ahora, configuración para el servidor: <harpoon_plugins> <plugin name="TcpServer" objfile="tcp_plugin.dylib" maxthreads="37" personality="server"> <file_sizes> ... 1034 9710 559390 52641 2122 2643 16167 22667 23660 20271790 14009 ... </file_sizes> <active_sessions> 37 </active_sessions> <address_pool name="server_pool"> <address ipv4="0.0.0.0" port="10000" /> </address_pool> </plugin> </harpoon_plugins> Si usted desea usar estos archivos para producir un volumen de tráfico especifico (tasa de bit), ver sección 3.4 [puesta punto del volumen de tráfico con Harpoon_reconf.py], pagina 16, sección 4.3.3

Page 118: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

118

[Harpoon_reconf.py parámetros de la línea de comandos], pagina 28, o sección 2.4 [uso básico de Harpoon_reconf.py], pagina 12. Usted puede también cambiar las direcciones para igualar su entorno. Ver sección 2.2 [modificando direcciones en archivos de configuración], pagina 9, o sección 3.5.3 [configuración de direcciones], pagina 20 para esta información. A.2 VALIDACION DE LOS ARCHIVOS DE CONFIGURACIÓN Nosotros ahora validamos los archivos de configuración anteriores, y mostramos la salida del config_validator para cada uno. (Note que la salida no igualará exactamente la ejecución de config_validator sobre estos mismos archivos en el software de distribución de harpoon). $ config_validator tcp_client_ex2.xml loading ../examples/tcp_client_ex2.xml bad address - no prefix len? Checking load of TcpClient name: TcpClient objfile: tcp_plugin.dylib maxthreads: 50 personality: client client source pool: address list: 10.54.0.22 - 10.54.0.22 :0 (1) client destination pool: address list: 10.54.46.0 - 10.54.46.255 :10000 (256) dumping distributions (first 10): active_sessions: 12 27 40 41 36 48 50 50 49 25 interconnection_times: 3.99391 0.293601 2.12709 1.21451 0.409159 0.1121 0.580837 0.101379 0.724933 0.224031 $ $ config_validator tcp_server_ex2.xml loading ../examples/tcp_server_ex2.xml bad address - no prefix len? Checking load of TcpServer name: TcpServer objfile: tcp_plugin.dylib maxthreads: 37 personality: server server address pool: address list: 0.0.0.0 - 0.0.0.0 :10000 (1) dumping distributions (first 10): active_sessions: 37 file_sizes: 18643900 15150 807481 157679 23465 4930 39188 4418 56341 10863 A.3 EJEMPLO USANDO DOS HOSTS, TRAFICO UNIDIRECCIONAL Para los archivos de configuración de cliente y servidor anteriores, asumiendo que las direcciones fuente y destino están establecidas correctamente, estamos listos para comenzar Harpoon y generar tráfico. Para el servidor usted puede ver algo como esto: $ export LD_LIBRARY_PATH=\ $LD_LIBRARY_PATH:/home/jsommers/harpoon/src/plugins $ ./harpoon -f ../examples/tcp_server_ex2.xml -v10 -w300 -c loading ../examples/tcp_server_ex2.xml... bad address - no prefix len? finished.

Page 119: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

119

Checking load of TcpServer name: TcpServer objfile: tcp_plugin.so maxthreads: 37 personality: server server address pool: address list: 0.0.0.0 - 0.0.0.0 :10000 (1) dumping distributions (first 10): active_sessions: 37 file_sizes: 15150 807481 157679 23465 4930 39188 4418 56341 10863 11:06:04 sev(07) stopping plugin TcpServer 11:06:04 sev(00) TcpServer: plugin stopped - threads killed and reaped 11:06:04 sev(07) starting plugin TcpServer 11:06:04 sev(02) TcpServer: no plugin state existed on start - created 11:06:04 sev(01) TcpServer: started plugin with 37 threads. 11:06:04 sev(01) <stopping plugins: TcpServer:ok >\ <starting plugins: TcpServer:ok > 11:06:04 sev(09) harpoon started. verbosity<10>warp_factor<300>\ autoincr?<1>continuousrun?<0> 11:06:04 sev(05) 000.00 - emulation time tick ... hCTRL-ci going down in a ball of flames... $ Note que:

1. La variable LD_LIBRARY_PATH fue inicialmente establecida al iniciar Harpoon, y fue especificada usando la sintaxis shell Bournel.

2. El script de inicio no fue usado, así que la variable anterior, debió ser establecida. 3. La bandera –c fue usada, así que Harpoon continuamente se desplazara sobre su lista de

sesiones activas – esto es típicamente lo que es deseado para un servidor. 4. La sexta línea de registro (comenzando ―11:06:04 sev(01) <stopping plugins:TcpServer:ok

>‖ indicó que el comienzo inicial del plugin fue exitoso. (note que el plugin es primero detenido y después iniciado – esto es normal).

5. Cada línea de registro tiene el tiempo de reloj (hora:minuto:segundos), una grave indicación (rango de 0, mas importante, a 10, dialogo de depuración), el tiempo de emulación de Harpoon (época epoch.fractional), y el actual mensaje de registro (Note que el nivel de gravedad esta actualmente bastante inconsistente - disculpe).

6. El proceso fue detenido pulsando CTRL-C. El comienzo del lado del cliente luce muy similar, así que este no es mostrado. Usando su herramienta de monitoreo propia o los scripts XML-RPC (stats.py), usted podrá evidenciar el flujo de tráfico.

A4. EJEMPLO USANDO DOS HOSTS, TRAFICO BIDIRECCIONAL A TASAS DIFERENTES. Tomando el ejemplo previo, nosotros ahora hacemos lo siguiente: 1. Mueva la instalación a dos hosts diferentes. 2. Genere tráfico en dos direcciones. 3. Establezca el trafico, tal que 10 Mbps sean generados en una dirección y 20 Mbps sean

generados en otra dirección.

Page 120: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

120

Asuma que el host A tiene una IP de 10.0.1.1 y el host B tiene una dirección de 10.0.1.2. Asuma también que se desea el volumen a ser relativamente constante sobre intervalos de 300 segundos. Es más fácil si trabajamos en los requerimientos dados previamente. Primero, deseamos encontrar cuantas sesiones activas necesitamos para generar 10 Mbps y cuantas sesiones para 20 Mbps. Para llevar a cabo esto necesitamos usar el script Harpoon_reconf.py.

$ harpoon_reconf.py -c tcp_client_ex2.xml -s tcp_server_ex2.xml -i 300 \ -r 10000000 -d target volume: 375000000.0 interval duration: 300 client conf file: ../examples/tcp_client_ex2.xml server conf file: ../examples/tcp_server_ex2.xml target: 375000000.0 carry: 0 targetbytes 375000000.0 simbytes 407692953 median 7 mean 6 \ stdev 1.50339682726 max 9 flows 3758 number of sessions should be 6 to achieve volume of 375000000 bytes \

(10000000.0 bits/sec) Como argumentos para Harpoon_reconf.py, suministramos los dos archivos de configuración existentes (‗tcp_client_ex2.xml‘ and ‗tcp_server_ex2.xml‘), la duración de intervalo de duración (300 segundos), y la tasa deseada (10000000 de bits por segundo). (También suministramos la bandera –d para obtener un poco mas de salida verbosa). Vemos que deberían haber 6 sesiones configuradas para producir 10Mbps. En una forma similar encontramos que debe haber 11 sesiones configuradas para producir 20 Mbps. Luego, necesitamos crear algunos archivos de configuración nuevos basados sobre los archivos existentes. Desde que las direcciones fuente y destino para nuestros clientes son diferentes, necesitamos dos archivos de configuración de clientes separados. Usaremos direcciones por defecto para el servidor, es asi que solamente se necesita un archivo de configuración de servidor para ambas maquinas, los pasos deberían ser: 1. Copie ‗tcp_client_ex2.xml‘ a ‗clientA.xml‘ y ‗clientB.xml‘; 2. Edite ‗clientA.xml‘ para tener la dirección fuente de 10.0.1.1, dirección destino de 10.0.1.2, y numero de sesiones activas como el único valor de 6. ( También asegure que el atributo maxthreads se estableció al menos 6); 3. edite ‗clientB.xml‘ para tener dirección fuente de 10.0.1.2, dirección destino de 10.0.1.1, y numero de sesiones activas como único valor de 11 ( También asegúrese que el atributo maxthreads se estableció al menos 11); 4. Mueva ‗clientA.xml‘ y una copia de ‗tcp_server_ex2.xml‘ al host A, Y ‗clientB.xml‘ y una copia de ‗tcp_server_ex2.xml‘ al host B; 5. Iniciar los servidores; 6. Iniciar los clientes.

Una vez iniciemos esto, veremos los 10 segundos promedios sobre unos periodos de 50 segundos (en la dirección de 10 Mbps) son: 15212977, 10309469, 9073456, 9846232, 14869665, que da un promedio alrededor de 11.8 Mbps. Sobre un periodo más largo el promedio viene a estar cerca de los 10Mbps. Aunque generalmente nunca será exactamente 10 Mbps. Sin embargo este debería estar cerca al rango del intervalo de duración. De nuevo, la calidad de la combinación depende de un numero de cosas, incluyendo la duración del intervalo, el máximo tiempo de interconexión (especificado cuando se usaron herramientas de auto-configuración) , y la naturaleza de la interconexión y la distribución de tamaños de archivo (distribuciones de colas pesadas necesitan ser muestreadas sobre una larga duración para el promedio de muestra para acercarse al promedio distribucional).

Page 121: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

121

Para la dirección de 20 Mbps, también tomamos 10 segundos promedio usando SNMP. Sobre una duración de 160 segundos, los ejemplos son: 14028319, 23009625, 19027488, 20827397, 31798955, 32786164, 13115353, 15678779, 13945478, 11020225, 14158496, 10773346, 15449599, 18931181, 24803243, 26993437 , los cuales dan un promedio de 19.1 Mbps- muy cerca de 20 Mbps, aun sobre un intervalo más corto y especificado de 300 segundos. A.5 EJEMPLO CON TRES HOSTS Finalmente se desea hacer lo siguiente:

1. Establezca dos maquinas clientes (A y B) para hacer solicitudes a un solo servidor. 2. Genere 10 Mbps sobre camino inverso al cliente A, y 5 Mbps sobre el camino inverso al

cliente B. 3. Establezca dos procesos de servidores para manejar la carga, es así que un proceso sirve

al cliente A y otro proceso sirve al cliente B. Para nuestra red de hosts A y B se adiciona una nueva máquina el host C, con dirección IP 10.0.1.3. Usaremos el host C como nuestro servidor. Una cosa más fácil es establecer los archivos de configuración del servidor. desde que nosotros deseamos establecer dos procesos para manejar la carga del servidor, necesitaremos dos archivos de configuración: 1. Copie el archivo de configuración del servidor original ‗tcp_server_ex2.xml‘ a‗serverA.xml‘

y ‗serverB.xml‘. 2. Edite ‗serverA.xml‘ para escuchar sobre el puerto 10001 para conexiones de cliente host A

(encuentre el pool de direcciones hacia el final del archive). 3. Edite ‗serverB.xml‘ para escuchar sobre el puerto 10002 para conexiones de cliente desde

host B (encuentre el pool de direcciones hacia el final del archivo); 4. Mueva estos dos archives de configuración al host C.

Los procesos de servidor pueden ahora iniciarse. Usted puede desear comenzarlos en el en el fondo, escribiendo para separar archivos de registros. El otro elemento que debe tener en cuenta es que los puertos de XML-RPC debe ser establecidos de forma distinta de la predeterminada, de lo contrario estos servidores entraran en conflicto. Asumiendo que se ha establecido LD_LIBRARY_PATH, las líneas de comienzo deberían ser algo como: $ harpoon -f serverA.xml -p 8181 -l serverA.log -w300 -c -v10 & $ harpoon -f serverB.xml -p 8182 -l serverB.log -w300 -c -v10 & Ahora se necesita establecer los archives de configuración de cliente. Desde que se tiene ya establecida la dirección fuente del cliente en el anterior ejemplo (Ver sección A.4 (ejemplo usando dos host), pag 36), se necesita establecer la dirección y puerto destino correctamente, y establecer el número de sesiones activas para producir volúmenes deseados. Primero necesitamos encontrar como muchas sesiones deberían ser activas para producir 5 Mbps: $ harpoon_reconf.py -c clientB.xml -s serverB.xml -i 300 -r 5000000 -d target volume: 187500000.0 interval duration: 300 client conf file: ../examples/tcp_client_ex2.xml server conf file: ../examples/tcp_server_ex2.xml target: 187500000.0 carry: 0 targetbytes 187500000.0 simbytes 209525866 median 4 mean 3 \ stdev 0.891882585016 max 5 flows 2050 number of sessions should be 3 to achieve volume of 187500000 bytes \ (5000000.0 bits/sec) Harpoon_reconf.py muestra que habría tres sesiones activas para producir 5Mbps. Ahora, podemos editar los archivos de configuración y comenzar los clientes:

1. Edite ‗clientA.xml‘ para tener el host C (10.0.1.3) como la dirección destino y 10001 para el Puerto destino (note que ya se tiene el numero de sesiones activas establecidas para producir 10Mbps);

Page 122: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

122

2. Edite ‗clientB.xml‘ para tener el host C (10.0.1.3) como la dirección destino y 10002 para el Puerto destino.

3. También en ‗clientB.xml‘, establece el numero de sesiones activas para tres. Ahora, comience los clientes: hostA$ harpoon -f clientA.xml -w300 -v10 ... hostB$ harpoon -f clientB.xml -w300 -v10 Después de un tiempo se chequea el proceso del servidor A para ver que tanto tráfico está siendo generado usando el escrip stats.py $ stats.py -u http://hostC:8181/ stats for <ServerProxy for hostC:8181/> server-wide information: emulation_interval 0 ---- plugin-specific information: TcpServer is running - up for 117 seconds target threads = 37 active threads = 37 num_transfer = 639 send_bandwidth_total_bps = 4588290.0 send_bandwidth_recent_bps = 5593370.0 bytes_sent_total = 67103700.0 bytes_sent_recent = 53137000.0 personality = server Se ve que alrededor de 5Mbps está siendo generado, lo cual es lo que se deseo. Note que para todos estos ejemplos, no se tiene especificado alguna conexión física, algunos tiempos de ida y regreso o rutas. Estos establecimientos de configuraciones están fuera del dominio de Harpoon. Usted debería fijar estos parámetros basados sobre requerimientos para sus pruebas. Usted debería también ser consciente que cambiando estos parámetros de red( como opuestos a parámetros de la capa de aplicación en harpoon) puede hacer diferencias muy significantes en la naturaleza del trafico generado. Refiérase a el artículo técnico de harpoon para ejemplos de tales diferencias. APENDICE B. ESQUEMA DE CONFIGURACION XML El esquema de la definición de los archivos de configuración del plugin TCP se da a continuación como referencia. (Este archivo vive en el subdirectorio de documentación de la distribución de harpoon). Algún día tal vez habrá un agradable generador de análisis para justificar la existencia de este. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="en"> this is an xml schema for harpoon configuration files. copyright 2004 joel sommers. an xml schema is a way to define the structure of xml documents using xml itself. note that dtd (document type definitions) have a similar function, yet are written using sgml rather than xml. for more info, see: http://www.w3.org/TR/xmlschema-1/. a useful validator on the web is at: http://apps.gotdotnet.com/xmltools/xsdvalidator/Default.aspx. <!-- $Id: appendices.texi,v 1.12 2005/08/05 19:36:35 jsommers Exp $

Page 123: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

123

--> </xsd:documentation> </xsd:annotation> <xsd:element name="harpoon_plugins" type="pluginList" /> <xsd:complexType name="pluginList"> <xsd:sequence> <xsd:element name="plugin" minOccurs="1" maxOccurs="unbounded" type="pluginSpecifier" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="pluginSpecifier"> <xsd:sequence> <xsd:element name="config_file" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> <!-- NB: these element are only required for implementation of TCP sources, and there are different specific requirements at a server or client (which are not specified in this schema). also, there are different elements required for different sources. refer to the manual... NB: also, defining the sub-elements of the plugin as a sequence is overly restrictive, since they must appear in the same order as below. in the actual code, we don’t make that restriction; elements can appear in any order. --> <xsd:element name="interconnection_times" type="float_list" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="active_sessions" type="int_list" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="file_sizes" type="int_list" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="address_pool" type="addressList" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"/> <xsd:attribute name="objfile" type="xsd:string" use="required"/> <xsd:attribute name="maxthreads" type="xsd:int" use="required"/> <xsd:attribute name="personality" type="personalityType" use="optional"/> </xsd:complexType> <xsd:simpleType name="int_list"> <xsd:list itemType="xsd:unsignedLong"/> </xsd:simpleType> <xsd:simpleType name="float_list"> <xsd:list itemType="xsd:float"/> </xsd:simpleType> <xsd:simpleType name="personalityType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="client"/> <xsd:enumeration value="server"/> <xsd:enumeration value="unknown"/> </xsd:restriction> </xsd:simpleType>

Page 124: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

124

<xsd:simpleType name="addressPoolType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="client_source_pool"/> <xsd:enumeration value="client_destination_pool"/> <xsd:enumeration value="server_pool"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="addressList"> <xsd:sequence> <xsd:element name="address" minOccurs="1" maxOccurs="unbounded" type="addressSpecifier"/> </xsd:sequence> <xsd:attribute name="name" type="addressPoolType" use="required"/> </xsd:complexType> <xsd:complexType name="addressSpecifier"> <xsd:attribute name="ipv4" type="ipv4Type" use="required"/> <!-- NB: not restrictive enough --> <xsd:attribute name="port" type="xsd:nonNegativeInteger" use="required"/> </xsd:complexType> <xsd:simpleType name="ipv4Type"> <xsd:restriction base="xsd:string"> <!-- NB: not completely accurate, but sufficient for now --> <xsd:pattern value="\d{1,3}(\.\d{1,3}){0,3}(\/(\d+)){0,1}" /> </xsd:restriction> </xsd:simpleType> </xsd:schema> APENDICE C. CREANDO NUEVOS MÓDULOS DE GENERACIÓN DE TRÁFICO La creación de un nuevo módulo de generación de tráfico puede ser tan simple como subclasificar la clase de HarpoonPlugin. Hay cinco métodos virtuales que se deben sobreescribir para llevar a cabo esto. • bool init(HarpoonPluginConfig*) • void client_session(void) • void server_session(void) • void stats(std::ostream&) • void shutdown(void) Un ejemplo juguete esta dado. Es buena idea revisar el código y la documentación para el TCPPlugin antes de intentar escribir su propio plugin. Note en el ejemplo siguiente que el símbolo C factory_generator es el símbolo el cual harpoon busca. Esta función retorna justamente regresos a un objeto de generador de tráfico que implementa los cinco puntos de entrada específicos nombrados anteriormente. Hay algunos trucos para mantener estructuras de datos comunes para un plugin. Ver el TCPPlugin para documentación y un ejemplo de este comportamiento. class DummyPlugin : public HarpoonPlugin { public: DummyPlugin() : HarpoonPlugin() {} virtual ~DummyPlugin() {} // plugin general, and thread specific configuration. this method // is called for every thread, so you must be careful not to

Page 125: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

125

// re-initialize anything. virtual bool init(HarpoonPluginConfig *hpc) { HarpoonPlugin::init(hpc); return true; } // if plugin personality is client, this method is called virtual void client_session() { std::cerr << "dummy client session begin" << std::endl; sleep(10); std::cerr << "dummy client session end" << std::endl; } // if plugin personality is server, this method is called virtual void server_session() { std::cerr << "dummy server session begin" << std::endl; Appendix C: Creating New Traffic Generation Modules 44 sleep(10); std::cerr << "dummy server session end" << std::endl; } // called for all threads when the plugin is being shut down. virtual void shutdown() { std::cerr << "dummy shutdown" << std::endl; return; } // best to check your own personality here to decide what stats // to return. virtual void stats(std::ostream &os) { XmlRpcUtil::encode_struct_value(os, "dummystats", "no stats!"); } }; /* * factory function. "factory_generator" is the C symbol we look for * when loading harpoon plugins. (We use a C factory function to get * around C++ name mangling issues.) */ extern "C" { Harpoon::DummyPlugin *factory_generator(void) { return (new Harpoon::DummyPlugin()); } }

Para leer el documento original referirse a http://cs.colgate.edu/faculty/jsommers/harpoon/

Page 126: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

126

9. ARTÍCULO PUBLICABLE

Una visión general sobre herramientas de

software para generar tráfico de red.

Lina Marcela Ocampo Peláez Estudiante de Ingeniería de Sistemas y Telecomunicaciones

[email protected]

Michael Stevens Orozco Piedrahita Estudiante de Ingeniería de Sistemas y Telecomunicaciones

[email protected]

Andrés Felipe Castaño Mejía Estudiante de Ingeniería de Sistemas y Telecomunicaciones

[email protected] RESUMEN Este artículo muestra los resultados obtenidos después de una investigación realizada sobre los diferentes tipos de tráfico y software generadores de tráfico, con el fin de conocer a fondo sobre estos temas y a partir de una recopilación de información, se eligen dos software que tengan las mejores características en cuanto a funcionamiento, instalación e implementación y finalmente realizar unas serie de pruebas de generación y captura de tráfico; además de esto se mostrará el análisis de dichas pruebas través del software analizador de protocolos Wireshark. Palabras Clave: Software, Generador de tráfico, Wireshark. ABSTRACT This article shows the results after of an investigation into the different types of traffic and traffic-generating software, whit the aim to know about these items and from a collection of information, choice two software that have the best characteristics in terms to operating, installation and implementation, and finally

Page 127: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

127

perform a series of test generation and traffic capture, besides it is shown the analysis of the evidence through the Wireshark protocol analyzer software. 1. INTRODUCCIÓN En la actualidad existen muchos tipos de dispositivos de red que nos permiten conectarnos físicamente a dicha red, entre los que se encuentran Switchs, Routers, Hubs, Bridges, por los cuales se gestiona el tráfico en las redes. Para un buen funcionamiento de los mismos se requiere de una buena capacidad de saturación en cuanto a tráfico se refiere, esto si se desea tener garantizada su eficiencia y disponibilidad en la red. El presente artículo permitirá dar un vistazo a gran escala de los tipos de tráfico y los software generadores de tráfico más utilizados en la actualidad. De la exploración realizada se eligió una herramienta que permita generar varios tipos de tráfico; la seleccionada fue Ostinato (Ostinato, 2010), porque es un software fácil de instalar y manejar, además cuenta con un agradable entorno gráfico, y permite generar diferentes tipos de tráfico a la vez. El tráfico generado por esta herramienta es capturado y analizado por medio de otro programa muy conocido en el mundo de los usuarios Linux y administradores de redes: Wireshark. (Wireshark, 2010). Con la ayuda de este software se hace una gestión a la red, y a partir de un reporte detallado de cada uno de los sucesos durante la transmisión, se generarán hipótesis en cuanto a qué pasa, sí la red o los servicios se ven saturados de tráfico, lo cual define qué tan disponible y eficiente es la red y se determinará si cumple o no con calidad de servicio. En el presente artículo se encontrarán las diferentes secciones correspondientes a la visión general de los diferentes software generadores de tráfico; en la primera sección se habla sobre los diferentes tipos de tráfico; en la segunda sección se describen los diferentes software generadores de tráfico existentes; y por último se encuentran las pruebas y resultados, a partir de la herramienta seleccionada. 2. TIPOS DE TRÁFICO Dentro de los tipos de tráfico, se encuentran los llamados protocolos; un protocolo se considera como el conjunto de normas con las que debe cumplir una computadora para poder establecer comunicación con otros equipos dentro de una red; y a su vez entender los diferentes lenguajes utilizados en ella. A continuación se describen los diferentes tipos de tráfico según la capa en la que aplican, teniendo en cuenta la pila de protocolos TCP/IP.

Page 128: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

128

2.1 Capa de Aplicación HTTP (Protocolo de Transferencia de Hipertexto): Éste protocolo es el encargado de interpretar una petición que el usuario le realiza a un servidor, para así el usuario poder visualizar una página web por medio de diferentes puertos; por defecto http usa el puerto 80. Cabe destacar que el protocolo HTTP es algo inseguro al momento de la transmisión de los datos, aunque existen algunas posibles soluciones como lo es S-HTTP. (Fielding et al., 1999) FTP (Protocolo de Transferencia de Archivos): Protocolo que permite la transferencia de archivos desde el terminal del usuario hasta un servidor o viceversa, todo esto en la world wide web por medio del puerto número 20 para datos y 21 para control. Cabe destacar, que este protocolo carece de seguridad puesto que la información que viaja por la red es en texto plano sin ningún tipo de cifrado. (Postel &Reynolds, 1985). SMTP (Protocolo Simple de Transferencia de Correo): Protocolo que permite el envió y recepción de correos electrónicos hacia uno o varios destinatarios. El tráfico presente en el SMTP es el texto compuesto por caracteres ASCII. (Postel, 1982). SSH (Secure Shell): Protocolo que permite la transmisión de datos con una baja posibilidad de que terceros puedan tener acceso a ella, gracias a que se maneja una encriptación de 128 bits. Los datos viajan a gran velocidad puesto que son comprimidos por el servidor al cual se le realiza la petición. (Medina, 2004-2005). DNS (Sistema de nombres de dominio): Protocolo encargado de convertir los nombres de dominio en direcciones IP que se encuentran alojadas en los servidores de la red. ICANN es la organización que permite el registro de los números de dominio. Las peticiones y transferencias se realizan por el puerto 53, pero estas no son garantizadas ya que éste protocolo está basado en UDP (protocolo de transporte que no garantiza la recepción de la información enviada). Postel. (1994). Telnet: Protocolo que permite la conexión de un usuario a un servidor por medio de un intérprete de comandos, lo que se busca con ellos es que el usuario maneje un terminal de manera remota y todo el tráfico enviado es tipo ASCII. (Postel & Reynolds, 1983). 2.2 Capa de Transporte UDP (Protocolo de Datagrama de Usuario): Protocolo que permite el envío de datagramas sin haberse realizado una conexión con anterioridad; el módulo del UDP debe estar en la capacidad de determinar las direcciones de origen y destino.

Page 129: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

129

Se debe resaltar que este protocolo no asegura que los paquetes lleguen a su destino correctamente. Postel (1980). TCP (Protocolo de Control de Transmisión): Protocolo que permite la intercomunicación entre host dentro de una misma red, y que estos a su vez puedan estar conectados a internet; una de las principales características de TCP, es que es orientado a la conexión, además permite realizar control de errores y de flujo. (Salavert, 2003) 2.3 Capa de Red ICMP (Protocolo de Mensajes de Control de Internet): Protocolo utilizado para informar cuando los paquetes no llegan de una manera correcta, éste trabaja en conjunto al protocolo IP que es el encargado del envió de los datagramas a través de la red. Cabe la posibilidad que los menajes que envía ICMP también pueden tener errores y es ahí cuando se reenvía un nuevo mensaje ICMP. Postel (1981). IP (Protocolo de Internet): permite establecer el formato de los datagramas que serán transmitidos entre los equipos conectados a una red, y además asignar una dirección única a cada equipo, lo que se conoce como direccionamiento; este protocolo tiene como propósito trasmitir datagramas a través de un conjunto de redes interconectadas entre sí, con el fin de que cada datagrama alcance su destino. A través de este protocolo se llevan a cabo cierto tipo de aplicaciones entre ellas voz sobre IP (VoIP,Voice Over IP). (Herrera, 2003). VoIP (Voz sobre IP): es una aplicación que consiste básicamente en transmitir voz a través de las redes basadas en IP, realizando el proceso de conversión de voz analógica a digital y de esta manera permitiéndole que viaje por la red IP, LAN o WAN; aunque una de las ventajas que puede presentar es que no garantiza la entrega de paquetes y estos pueden perderse, por ser una transmisión de voz en tiempo real. (¿Qué es VoIP?, n.d./2010) 3. SOFTWARE EXISTENTES Actualmente existen una gran variedad de software que permiten generar tráfico en una red, se caracterizan de acuerdo a las necesidades del usuario, dependiendo qué tipo de tráfico quiera ingresar a la red, el intervalo de duración o características como qué tan amigable es para un usuario su administración ó bajo qué tipo de plataforma se ejecutará, a continuación se describen algunas herramientas encontradas:

Page 130: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

130

Ostinato: es un generador y analizador de tráfico de paquetes de redes de comunicaciones con una GUI amigable. Posee creación de paquetes personalizados con edición de cualquier campo para diversos protocolos: Ethernet, 802.3, LLC SNAP, VLAN (with Q-in-Q), ARP, IPv4, IPv6, IP-in-IP también conocido como IP Tunneling, TCP, UDP, ICMPv4, ICMPv6, HTTP, SIP, RTSP, NNTP. Se ejecuta en Windows y Linux. (Ostinato, 2010). NSAuditor: es una herramienta que reúne un amplio rango de utilidades de red, para efectuar diversas operaciones como auditorías, escaneo, monitorización, y mucho más. Se podrán descubrir servicios de red y comprobar sus posibles vulnerabilidades, listar todos los puntos finales TCP y UDP junto con su proceso asociado, descubrir nombres de NetBios, rastrear servidores MS SQL, intentar detectar rastros de hardware, entre otros. Este software se encuentra solo para Windows. (NSauditor, 2010) Ethereal: es utilizado por los profesionales de redes en todo el mundo para solucionar diferentes problemas de análisis en redes y software. Su código es abierto esto permite a la comunidad en red añadir mejoras. Funciona en todas las plataformas informáticas más populares, incluyendo Unix, Linux y Windows. (Ethereal, 2007) TF – GEN: Tf-Gen permite generar tráfico en la red de área local (Ethernet, por ejemplo).Si se desea evaluar el rendimiento de red, es necesario generar tráfico en la red. Trabaja con una Aplicación GUI bajo Windows a 32 bits. Este generador puede inyectar tráfico multicast, y generarlo de acuerdo a diferentes patrones de tráfico. Se recomienda usar TF-GEN bajo Windows NT/2000. Genera únicamente tráfico TCP/IP y UDP. La plataforma de ejecución es Windows. (Yumo, n.d./2010) IPERF: Iperf es una herramienta que utiliza pruebas de red común, puede generar tráfico TCP y UDP, flujos de datos y medir el rendimiento de una red que los está llevando; permite al usuario ajustar diversos parámetros que pueden ser utilizados para las pruebas de una red o la sintonía para la optimización de la misma. Es software de código abierto y funciona en varias plataformas incluyendo Linux, Unix y Windows. (Iperf, 2003) HPING 2: es una excelente herramienta de tipo generador de paquetes. Soporta protocolos TCP, UDP, ICMP y protocolos RAW-IP, permite realizar funciones tales como: testear firewalls, scannear puertos (mediante flags), Os Fingerprint, Traceo de rutas; Hping2 es una utilidad principalmente creada para auditar redes. Existe Hping2 para Windows y Linux. (Sanfilippo, 2006) Némesis: es un paquete de red de línea de comandos, es de gran utilidad para las pruebas de inyección, para los sistemas de detección de intrusiones de red, cortafuegos, pilas IP, etc. Némesis puede crear e inyectar ARP, DNS,

Page 131: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

131

ETHERNET, ICMP, IGMP, IP, OSPF, RIP, TCP y paquetes UDP. Se ejecuta en BSD, Linux, Solaris, Mac OS X y Windows. (Nathan & Stone, 2004) Rude and Crude: es un programa pequeño y flexible, que genera tráfico a la red, el cual puede ser recibido y registrado en otro extremo con el CRUDE, pues RUDE representa tráfico UDP en tiempo real. Su plataforma soportada es Linux con licencia GPL2. (Laine, Saaristo & Prior, 2002). Scapy: es un programa que es capaz de crear o decodificar los paquetes de un amplio número de protocolos y enviarlos; la captura de ellos, coincide con las peticiones y respuestas. Se pueden manejar fácilmente tareas clásicas como la exploración, tracerouting, el sondeo, las pruebas unitarias, los ataques o el descubrimiento de la red. También funciona muy bien en otras tareas específicas que la mayoría de otras herramientas no puede manejar, como el envío de marcos válidos, inyectando su propio marco 802,11, la combinación de técnicas (VLAN hopping + envenenamiento de caché ARP, VOIP decodificación en el canal cifrado WEP, entre otros. Se ejecuta en Linux, Unix genérico, OpenBSD installation guide, FreeBSD installation guide, Mac OS X 10.4 (Tiger) y Windows. ([email protected], n.d./ 2010) Generador de tráfico de Internet Distribuido: D-ITG se encuentra actualmente disponible en Linux, Windows. Los protocolos soportados son: TCP, UDP, ICMP, DNS, Telnet, VoIP (G.711, G.723, G.729, detección de actividad de voz, comprimido RTP). Utiliza distribuciones exponenciales, de Pareto y de Poisson. Este generador de tráfico fue diseñado para incrementar la tasa de bits generados, aumentar la tasa de bits recibidos, con lo cual buscan incrementar a su vez la escalabilidad y usabilidad del mismo. Se pueden establecer, tanto duración de la prueba y el retraso (con respecto al tiempo inicial del experimento). (Pescapé, Emma, Avallone, Botta & Ventre, 2004) Pktgen: es una herramienta de prueba de alto rendimiento incluido en el kernel de Linux. Se puede utilizar para generar paquetes ordinarios para probar otros dispositivos de red. Especialmente es interesante el uso de Pktgen para probar enrutadores o puentes. Ya que Pktgen está en el núcleo de linux, se pueden generar tasas de paquetes muy altas. ([email protected], n.d./2010) PacketGenerator: Es una herramienta para realizar pruebas de carga de red y pruebas de reproducción de tráfico. Se trata de un programa de software para la transmisión de tráfico a través de 10/100M Ethernet desde un PC con Windows. El software es compatible con el modo de paquete único. (Packet Generator, n.d/2010) Packet Excalibur: Motor gráfico multi-plataforma de red de paquetes y secuencias de comandos de texto extensible con protocolo basado en las descripciones. Es una herramienta de red para construir y recibir paquetes a medida. Con paquetes

Page 132: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

132

Excalibur se puede decidir los atributos de paquetes desde la capa física hasta la de aplicación, olfatear paquetes falsos (generador de paquetes) en una sola interfaz, scripts de construcción en el entorno gráfico, definir protocolos adicionales en archivos de texto simple. Las plataformas soportadas son Linux, Windows. (Packet Excalibur, n.d/2010) Packgen: es un generador de paquetes de red simple, escrito en Ruby. Maneja marcadores DiffServ, útil para probar ancho de banda y QoS. Puede generar varios flujos de datos, cada uno con sus propias propiedades como el nombre, destino, ancho de banda, tamaño del paquete, DSCP (punto de código de servicios diferenciados) y rango de tiempo. Se ejecuta en Rubí. (Licencia GPL). (Ghislain, 2005). GASP: significa «Generador y analizador del sistema para los protocolos". Le permite construir paquetes a mano y probar el comportamiento de su programa cuando se enfrentan a algunos paquetes extraños. GASP se divide en dos partes: un compilador que tenga las especificaciones de los protocolos y un generador de código para manejarlo, este código es un nuevo comando Tcl como GASP en basarse en Tcl / Tk y amplía las instalaciones de secuencias de comandos proporcionada por Tcl. Las plataformas soportadas son Windows y Linux. (Riesterer, 2000) GSpoof 3.0: es una herramienta que hace más fácil y precisa la creación y el envío de paquetes TCP/IP. Funciona desde la consola (línea de comandos) y tiene una interfaz gráfica fácil de usar escrita en GTK. Apoya la manipulación encabezado Ethernet, la manipulación de cabecera IP, la manipulación de cabecera TCP, la carga útil de TCP, las inundaciones, el apoyo a la notificación de la congestión. Se ejecuta en Linux (Licencia GPL). (Embyte, 2009) Harpoon: Harpoon es un generador de tráfico de nivel de flujo. Se utiliza un conjunto de parámetros de distribución que pueden ser extraídos automáticamente a partir de vestigios de Netflow para generar flujos, incluye características temporales y espaciales. Harpoon puede ser usado para generar tráfico de fondo representativo de aplicación o protocolo de pruebas, o para realizar pruebas de hardware de conmutación de red. Harpoon genera tráfico TCP, UDP, HTTP, DNS, NTP. Plataformas soportadas: Linux, Solaris 8, FreeBSD y MAcOSX. (Sommers, 2005) ISIC: ISIC (IP inspector de la integridad) es una suite de utilidades para el mejorar la estabilidad de una pila de IP y su componente de las pilas (TCP, UDP, ICMP.) Genera paquetes pseudo aleatorios del protocolo de destino; en los paquetes se da la tendencia a cumplir. Es decir, el 50% de los paquetes generados pueden tener opciones de propiedad intelectual. 25% de los paquetes pueden ser fragmentos IP. Se ejecuta en Linux. (ISIC, n.d/2010)

Page 133: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

133

PackETH: es una herramienta generadora de paquetes para Ethernet. Permite crear y enviar cualquier paquete posible o secuencia de paquetes en la Ethernet. Protocolos soportados: Ethernet II, Ethernet 802.3, 802.1Q, QinQ, ARP, IPv4, definida por el usuario carga útil de la capa de red, UDP, TCP, ICMP, IGMP, definida por el usuario carga útil de la capa de transporte, RTP. Se ejecuta en Linux (GPL2). (Killerbee2002, 2006) PackIt: Paquete de caja de herramientas que se puede personalizar, inyectar, controlar y manipular el tráfico IP. Puede suplantar casi todos los TCP, UDP, ICMP, IP, ARP, RARP, y las opciones de Ethernet de cabecera, PackIt puede ser útil en la prueba de firewalls, detección de intrusos y sistemas de prevención, escaneo de puertos, simulación de tráfico de red y generales de TCP / IP de auditoría. Se ejecuta en Linux (GPL2). (Packit, n.d/2010) PacketX: es un generador de paquetes que se pueden utilizar para simular diversos ataques, y ofrece una manera fácil de comprobar la robustez de las aplicaciones de seguridad diferentes, tales como firewalls y routers. Este generador de paquetes se puede utilizar para crear paquetes 'spoofed' (paquetes que se hacen a mano para incluir información de la 'fuente' falso) y ver si el firewall o router detecta este intento de ataque. Se ejecuta en Windows. (NT OBJECTives, Inc., n.d./2010) SendIP: es una herramienta de línea de comandos para permitir el envío de paquetes IP arbitraria. SendIP tiene un gran número de opciones de línea de comandos para especificar el contenido de cada cabecera de un NTP, BGP, RIP, RIPng, TCP, UDP, ICMP o IPv4 y de paquetes IPv6. Se ejecuta en Linux (GPL). ([email protected], 2003) TCP ivo: es una herramienta que proporciona reproducción de paquetes de alta velocidad desde un archivo de traza utilizando hardware de PC estándar, es un software de código abierto que está disponible en forma gratuita. Requiere varios parches para el kernel de Linux para un máximo rendimiento. Entre otras cosas, un parche para el kernel de baja latencia, un parche para el kernel pre-emptible, y un parche temporizador firma es necesaria para apoyar a las tasas de gigabit. Existe para Linux. (Feng, Goel, Bezzaz &Walpole, 2003) LIBNET: esta no es considerada una herramienta, pero es una API de alto nivel (caja de herramientas) permite al programador de aplicaciones construir e inyectar paquetes de red. Proporciona una interfaz simplificada para portátiles y permite darles forma a paquetes de red de bajo nivel, además de manipulación e inyección. La mayoría de las aplicaciones en Libnet utilizan la lista para la creación de paquetes y la funcionalidad subyacente de la inyección. Se ejecuta en Linux. (Libnet, n.d./2010)

Page 134: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

134

MGEN: El Multi-Generador (MGEN) es un software de código abierto desarrollado por el Laboratorio de Investigación Naval (NRL). MGEN proporciona la capacidad de realizar pruebas de rendimiento de la red IP y mediciones utilizando tráfico UDP / IP. MGEN actualmente se ejecuta en diferentes sistemas operativos basados en Unix (incluyendo Mac OS X) y las plataformas Win32. En este momento, dos versiones diferentes (MGEN 4.x y MGEN 3.x) de la MGEN están disponibles. Tenga en cuenta que estas dos versiones son diferentes, no interoperables. (Naval Research Laboratory, n.d./2010) 4. PRUEBAS Y RESULTADOS Después de haber explorado a cerca de los software existentes, y contar con una lista de diferentes generadores de tráfico cada uno con sus respectivas características, y saber acerca de su funcionamiento, se seleccionaron dos (2) software generadores de trafico multiplataforma, los cuales cumplían dentro del estudio, con los requisitos establecidos al inicio del proyecto, dentro de los cuales se destacan: Permitir la generación de varios tipos de tráfico, su fácil funcionamiento instalación. Dentro de la decisión que se tomó referente a qué software estudiar y probar para la captura de los tipos de tráfico necesarios para el proyecto se tuvo un primer software llamado Ostinato, este software fue elegido, ya que cuenta con una serie de características que se describen a continuación:

Permite trabajar con los protocolos más comunes, ARP, IPv4, IPv6, túneles (6over4, 4over6, 4over4, 6over6); TCP, UDP, ICMPv4, ICMPv6, IGMP, MLD, HTTP, SIP, RTSP, NNTP.

Trabaja perfectamente con S.O. Windows XP, Vista y 7. Tiene una GUI amigable y fácil de usar; al mismo tiempo la generación de

tráfico es fácil de configurar. Permite la creación de múltiples flujos de tráfico y la interacción de múltiples

protocolos a diferentes tiempos. Estas características llevaron a elegir a Ostinato (Ostinato, 2010), como uno de los software generadores de tráfico, con los cuales se harían una serie de pruebas; a continuación se describe el proceso de instalación en Windows: 4.1 Instalación de Ostinato en Windows

Primero descargamos el software de la página http://code.google.com/p/ostinato.

Del mismo sitio descargamos el complemento, llamado WinPcap 8. Luego descargamos el Wireshark, ya que es el software necesario para que

Ostinato entregue resultados de la captura de tráfico.

Page 135: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

135

9. Instalamos las tres aplicaciones para poder hacer efectivo el funcionamiento de Ostinato.

Al ejecutar Ostinato, es necesario agregar un dispositivo de red de bucle invertido llamado, ―Ms loopBack-driver‖. 4.2 Pruebas de captura de tráfico con Ostinato

Prueba de generación y captura de tráfico HTTP con Ostinato

1. Se selecciona un puerto, en este caso el de bucle invertido, el cual se instaló anteriormente.

Figura 1: Ventana Principal de Ostinato, Selección de puerto.

2. Se crea una nueva corriente, en el lado izquierdo de la pantalla principal.

Page 136: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

136

Figura 2: Ventana de creación de una nueva corriente.

Se edita la nueva corriente, dando clic en el símbolo de configuración ubicado al lado izquierdo de la misma.

Seleccionando los protocolos para la captura, en este caso en la casilla de

Frame length, se selecciona Incremento, en L1 se selecciona MAC, en L2 Ethernet II, en L3 IPV4 y en L5 Text, donde se genera tráfico relacionado con texto como HTTP, MLD, SIP.

Figura 3: Ventana de selección de protocolo de texto.

En la pestaña de los datos del protocolo, se indican las direcciones fuente y destino dando clic en IPv4.

Page 137: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

137

Figura 4: Ventana de configuración de dirección fuente y destino.

En la pestaña de protocolo de texto se elige el puerto, en este caso el

puerto 80-HTTP.

Luego se elige el número de paquetes a generar, en este caso se dio un número de 3000 paquetes, ya que se necesitaba un tráfico de aproximadamente 1 hora.

Por último se podrán ver los datos que se han configurado anteriormente.

Figura 5: Ventana de visualización de configuraciones HTTP

Page 138: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

138

Figura 6: Ventana de visualización de captura de tráfico HTTP con Wireshark Para cualquier tipo de tráfico que se desee generar, se siguen los pasos anteriores, a diferencia de que, al momento de elegir el protocolo, se elige el deseado y los paquetes igualmente varían de acuerdo al tiempo necesario de la captura. En el documento de trabajo de grado al cual hace referencia el presente artículo se dan unos adelantos de la instalación y el funcionamiento de otra herramienta denominada Harpoon. (Castaño, Ocampo & Orozco, 2011). 5. CONCLUSIONES Se exploró acerca de los tipos de tráfico existentes y los generadores de tráfico que actualmente se encuentran disponibles. Harpoon y Ostinato fueron dos de los generadores de tráfico que más se ajustaron a las características buscadas; Harpoon posee características de autoconfiguración y fue diseñado para generar grandes volúmenes de tráfico, y Ostinato ayuda con una interfaz amigable y permite crear diferentes tipos de tráfico a la vez, y genera reportes detallados de los eventos tiempo real. Este estudio sirve para todos los administradores de redes de datos a nivel mundial ya que hoy por hoy lo que se busca mediante internet es garantizar los servicios y la información que viaja por las redes en general, es por ello que es de utilidad entrar a revisar el diagnóstico que nos brindan estas herramientas a la hora de conocer el desempeño de la red y sus dispositivos. Facilitando así la detección de errores y posibles fallos en tiempo real.

Page 139: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

139

La generación del archivo .pcap a través del software analizador de protocolos Wireshark, permitió tener las características y los detalles de las pruebas de generación de tráfico, dados por Harpoon y Ostinato. Este tipo de archivo contiene la información de la captura de todo el tráfico inyectado con su respectivos frames.

BIBLIOGRAFÍA Castaño A. Ocampo L. Orozco M. (2011). Fundamentación teórica y exploración de generadores de tráfico multiplataforma. Colombia. Embyte. (2009). GSpoof. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://gspoof.sourceforge.net Feng, W. Goel, A. Bezzaz, A. Walpole, J. (2003). TCPivo: A High Performance Packet Replay Engine. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.thefengs.com/wuchang/work/tcpivo/ Fielding R., Gettys J., Mogul J., Frystyk H., Masinter L., Leach P. y Berners-Lee T. (1999). Hypertext Transfer Protocol -- HTTP/1.1. [IETF, RFC2616]. . Ghislain M. (2005). Packgen network packet generator. [Homepage]. Consultado el día 08 de Octubre de 2010, de la World Wide Web: http://packgen.rubyforge.org/files/README.html Herrera, P. (2003). Tecnologías y redes de transmisión de datos. México: LIMUSA S.A. Hping Security Tool. (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://gd.tuwien.ac.at/www.hping.org/index.html Iperf. Enterprise Application Development Iperf. (2003). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.noc.ucf.edu/Tools/Iperf/ ISIC. (Sin Fecha). [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://www.packetfactory.net/projects/ISIC Killerbee2002. (2006) PackETH - ethernet packet generator. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://packeth.sourceforge.net Laine, J. Saaristo, S. Prior, R. (2002). Rude & Crude. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://rude.sourceforge.net/

Page 140: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

140

Libnet. (Sin Fecha). [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://www.packetfactory.net/projects/libnet/ Medina J. (2004/2005). Protocolo SSH. [Homepage]. Consultado el día 17 de octubre de 2010, de la World Wide Web: http://sopa.dis.ulpgc.es/ii-aso/portal_aso/leclinux/seguridad/ssh/ssh.pdf Nathan, J. Stone, R. (2004). Nemesis. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://nemesis.sourceforge.net/ Naval Research Laboratory. (Sin Fecha). Multi-Generator (MGEN). [Homepage]. Consultado el día 08 de octubre de 2010 de la World Wide Web: http://cs.itd.nrl.navy.mil/work/mgen/index.php Nsauditor Network Security Auditor. (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.nsauditor.com/ NT OBJECTives, Inc. (Sin Fecha) PackIt. [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://www.ntobjectives.com/packetx.htm Ostinato (Sin Fecha). Paquete generador de tráfico y analizador. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://code.google.com/p/ostinato/ Packet Excalibur. (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.securitybugware.org/excalibur/ Packet Generator. (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de la World Wide Web: 2010, de http://www.clearsightnet.com/products-packetgenerator.jsp PackIt. (Sin Fecha). [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://www.packetfactory.net/projects/packit/, NT OBJECTives. PacketX. (Sin Fecha). [Homepage]. Consultado el día 08 de julio de 2010, de la World Wide Web: http://www.ntobjectives.com/packetx.htm Pescapé A. Emma D. Avallone S. Botta A. Ventre G. (2004). D-TG, Distributed Internet. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.grid.unina.it/software/ITG/sdescr.php [email protected]. (Sin Fecha). Scapy. [Homepage.] Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.secdev.org/projects/scapy

Page 141: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

141

Postel J. (1994). Estructura y Delegación del Sistema de Nombres de Dominio. [Homepage]. IETF, RFC1591] Consultado el día 06 de octubre de 2010, de la World Wide Web: http://www.ietf.org/rfc/rfc1591.txt Postel J. & Reynolds J. (1985). File Transfer Protocol (FTP). [Homepage] [IETF, RFC959]. Consultado el día 05 de octubre de 2010, de la World Wide Web: http://es.wikipedia.org/wiki/File_Transfer_Protocol Postel J. (1981). Internet Control Message Protocol. [Homepage]. [IETF RFC792]. Consultado el día 06 de octubre de 2010, de la World Wide Web: http://www.rfc-editor.org/rfc/rfc792.txt Postel J. (1982). Simple Mail Transfer Protocol. [Homepage]. Consultado el día 06 de octubre de 2010, de la World Wide Web: http://www.telefoniavozip.com/voip/que-es-la-telefonia-ip.htm Postel J. & Reynolds J. (1983). Telnet Protocol Specification. [IETF RFC854]. [Homepage]. Consultado el día 07 de octubre de 2010, de la World Wide Web: http://www.ietf.org/rfc/rfc854.txt Postel J. (1980). User Datagram Protocol. [IETF RFC768]. [Homepage]. Consultado el día 07 de octubre de 2010, de la World Wide Web: http://www.ietf.org/rfc/rfc768.txt [email protected]. (2003) Send IP. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.earth.li/projectpurple/progs/sendip.html ¿Qué es VoIP? ¿Qué es la Telefonía IP? (Sin Fecha). [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://www.telefoniavozip.com/voip/que-es-la-telefonia-ip.htm Riesterer,.L. (2000). Gasp. [Homepage]. Consultado el día 08 de octubre de 2010, de la World Wide Web: http://laurent.riesterer.free.fr/gasp/ Salavert, C. (2003). Los protocolos en las redes de ordenadores. Barcelona: UPC. Sommers, J. (2005). Harpoon: A Flow-level Traffic Generator. [Homepage]. Consultado el día 24 de mayo de 2011, de la World Wide Web: http://cs.colgate.edu/faculty/jsommers/harpoon Sanfilippo, Salvatore. (2006). What is Hping. [Homepage]. Consultado el día 08 de octubre de 2010 de la World Wide Web: http://wiki.hping.org/

Page 142: FUNDAMENTACIÓN TEÓRICA Y EXPLORACIÓN DE …

142

[email protected]. (Sin Fecha). Network Packet/Traffic Generator Tool LIBNET. [Homepage]. Consultado el día 21 de julio de 2010, de la World Wide Web: http://protocoltesting.com/trgen.html Ethereal. (2007) The world's most popular network protocol analyzer. [Homepage]. Consultado el día 08 de octubre de 2011, de la World Wide Web: http://www.ethereal.com/ Wireshark. (Sin Fecha) About Wireshark. [Homepage]. Consultado el día 16 de mayo de 2011, de la World Wide Web: http://www.wireshark.org/about.html Yumo. (Sin Fecha). What's ―TfGen‖. [Homepage]. Consultado el día 08 de octubre de 2010 de la World Wide Web: http://www.st.rim.or.jp/~yumo/pub/tfgen.html