ANLISIS DE TRFICO DE DATOS EN SISTEMAS DISTRIBUIDOS
TESIS PARA OBTENER EL GRADO DE MAESTRO EN SISTEMAS COMPUTACIONALES
PRESENTA: ANTONIO MEZA ARELLANO
DIRECTOR DE TESIS: MC. JESS ANTONIO CASTRO
LA PAZ, BAJA CALIFORNIA SUR, MXICO, 18 JUNIO DE 2012
Resumen. La implementacin de la computacin paralela en sistemas distribuidos basados en clsteres, tiene como objetivo ejecutar de una manera rpida los procesos de informacin masiva, para lo cual es necesario el intercambio de datos en tiempo real, as como satisfacer los requerimientos de los usuarios. El presente trabajo aborda el anlisis de trfico en un clster, utilizando algoritmos genticos y optimizacin por enjambre de partculas. Para tal efecto, se efectuaron experimentos en un clster compuesto por 16 computadoras, usando la librera PVM y el analizador de protocolos Wireshark. El anlisis de trfico en redes es importante debido a que permite diagnosticar el funcionamiento de las mismas y cuantificar el volumen de datos que requieren transferir las aplicaciones que se ejecutan en estos ambientes distribuidos.
Abstract. The objective of parallel computing implementation is to speedup massive data processing execution. In order to achieve a good speedup, it becomes necessary to exchange data in real time, and also satisfy the user requirements. The present work deals with data traffic analysis on clusters, using genetic algorithms and particle swarm optimization. Experiments on a 16 computers cluster where carried out using PVM library and Wireshark protocol analyzer. Data traffic analysis is of high importance since it allows to diagnose the networks performance and to quantify the data volume required by different applications implemented over those networks.
i
INDICE 1. Introduccin. __________________________________________________ 1 1.2. Objetivo general. ______________________________________________ 2 1.3. Objetivos especficos. _________________________________________ 2 2. Procesamiento paralelo. _________________________________________ 3 2.1. Clasificacin de los sistemas paralelos. ___________________________ 3 2.1.1. Paralelismo implcito. ____________________________________________________________ 3 2.1.2. Paralelismo explicito. ____________________________________________________________ 5 2.2. Taxonoma de Flynn. __________________________________________ 6 2.3. Sistemas de Memoria Distribuida. ________________________________ 7 2.4. Sistemas de Memoria Compartida. _______________________________ 7 2.5. Sistemas de Memoria Compartida Distribuida. _____________________ 8 2.6. Sistemas Distribuidos. _________________________________________ 8 2.6.1. Caractersticas clave de los sistemas distribuidos. _____________________________________ 9 3. Bibliotecas de computacin paralela. _____________________________ 12 3.1. PVM (Parallel Virtual Machine; Mquina Virtual Paralela). ___________ 12 3.1.1. Caractersticas de PVM. _________________________________________________________ 13 3.1.2. Arquitectura PVM. _____________________________________________________________ 13 3.1.3. Funciones bsicas. ______________________________________________________________ 14 3.1.4. Demonio PVM. ________________________________________________________________ 21 4. Redes de computadoras. ________________________________________ 22 4.1. Clster. _____________________________________________________ 22 4.1.1. Componentes de un clster. ______________________________________________________ 23 4.1.2. TCP/IP (Transmission Control Protocol/ Internet protocol; Protocolo de Control de Transmisin/Protocolo de Internet) _____________________________________________________ 25 4.1.3. UDP (User Datagram Protocol ;Protocolo de Datagrama de Usuario) _____________________ 26 4.1.4. ARP (Address Resolution Protocol ; Protocolo de Resolucin de Direcciones ) ______________ 27 4.2. Sockets. ____________________________________________________ 27 5. Analizador de protocolos Wireshark. ______________________________ 29
ii
5.1. Analizador de protocolos. _____________________________________ 29 5.2. Wireshark. __________________________________________________ 29 5.2.1. Caractersticas. ________________________________________________________________ 29 5.3. GUI (Graphical User Interface; Interfaz Grfica del Usuario) _________ 31 6. Computacin Evolutiva. ________________________________________ 40 6.1. Caractersticas de los Algoritmos Paralelos. ______________________ 41 6.2 Algoritmos utilizados en las pruebas. ____________________________ 42 6.2.1. Algoritmos Genticos. ___________________________________________________________ 42 6.2.2. Optimizacin por Enjambres de Partculas. __________________________________________ 44 7. Desarrollo. ___________________________________________________ 47 7.1. Adaptacin de PVM. __________________________________________ 48 7.2. Procedimiento para utilizar PVM en un clster. ____________________ 48 7.3. Software para el anlisis de trfico de datos. _____________________ 48 7.4. Algoritmos de prueba. ________________________________________ 48 7.5. Implementacin de los algoritmos. ______________________________ 49 7.6. Captura de paquetes de datos. _________________________________ 49 7.7. Conversaciones. ____________________________________________ 49 8. Resultados. ___________________________________________________ 50 8.1. Algoritmo Gentico Distribuido con migracin controlada por el proceso maestro (ag dm) ________________________________________________ 50 8.2. Algoritmo Gentico Distribuido con Migracin en anillo (ag dm-4.0) _ 53 8.3. Optimizacin por enjambre de partculas mediante vecindarios ______ 57 9. Conclusiones y recomendaciones. _______________________________ 61 10. Fuentes bibliogrficas. ________________________________________ 63 11. Anexos. _____________________________________________________ 65 11.1. Anexo 1. ___________________________________________________ 65
1. Introduccin. La necesidad de procesar de una manera rpida grandes cantidades de informacin y el intercambio de datos en tiempo real, entre otros, han impulsado el desarrollo de la computacin paralela. La computacin paralela utiliza simultneamente elementos de procesamiento mltiple dividiendo el problema en partes independientes, de manera que cada elemento de procesamiento ejecute paralelamente su parte. Entre los diferentes elementos de procesamiento se pueden incluir recursos tales como: una computadora con mltiples procesadores, red distribuida y hardware especializado. En el presente trabajo se analiza el trfico de datos en una red distribuida y se compara la eficiencia de tres algoritmos relacionados con la transmisin de paquetes y el tiempo de transmisin (Gentico Distribuido con Migracin Controlada por el Proceso Maestro, Gentico Distribuido con Migracin en Anillo y Optimizacin por Enjambre de Partculas Mediante Vecindarios)
2
1.2. Objetivo general. Analizar el trfico de datos en un sistema distribuido por medio de un analizador de protocolos, para as elaborar un reporte de la transmisin de paquetes que se generan en los algoritmos.
1.3. Objetivos especficos. Analizar el flujo de datos producido en la red mediante un muestreo, ejecutando varios algoritmos. Informar si se produce prdida de datos en la comunicacin y sincronizacin de la red. Elaborar un reporte detallado con la informacin que el anlisis del trfico de los datos obtenidos.
3
2. Procesamiento paralelo. El procesamiento paralelo se define como el conjunto de procesos que pueden comunicar y compartir elementos para resolver rpidamente problemas con alta complejidad computacional [1]. A diferencia de la computacin lineal, en lugar de procesar las instrucciones en forma secuencial, la computacin paralela puede ejecutar instrucciones de manera concurrente. Unas de las principales caractersticas del procesamiento en paralelo es reducir el tiempo de ejecucin que sea ms eficiente, por lo anterior es utilizado para implementar aplicaciones paralelas que hagan buen uso de los procesadores, identificando los fragmentos de programa que pueden paralelizarse.
2.1. Clasificacin de los sistemas paralelos. Estos sistemas puedes dividirse en dos tipos: Paralelismo implcito o de bajo nivel. Paralelismo explcito o de alto nivel
2.1.1. Paralelismo implcito. Las tcnicas para el paralelismo de bajo nivel estn enfocadas a reforzar el nivel de concurrencia en el CPU. Esto da una apariencia de un sistema con un procesador (Figura 2.1.) Algunos ejemplos de estas tcnicas son: Segmentacin: La ejecucin de cada una de las instrucciones es dividida en etapas, por lo cual cada instruccin puede ejecutarse paralelamente en una etapa distinta. Procesador con unidades funcionales mltiples: La existencia de varias unidades aritmtico-lgicas permite que las instrucciones se ejecuten paralelamente.
4
Procesadores auxiliares: Son procesadores enfocados a un propsito, que se conectan a un servidor para acelerar las tareas en ejecucin.
Figura 2.1. Clasificacin del procesamiento implcito.
5
2.1.2. Paralelismo explicito. Existe paralelismo explicito cuando varios procesadores cooperan en la ejecucin de las aplicaciones. Estos ofrecen una infraestructura explicita para desarrollar sistemas y aprovechar al mximo el paralelismo, como se muestra en la Figura_2.2. Figura 2.2. Clasificacin del paralelismo explcito.
MISD MIMD SIMD SMP CLUSTER PARALELISMO EXPLICITO
6
2.2. Taxonoma de Flynn. La forma ms comn de clasificar los sistemas de procesadores paralelos es la Taxonoma de Flynn, cuyo modelo se basa en el nmero de instrucciones y la secuencia de los datos que son utilizados por la computadora para procesar informacin [1]. En la taxonoma de Flynn se distinguen cuatro modelos:
SISD (Single Instruction, Single Data; Una Instruccin, Un Dato) Este es un modelo tradicional de computacin secuencial donde un procesador ejecuta un slo flujo de instrucciones, para operar sobre datos almacenados en una nica memoria. En este caso se tiene la computadora secuencial convencional, segn el modelo de Von Neumann.
MISD (Multiple Instruction, Single Data; Mltiples Instrucciones, Un Dato) Es un tipo de arquitectura de computacin paralela donde muchas unidades funcionales realizan diferentes operaciones en los mismos datos.En este modelo, las secuencias de instrucciones pasan a travs de mltiples procesadores. Varias operaciones se realizan en diversos procesadores. Varios procesadores, cada uno con su propia unidad de control, comparten una memoria comn.
SIMD (Single Instruction, Multiple Data; Una Instruccin, Mltiples Datos) Este modelo tiene solo una unidad de control que enva las instrucciones a diferentes unidades de procesamiento. Todos los procesadores reciben una misma instruccin de la unidad de control, pero operan sobre diferentes grupos de datos. Este modelo utiliza memoria distribuida.
7
MIMD (Mltiple InstructionMultipleData ; Mltiples Instrucciones, Mltiples Datos) Es un tipo de arquitectura donde cada procesador ejecuta un programa diferente, independientemente de los procesadores.
Esta arquitectura se clasifica en: Sistemas de Memoria Compartida. Sistemas de Memoria Distribuida. Sistemas de Memoria Compartida Distribuida. Mltiples procesadores comparten un mismo sistema operativo y memoria. Las computadoras MIMD con memoria compartida tambin son llamadas sistemas de multiprocesamiento simtrico (SMP)
2.3. Sistemas de Memoria Distribuida. En estos sistemas, los procesadores tienen memoria local y slo pueden compartir informacin enviando mensajes. A esta forma de comunicacin se le conoce como: paso de mensajes. Mltiples procesadores trabajan en diferentes partes de un programa, usando su propio sistema operativo y memoria.
2.4. Sistemas de Memoria Compartida. En este tipo de sistemas existe un espacio de direccionamiento compartido. Cada procesador tiene acceso a toda la memoria. Los accesos a la memoria son similares, ya que los procesadores se encuentran comunicados con la memoria principal. Los elementos y operaciones que componen un programa paralelo en estos sistemas son:
8
Procesos ligeros. el espacio de memoria local es escaso y ejecutan las mismas operaciones de creacin y destruccin. Sincronizacin. Se dispone de semforos y regiones crticas que seleccionan el nmero de procesos que pueden acceder concurrentemente a una zona compartida. Segmentos de memoria compartida. Permiten el intercambio de datos entre los procesos.
2.5. Sistemas de Memoria Compartida Distribuida. Es un grupo de computadoras que tiene acceso a una memoria compartida comn, pero sin un canal compartido. El acceso a la memoria de otra computadora del grupo se realiza a travs del Acceso No Uniforme a Memoria (NUMA, Non-Uniform Memory Access). El acceso es ms rpido a la memoria local de un procesador que a la memoria remota de otro procesador.
2.6. Sistemas Distribuidos. Un sistema distribuido es una coleccin de computadoras autnomas conectadas por una red, y con un software distribuido para que el sistema sea visto por los usuarios como una nica entidad capaz de proporcionar facilidades de computacin. Los sistemas distribuidos se implementan en diversas plataformas hardware, desde unas pocas estaciones de trabajo conectadas por una red de rea local, hasta Internet, una coleccin de redes de rea local y de rea extensa interconectados, que en lazan millones de computadoras.
9
2.6.1. Caractersticas clave de los sistemas distribuidos. Las caractersticas principales responsables de la utilidad de los sistemas distribuidos son: Comparticin de recursos. Apertura (openness) Concurrencia. Escalabilidad. Tolerancia a fallos. Transparencia.
Comparticin de Recursos. La comparticin de recursos abarca desde componentes hardware hasta elementos software. Los sistemas multiusuario proveen comparticin de recursos entre sus usuarios. Sin embargo, los recursos de una computadora multiusuario se comparten entre todos sus usuarios. Los recursos estn encapsulados en una de las computadoras y slo pueden acceder por otras computadoras mediante la red. Para que la comparticin de recursos sea efectiva, debe ser manejada por un programa que ofrezca un interfaz de comunicacin permitiendo que el recurso sea accedido, manipulado y actualizado de una manera fiable y consistente.
Apertura (opennesss) Un sistema informtico es abierto si puede ser extendido de diversas maneras. Adems puede ser abierto o cerrado con respecto a extensiones hardware o con respecto a las extensiones software La apertura se determina por que nuevos servicios de comparticin de recursos se pueden aadir sin perjudicar ni duplicar a los ya existentes.
10
Concurrencia. Esta caracterstica permite que los recursos disponibles en la red puedan ser utilizados simultneamente por los usuarios y agentes que interactan en la red.
Escalabilidad. El sistema es escalable si conserva su efectividad al ocurrir un incremento considerable en el nmero de recursos y en el nmero de usuarios.
Tolerancia a Fallos. Es la posibilidad que tiene el sistema para seguir funcionando ante fallos de algn componente en forma independiente, pero para esto se tiene que tener alguna alternativa de solucin. Tcnicas para tratar fallos: Deteccin de fallos. Algunos fallos son detectables, con comprobaciones por ejemplo. Enmascaramiento de fallos. Algunos fallos detectados pueden ocultarse o atenuarse. Tolerancia de fallos. Recuperacin frente a fallos. Tras un fallo se deber tener la capacidad de volver a un estado anterior. Redundancia. Se puede usar para tolerar ciertos fallos (DNS, BD, etc.)
11
Transparencia. Es la ocultacin al usuario y al programador de aplicaciones de la separacin de los componentes de un sistema distribuido
1. De acceso. Se accede a recursos locales y remotos de forma idntica. 2. De ubicacin. Permite acceder a los recursos sin conocer su ubicacin. 3. De concurrencia. Usar un recurso compartido sin interferencia. 4. De replicacin. Permite utilizar varios ejemplares de cada recurso. 5. Transparencia de fallos. Permite ocultar los fallos. 6. De movilidad. Permite la reubicacin de recursos y clientes sin afectar al sistema. 7. De prestaciones. Permite reconfigurar el sistema para mejorar las prestaciones segn su carga. 8. Al escalado. Permite al sistema y a las aplicaciones expandirse en tamao sin cambiar la estructura del sistema o los algoritmos de aplicacin.
12
3. Bibliotecas de computacin paralela.
3.1. PVM (Parallel Virtual Machine; Mquina Virtual Paralela). Es una biblioteca para el cmputo paralelo en un sistema distribuido de computadoras y uno de los entornos de ejecucin paralela ms aceptado, que permite la utilizacin de una red de computadoras heterogneo como un nico recurso computacional llamado mquina virtual. Est diseado para vincular los recursos de computacin y proporcionar a los usuarios una plataforma paralela para la gestin de sus aplicaciones informticas, independientemente de la cantidad de equipos diferentes que se usen y dnde se ubiquen [2]. Permite la programacin de aplicaciones paralelas basadas en el paso de mensajes entre procesos, proporcionando portabilidad e interoperabilidad entre plataformas heterogneas, siendo estas algunas de las caractersticas ms importantes de PVM que lo diferencia de otros entornos paralelos. Adems, la aplicacin PVM puede ser ejecutada en cualquiera de las plataformas soportadas, tales como Unix y Windows NT y varios procesos de una misma aplicacin se pueden ejecutar, al mismo tiempo, en plataformas diferentes. Se pueden utilizar en un mismo clster diferentes implementaciones de PVM ofrecidas por diferentes fabricantes, pues la compatibilidad y comunicacin entre ellas est garantizada por la propia especificacin de PVM. Su gran flexibilidad permite al programador cambiar dinmicamente la mquina virtual, la ejecucin dinmica de procesos y la utilizacin de grupos de procesos. Tambin cuenta con soporte de tolerancia a fallos y permite establecer un equilibrio de carga entre las computadoras involucradas.
13
3.1.1. Caractersticas de PVM. Heterogeneidad. Escalabilidad. Mltiple representacin de datos. Tolerancia ante fallos. 3.1.2. Arquitectura PVM. El sistema se compone de: Demonios pvmd. En cada computador debe ejecutarse un demonio pvmd. Libreras. Esta biblioteca contiene rutinas de usuario, exigibles para el paso de mensajes, la coordinacin de tareas y la modificacin de la mquina virtual. Control de procesos. Permite, de forma dinmica, la gestin general, creacin, monitorizacin y destruccin de los procesos. Mensajes. Un mensaje es el objeto central de cualquier tipo de comunicacin que se establece entre dos partes: el emisor y el receptor. Control de mensajes. El control de mensajes es requerido para tareas regulares. Cuando una tarea enva un mensaje, hace cola para ser recibido por el programa.
14
En la Tabla3.1 se muestran algunas instrucciones utilizadas para el control de mensajes.
Instruccin Significado TC_CONREQ Solicitud de conexin TC_CONACK Reconocimiento de conexin TC_TASKEXIT La tarea termino TC_NOOP haciendo nada TC_OUTPUT Demanda de salida de datos TC_SETTMASK Cambio de tareas enmascaradas
Tabla 3.1.Funciones para control de mensajes.
3.1.3. Funciones bsicas. En la Tabla 3.2 se muestran algunas funciones bsicas de PVM. FUNCIONES SIGNIFICADO pvm_mytid() Cuando se llama por primera vez incorpora al proceso al entorno PVM y le devuelve su identificador. Posteriores llamadas devuelve el identificador del proceso en PVM pvm_exit() Informa a PVM que el proceso abandona el entorno. El pvmd local desalojar al proceso de su lista de procesos y reutilizar su identificador. pvm_spawn() Arranca un nmero de tareas pvm_kill() Destruye determinada tarea pvm_catchout() Esta rutina causa que el proceso llamador capte estas salidas de las tareas sean que lanzadas a partir de ese momento
Tabla 3.2. Funciones bsicas de PVM.
15
Elementos constitutivos. PVM dispone de una variedad de elementos para la comunicacin entre procesos que permiten la comunicacin punto a punto como el multipunto.
La transmisin de un mensaje se realiza en tres etapas: Inicializacin del buffer. Empaquetado de los datos. Envo de los datos.
La recepcin se divide en dos etapas: Recepcin de los datos. Desempaquetado de los datos.
Los elementos involucrados en un proceso de comunicacin PVM son los siguientes: Tareas. Buffers. Etiquetas.
16
Envo de datos. Los demonios PVM y las tareas pueden construir y enviar mensajes que contienen tipos de datos de longitudes arbitrarias. El envo no espera un reconocimiento del receptor y contina mientras el buffer est libre [2]. Esta etapa se divide en tres subetapas:
1) Inicializacin del buffer. Los buffers almacenan la informacin que se va a enviar en el mensaje a travs de la funcin: pvm_finitsend ()
2) Empaquetado de datos. El empaquetado de datos comienza tras la inicializacin del buffer de transmisin. Los datos a enviar son empaquetados uno a uno especificando: su tipo, nmero de elementos y la distancia entre elementos.
3) Envo del mensaje generado. Una vez empaquetados los datos pertinentes, el mensaje puede ser enviado al destino que se especifique. Adems de asignarle una etiqueta, ste es el momento para un mejor procesamiento en su recepcin. En la Tabla 3.3 se muestran las funciones para el envo de mensajes: FUNCIONES SIGNIFICADO Pvmfsend() Permite la comunicacin punto a punto Pvmfmcast() Permite la comunicacin la comunicacin multipunto.
Tabla 3.3.Funciones para el envo de mensajes.
17
Recepcin del mensaje. La recepcin de un mensaje puede ser sncrona cuando el proceso que ejecuta la orden de recepcin queda suspendido hasta que el mensaje llega, o asncrono si el proceso que realiza la recepcin de datos no requiere de los datos para continuar la ejecucin. En la Tabla 3.4. Se muestran las funciones para la recepcin de mensajes.
FUNCIONES SIGNIFICADO pvm_recv() Recepcin sncrona del mensaje. pvmfnrecv () Retorna el mensaje recibido. pvm_probe () Pregunta por la recepcin de un mensaje.
Tabla 3.4.Funciones para la recepcin de mensajes.
Desempaquetado. Consiste en la recuperacin de la informacin contenida en el mensaje que ha sido recibido en el buffer de recepcin por defecto. En la Tabla 3.5 se muestran las funciones para el desempaquetado de mensajes. FUNCIONES SIGNIFICADO pvm_upk[byte...] Permite recuperar los datos empaquetados en el bfer de recepcin. pvm_unpackf() Permite recuperar los datos empaquetados en el bfer de recepcin.
Tabla3.5. Funciones para el desempaquetado de mensajes.
18
Mensajes en libpvm. Estos mensajes proveen funciones para paquetes de tipos de datos primitivos dentro de un mensaje. Adems, crea, formatea y maneja el envo de mensajes.
Manejo de grupos. A medida que crece el grado de paralelismo, nos encontramos ante la posibilidad de ejecutar cada tarea paralela de nuestro programa mediante varios procesos paralelos para cada una. Podramos resumir esta estructura mediante varios grupos de procesos que realizan una funcin similar dentro de cada grupo.
Creacin y agrupacin de procesos. Un grupo es un conjunto de procesos que realizan tareas similares entre s, con necesidades de comunicacin internas a ese grupo. En PVM, un grupo tiene 2 funciones: una es la coleccin de procesos que disponen de un segundo identificador propio del grupo, otra es una parte de un proceso demonio especial gestor del grupo de procesos, identificado con una cadena que se corresponde con el nombre del grupo. Este proceso demonio de grupo gestiona todas las relaciones especiales entre los procesos del grupo. Un grupo se crea con la primera llamada a la rutina de conexin. La creacin de un grupo considera la activacin de un proceso gestor del grupo creado. El proceso gestor de grupo se encarga de administrar la comunicacin, sincronizacin y servicio de informacin del grupo. El proceso final que pertenece al grupo lo abandona y el proceso de gestin general de grupos contina ejecutndose hasta que se elimina con el comando reset o halt.
19
En la Tabla3.6 se muestran las funciones para la conexin y abandono de grupo.
FUNCIONES SIGNIFICADO pvm_joingroup ( ) Unin al grupo. La primera llamada crea un grupo y las sucesivas llamadas (de otras tareas) se van adhiriendo al grupo mencionado pvm_flvgroup ( ) Abandono de un grupo, El identificador se libera, con lo que puede ser utilizado por cualquier nuevo proceso que se aada al grupo.
Tabla 3.6.Funciones para la conexin y abandono de grupo.
Identificacin de tareas. PVM usa un identificador (TID) para direcciones de pvmds, tareas, y grupos de tareas dentro de una mquina virtual [2]. Las tareas estn identificadas por nmeros enteros en PVM. Estos nmeros los proporciona pvmd (el demonio de inicializacin del PVM). Este identificador no tiene significado alguno, pues PVM codifica esta informacin para uso interno.
20
Arquitectura de clases. PVM asigna un nombre de arquitectura para cada tipo de maquina en la cual se est ejecutando, para distinguir entre las maquinas involucradas en el proceso con los diferentes ejecutables. Muchos nombres estndar son definidos y otros pueden ser agregados. A veces las maquinas con incompatibilidad de ejecucin usan el mismo dato binario [2].
Demonio PVM y librera de programacin. Un demonio PVM (pvmd) se ejecuta en cada terminal de la mquina virtual y sirve como un enrutador y controlador de mensajes. Esto provee un punto de contacto, autentificacin, control de proceso y deteccin de errores. Un pvmd detenido ocasionalmente verifica que estos pares estn ejecutndose. Aun si la aplicacin falla, pvmd continua ejecutndose para la ayuda en la depuracin. El primer pvmd es designado el maestro, mientras que los otros son llamados esclavos. Durante la operacin normal son considerados iguales, pero slo los maestros pueden comenzar nuevos esclavos y agregarles la configuracin. La librera de programacin lilpvm contiene funciones que comunican a los pvmd y otras tareas. Esta librera contiene funciones para empaquetamiento y desempaquetamiento de mensajes, adems de funciones para mejorar PVM syscalls para la funcin de mensaje que enva el requerimiento de servicio para el pvmd.
21
3.1.4. Demonio PVM. Inicio. Los demonios de PVM se configuran ellos mismos como maestro o esclavo. Crean y ligan un socket para comunicarse con otras tareas y otros pvmds. Abre un archivo de error /tmp/pvml.iud.
Apagar. Un demonio es apagado cuando se elimina de la mquina virtual o pierde contacto con el maestro.
Tabla de estaciones y configuracin de maquinas. La Tabla de estaciones describe la configuracin de una mquina virtual, lista los nombres, direcciones y estados de comunicacin para cada estacin.
Tareas. Cada pvmd contiene una lista de tareas que estn bajo su administracin.
Contexto de Espera. Cada pvmd usa un contexto de espera para mantener un estado cuando un proceso debe ser interrumpido.
Deteccin y recuperacin de errores. La deteccin de errores se origina en el protocolo pvmd. El pvmd puede recuperar algo perdido de algn demonio externo, excepto del maestro. Si un esclavo pierde al maestro, entonces el esclavo se da de baja a s mismo.
22
4. Redes de computadoras. Una red de computadoras es un conjunto de computadoras que se encuentran interconectadas mediante algn medio de transmisin y que son autnomas [4]. 4.1. Clster. Un clster es un conjunto de computadoras interconectadas que se comportan como si fuesen una sola computadora. El cmputo con clsteres es el resultado de varias tendencias actuales que incluyen la disponibilidad de microprocesadores econmicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cmputo distribuido de alto rendimiento, as como la creciente necesidad de potencia computacional para aplicaciones que lo necesiten [1,10]. Las aplicaciones paralelas escalables requieren: Buen rendimiento Baja latencia Comunicaciones que dispongan de gran ancho de banda Redes escalables. Acceso rpido a archivos. Un clster puede satisfacer estos requisitos usando los recursos que tiene asociados a l y ofrece, a un bajo costo, las siguientes ventajas: Alto rendimiento Alta disponibilidad Alta eficiencia Escalabilidad
23
4.1.1. Componentes de un clster. Un clster necesita de varios componentes de software y hardware, como: Nodos. Puntos de interseccin o unin de varios elementos que confluyen en el mismo lugar. Almacenamiento. Sistemas operativos. Programas o conjuntos de programas de computadora destinados a permitir una gestin eficaz de sus recursos. Conexiones de red. Middleware. Software que generalmente acta entre el sistema operativo y las aplicaciones. Protocolos de comunicacin y servicios. Aplicaciones. Ambientes de programacin paralela. Permiten implementar algoritmos que hagan uso de recursos compartidos.
ETHERNET. Es un estndar de redes de computadoras de rea local con acceso al medio por contienda CSMA/CD (Acceso Mltiple por Deteccin de Portadora con Deteccin de Colisiones), usado en redes Ethernet para mejorar sus prestaciones [2]. Ethernet define las caractersticas de cableado y sealizacin de nivel fsico y los formatos de tramas de datos del nivel de enlace de datos del modelo de referencia de Interconexin de Sistemas Abiertos (OSI). Los elementos comnmente usados de una red Ethernet son: tarjeta de red, repetidora, concentradora, puentes, los conmutadores, los nodos de red y el medio de interconexin.
24
NIC (Network Interface Card; Tarjeta de Interfaz de Red) Posibilita la comunicacin entre aparatos conectados entre s y tambin permite compartir recursos entre dos o ms computadoras. Hay diversos tipos de adaptadores en funcin al tipo de cableado o arquitectura que se utilice en la red y uno de los ms utilizados es del tipo Ethernet que utiliza una interfaz o conector RJ-45. Cada tarjeta de red tiene un nmero de identificacin nico de 48 bits en hexadecimal, llamado direccin MAC. Estas direcciones hardware nicas son administradas por el IEEE ( Institute of Electronic and ElectricalEngineers ; Instituto de Ingenieros Electrnicos y Elctricos ). Los tres primeros octetos del nmero MAC son conocidos como OUI ( Organizationally Unique Identifier ; Identificador nico de Organizacin) e identifican a proveedores especficos y son designados por la IEEE.
Determinacin de la velocidad de transmisin en una red. Los siguientes factores determinan la velocidad de transmisin de una red. o El cable utilizado para la conexin. o Las tarjetas de red. o El tamao del bus de datos de las mquinas. o La cantidad de retransmisiones que se pueden realizar.
25
4.1.2. TCP/IP (Transmission Control Protocol/ Internet protocol; Protocolo de Control de Transmisin/Protocolo de Internet) TCP/IP representa todas las reglas de comunicacin para Internet y se basa en la nocin de direccin IP, con la idea de dar una direccin IP a cada equipo de la red para poder enrutar paquetes de datos. Debido a que el conjunto de protocolos TCP/IP originalmente se cre con fines militares, est diseado para cumplir con una cierta cantidad de criterios, entre ellos: Dividir mensajes en paquetes. Usar un sistema de direcciones. Enrutar datos por la red. Detectar errores en las transmisiones de datos. TCP (Transmisin Control Protocol; Protocolo de Control de Transmisin) Es uno de los principales protocolos de la capa de transporte del modelo TCP/IP. En el nivel de aplicacin, posibilita la administracin de datos que vienen del nivel ms bajo del modelo o van hacia l. Cuando se proporcionan los datos al protocolo IP, los agrupa en datagramas IP, fijando el campo del protocolo en 6. TCP es un protocolo orientado a conexin, permite que dos mquinas que estn comunicadas controlen el estado de la transmisin. Es uno de los protocolos fundamentales en Internet y fue creado entre los aos 1973 y 1974 por Vint Cerf y Robert Kahn. Muchos programas en una red de datos compuesta por computadoras pueden utilizar TCP para crear conexiones entre ellos a travs de las cuales puede enviarse un flujo de datos. El protocolo garantiza que los datos sern entregados en su destino sin errores y en el mismo orden en que se transmitieron.
26
El protocolo TCP permite: Colocar los datagramas nuevamente en orden cuando vienen del protocolo IP. El monitoreo del flujo de los datos y as evitar la saturacin de la red. Que los datos se formen en segmentos de longitud variada para enviarlos al protocolo IP. Multiplexar los datos. Comenzar y finalizar la comunicacin fcilmente. 4.1.3. UDP (User Datagram Protocol ;Protocolo de Datagrama de Usuario) Es un protocolo del nivel de transporte basado en el intercambio de datagramas. Permite el envo de datagramas a travs de la red sin que se establezca previamente una conexin, ya que el propio datagrama incorpora suficiente informacin de direccionamiento en su cabecera. No tiene confirmacin ni control de flujo, por lo que los paquetes pueden adelantarse unos a otros.
Funcionamiento de UDP. 1. El cliente enva un datagrama UDP vaco al servidor. 2. El servidor recibe el datagrama UDP vaco, a partir del cual obtiene la direccin IP y el puerto UDP del cliente que solicita la informacin. 3. El servidor realiza una consulta y recibe una respuesta en forma de cadena de texto, con el formato especificado con anterioridad. 4. El servidor crea un datagrama UDP con la informacin obtenida en el punto 2. Este datagrama tiene como nico dato la cadena de texto a devolver. 5. El datagrama UDP llega al cliente, el cual puede leerlo y extraer la informacin del da y hora del servidor.
27
IP (Internet Protocol; Protocolo de Internet) Es un protocolo no orientado a conexin, usado tanto por el origen como por el destino para la comunicacin de datos, a travs de una red de paquetes conmutados no fiable y de mejor entrega posible sin garantas. Es parte de la capa de Internet del conjunto de protocolos TCP/IP. Es uno de los protocolos de Internet ms importantes, ya que permite el desarrollo y transporte de paquetes de datos de IP. 4.1.4. ARP (Address Resolution Protocol ; Protocolo de Resolucin de Direcciones ) Convierte las direcciones IP en direcciones de la red fsica. El mtodo utilizado para la obtencin de la IP es mediante peticiones de ARP, se enva un paquete (ARP request) a la direccin de difusin de la red que contiene la direccin IP por la que se pregunta, y se espera a que esa mquina envi una respuesta (ARP reply) con la direccin Ethernet que le corresponde. ARP permite a la direccin de Internet ser independiente de la direccin Ethernet [13]. 4.2. Sockets. Un socket es un punto de comunicacin por el cual un proceso puede emitir o recibir informacin. Es un puerto de informacin formando un conducto a travs de la pila TCP/IP. Tan pronto un paquete entregado a una direccin IP en particular, esta pasa de arriba a travs de la pila para cerciorarse de que este direccionado al host que lo recibi. Despus este se transmite hasta el TCP o el UDP, posteriormente al puerto apropiado de modo que el uso en la capa de uso pueda procesar la peticin [8].
28
La comunicacin entre procesos por medio de sockets se basa en Cliente- Servidor (Figura 4.1.)
Figura 4.1.- proceso Cliente Servidor.
29
5. Analizador de protocolos Wireshark.
5.1. Analizador de protocolos. Un analizador de protocolos es una herramienta para desarrollar y depurar protocolos y aplicaciones de red. Permite capturar diversas tramas de red para analizarlas, ya sea en tiempo real o despus de haberlas capturado. 5.2. Wireshark. Conocido originalmente como Ethereal. Es un analizador de protocolos rastreador de paquetes de cdigo abierto que se utiliza para el diagnstico de fallas de red, verificacin, desarrollo de protocolo, software y educacin. Fue diseado por Gerald Combs y est programado para reconocer la estructura de los diferentes protocolos de red. Esto le permite mostrar la encapsulacin y los campos individuales de una unidad de datos del protocolo e interpretar su significado [3]. 5.2.1. Caractersticas. Disponible para las plataformas: o UNIX o LINUX o Windows o Mac OS Captura paquetes directamente desde una interfaz de red. Obtiene detalladamente la informacin del protocolo utilizado en el paquete capturado. Cuenta con la capacidad de importar o exportar los paquetes capturados desde o hacia otros programas. Filtra los paquetes que cumplan con un criterio definido por el usuario.
30
Realiza la bsqueda de los paquetes que cumplan con un criterio definido por el usuario. Permite obtener estadsticas. Cuenta con una interfaz grfica lo que facilita su utilizacin, especialmente para usuarios no muy avanzados y que no estn acostumbrados a la operacin mediante lneas de comandos. Cuenta con una versin basada en texto llamada Tshark. Muestra los paquetes, con informacin detallada de los mismos. Importa y exporta paquetes en diferentes formatos. Esto permite la compatibilidad con otros productos de software de caractersticas similares, para que un conjunto de paquetes adquiridos mediante Wireshark pueda ser abierto y analizado por otros programas de monitoreo de red. Filtrado de informacin de paquetes. Funciona en mquinas conectadas a una red, tanto Inalmbricamente como de forma cableada. Puede capturar datos de la red o leer datos almacenados en un archivo de una captura previa. Posee gran capacidad de filtrado. Admite el formato estndar de archivos tcpdump. Permite la reconstruccin de sesiones TCP. Es compatible con ms de 480 protocolos. Puede leer archivos de captura de ms de 20 productos.
31
5.3. GUI (Graphical User Interface; Interfaz Grfica del Usuario)
Funciones principales. A continuacin se detalla la interfaz grfica de usuario y como se aplican las funciones para capturar, desplegar y filtrar paquetes [13]. En Wireshark existen dos maneras de iniciar el programa: La lnea de comandos. La interfaz grfica. La interfaz grfica de Wireshark cuenta con varias secciones: En la Figura 5.1 se muestra el Men Principal que es utilizado para iniciar las funciones de la aplicacin.
Figura 5.1.Menu principal
File. Similar a otras aplicaciones GUI contiene opciones para manipular archivos y para cerrar la aplicacin Wireshark. Edit. Este men contiene opciones para aplicar funciones a los paquetes. View. Permite configurar el despliegue de los datos capturada. Go. Contiene opciones que permiten el desplazamiento entre los paquetes. Capture. Contiene opciones para iniciar y detener la captura de paquetes. Analyze. Sus funciones permiten manipular los filtros, habilitar o deshabilitar protocolos, flujos de paquetes, etc. Statistics. Contiene opciones que permiten definir u obtener las estadsticas de los datos capturados. Help. Men de ayuda para el usuario.
32
La barra de herramientas principal se muestra en la Figura 5.2ypermite el acceso rpido a las funciones de uso ms frecuente.
Figura 5.2. Barra de herramientas principal.
La barra de herramientas para filtros especifica el filtro que se desea aplicar a los paquetes que estn siendo capturados y se muestra en la Figura 5.3.
Figura 5.2. Barra de herramientas para filtros.
En el panel de paquetes capturados se despliega la lista de paquetes capturados. Al hacer clic sobre algunos de estos se despliega cierta informacin en los otros paneles, como se ve en la Figura 5.4.
Figura 5.4. Panel de paquetes capturados.
33
En el panel para detalles del paquete se despliega informacin detallada del paquete seleccionado en el panel de paquetes, como se ve en la Figura 5.5.
Figura 5.5. Panel para detalle del paquete.
El panel de paquetes capturados, despliega los bytes de informacin contenida en el campo seleccionado desde el panel de detalles del paquete seleccionado en el panel de paquetes, como se muestra en la Figura 5.6.
Figura 5.6.- Panel de paquetes capturados.
La barra de estado, muestra informacin acerca del estado actual del programa y de los datos capturados, como puede verse en la Figura 5.7.
Figura 4.7.- Barra de estado
Wireshark permite cambiar la interfaz de usuario, desde el men principal en la opcin de Preferences en el men Edit, segn se requiera.
34
Panel de paquetes capturados. Cada lnea corresponde a un paquete capturado. Al seleccionar una lnea, los detalles y bytes son desplegados en el resto de los paneles. Las columnas muestran datos del paquete capturado. Wireshark tiene una gran cantidad de detalles que pueden agregarse en estas columnas desde el men Edit->Preferences y por defecto se tienen: No: Posicin del paquete en la captura. Time: Muestra el Timestamp del paquete. Su formato puede ser modificado desde el men View->Time Display Format. Source: Direccin origen del paquete. Destination: Direccin destino del paquete. Protocol: Nombre del protocolo del paquete. Info: Informacin adicional del contenido del paquete.
Panel para detalles de paquetes capturados. Contiene el protocolo y los campos correspondientes del paquete previamente seleccionado en el panel de paquetes capturados. Cuando se selecciona una lnea de los paquetes capturados con el botn secundario del mouse, se tienen opciones para ser aplicadas segn se requiera.
35
Panel de paquetes capturados en Bytes En este panel se despliega el contenido del paquete en formato hexadecimal. De izquierda a derecha se muestra el deslazamiento del paquete, luego los datos del paquete y finalmente la informacin en caracteres ASCII, como se muestra en la Figura 5.8.
Figura 5.8.Panel de paquetes capturados.
Captura de Paquetes. Una de las principales funciones de Wireshark es capturar paquetes, a fin de que se pueda hacer uso de estos para realizar el anlisis necesario y tener una red segura y estable. Para el proceso de capturar datos es necesario estar como usuario administrador contar con estos privilegios. Wireshark cuenta con diferentes maneras de iniciar la captura de los paquetes: 1. Haciendo doble clic en el icono , que se encuentra en la barra de herramientas principal, se despliega una ventana donde se listan las interfaces locales disponibles para iniciar la captura de paquetes, como puede verse en la Figura 5.9.
Figura 5.9. Ventana de interfaces locales.
36
En cada interfaz se visualizan tres botones: Start, para iniciar. Options, para configurar. Details, para proporcionar informacin adicional de la interfaz como: su descripcin, estadsticas, etc.
2. Otra opcin es seleccionar con el mouse el icono en la barra de herramientas, para que se despliegue la ventana mostrada en la Figura 5.10. donde se muestra opciones de configuracin para la interfaz.
Figura 5.10. Ventana de configuracin de interfaz. 3. Si se han predefinido las opciones de la interfaz, haciendo clic en el icono se inicia inmediatamente la captura de paquetes.
37
4. Desde la lnea de comandos se puede iniciar la captura de paquetes ejecutando la instruccin:
#wireshark i eth0 -k
Donde eth0 corresponde a la interfaz por la cual se desea iniciar la captura de paquetes.
Detener/Reiniciar la captura de paquetes. Para detener la captura de paquetes podemos aplicar una de las siguientes opciones: Haciendo uso del icono , desde el men Capture o desde la barra de herramientas. Haciendo uso de Ctrl+E. Para reiniciar el proceso de captura de paquetes se debe seleccionar el icono en la barra de herramientas o en desde el men Capture.
Filtrado de paquetes. Wireshark hace uso de libpcap para la definicin de filtros. Su sintaxis consta de una serie de expresiones conectadas por conjugaciones and/or, con la opcin de ser negada por el operador not.
[not] expresin [ and|or [not] expresin]
38
Funcin de bsqueda de paquetes. Cuando iniciamos la captura de paquetes se obtiene una gran cantidad de paquetes que cumple con los filtros o expresiones definidas. Wireshark permite realizar bsquedas de paquetes que tienen ciertas caractersticas, para lo que se debe seleccionar la opcin FindPacket en el men Edityse desplegar la ventana que se muestra en la Figura 5.11.
Figura 5.11. Ventana de bsqueda de paquetes.
Se escribe el paquete en el campo Filter con el criterio de bsqueda que se desea y el resto de los campos. Seguidamente se presiona el botn de bsqueda Find.
39
Marcado de paquetes.
Wireshark permite marcar los paquetes para identificarlos con ms facilidad. La marca consiste en aplicar colores a los paquetes, en el panel correspondiente. Existen tres funciones para el marcado de paquetes: 1. Mark packets. Marca el paquete. 2. Mark all packets. Aplica la marca a todos los paquetes. 3. Unmark all packets. Elimina la marca de todos los paquetes.
Visualizacin de estadsticas. Wireshark proporciona un rango amplio de estadsticas de red que son accedidas desde el men Statistics, que muestra la informacin general de los paquetes capturados y estadsticas especficas de un protocolo, entre otras. A continuacin se describen algunas de las estadsticas de red: Summary. Muestra la cantidad de paquetes capturados. Protocol Hierarchy. muestra estadsticas para cada protocolo, de forma jerrquica. Conversations. Muestra el trfico entre una IP origen y una IP destino. Endpoints. Muestra las estadsticas de los paquetes hacia y desde una direccin IP. IO Graphs. Muestra las estadsticas en grafos.
40
6. Computacin Evolutiva.
La computacin evolutiva se refiere al estudio de los fundamentos y aplicaciones de ciertas tcnicas heursticas de bsqueda basadas en los principios naturales de la evolucin. Una gran variedad de algoritmos evolutivos han sido propuestos, pero principalmente pueden clasificarse en: Algoritmos Genticos, Programacin Evolutiva, Estrategias Evolutivas, Sistemas Clasificadores y Programacin Gentica. Esta clasificacin se basa sobre todo en detalles de desarrollo histrico ms que en el hecho de un funcionamiento realmente diferente. De hecho las bases biolgicas en las que se apoyan son esencialmente las mismas. Las diferencias entre ellos se centran en los operadores que se usan en cada caso y, en general, en la forma de implementar la seleccin, reproduccin y sustitucin de individuos en una poblacin [8]. Aunque los detalles de la evolucin no han sido completamente comprendidos, existen algunos puntos en los que se fundamentan: La evolucin es un proceso que opera a nivel de cromosomas, no a nivel de individuos. Cada individuo es codificado como un conjunto de cromosomas. La seleccin natural es el mecanismo mediante el cual los individuos mejor adaptados son los que tienen mayores posibilidades de reproducirse. El proceso evolutivo tiene lugar en la etapa de la reproduccin. Es en esta etapa donde se producen la mutacin, que es la causante de que los cromosomas de los hijos puedan ser diferentes a los de los padres, y el cruce, que combina los cromosomas de los padres para que los hijos tengan cromosomas diferentes. De forma breve, pasamos a comentar cada una de los algoritmos mencionados anteriormente, para que el lector pueda tener una idea de las similitudes y diferencias entre ellos.
41
Los Algoritmos Genticos resuelven los problemas generando poblaciones sucesivas a las que se aplican los operadores de mutacin y cruce. La Programacin Gentica funciona igual que la tcnica anterior pero se centra en el estudio de problemas cuya solucin es un programa. Las estrategias evolutivas se centran en el estudio de problemas de optimizacin e incluyen una visin del aprendizaje en dos niveles: a nivel de genotipo, y a nivel de fenotipo. La Programacin Evolutiva es otro enfoque de los algoritmos genticos, pero en este caso el estudio se centra en conseguir operadores genticos que imiten lo mejor posible a la naturaleza, en cada caso, ms que en la relacin de los padres con su descendencia. 6.1. Caractersticas de los Algoritmos Paralelos. Un algoritmo paralelo dedicado a un sistema multiprocesador es un conjunto de k procesos concurrentes que trabajan simultneamente y cooperan entre ellos para resolver un determinado problema. Para que un algoritmo paralelo trabaje de forma correcta y efectiva para solucionar un problema, existirn los denominados puntos de interaccin, en los que los procesos requieren sincronizarse y comunicarse entre s. Debido a las interacciones entre procesos, algunos de ellos pueden quedar bloqueados en ciertos instantes. Se llaman algoritmos paralelos sincronizados cuando algunos procesos deben esperar a otros. Puesto que el tiempo de ejecucin vara de un proceso a otro, los procesos que tienen que sincronizarse en un punto fijo deben esperar al que tarda ms en llegar. Para solucionar los problemas de los algoritmos paralelos sincronizados, pueden utilizarse algoritmos paralelos asncronos, en los cuales no se necesita que los procesos se esperen entre s. La comunicacin entre ellos se desarrolla a travs de variables compartidas, almacenadas en memoria comn y actualizada dinmicamente. Otra alternativa para construir algoritmos paralelos es la tcnica denominada macro
42
segmentacin (macropipelining), que es aplicable si la ejecucin puede ser dividida en partes, de tal forma que la salida de una o varias partes es la entrada de otra. 6.2 Algoritmos utilizados en las pruebas. Para las pruebas requeridas en el Anlisis de Trfico se utiliz el Algoritmo Gentico y el Algoritmo de Optimizacin por Enjambre de Partculas. 6.2.1. Algoritmos Genticos. Los principios bsicos de los algoritmos genticos fueron establecidos por Holland y usan una analoga directa con el comportamiento natural al trabajar con una poblacin de individuos donde cada uno representa una solucin factible a un problema dado [8]. Los algoritmos genticos (AGs) se utilizan para resolver problemas de bsqueda y optimizacin. Estn basados en el proceso gentico de los organismos vivos y son capaces de crear soluciones para problemas del mundo real. La evolucin de dichas soluciones hacia valores ptimos del problema depende de una adecuada codificacin de las mismas. Un algoritmo gentico consiste en una funcin matemtica o una rutina de software que toma como entradas a los ejemplares y regresa como salidas aquellos que deben generar descendencia para la nueva generacin. Versiones ms complejas de algoritmos genticos utilizan un ciclo iterativo que toma directamente a la especie y crea una nueva generacin que remplaza a la antigua en una cantidad de veces determinada por el diseo del algoritmo. Una de las caractersticas principales de estos algoritmos consiste en que perfeccionan su propia heurstica durante el proceso de ejecucin, por lo que no requiere largos perodos de entrenamiento especializado por parte del ser humano (principal defecto de otros mtodos para solucionar problemas, como los sistemas expertos) La aplicacin ms comn de los algoritmos genticos ha sido la solucin de problemas de optimizacin, en donde han demostrado ser muy eficientes y
43
confiables [6,10]. Sin embargo, no todos los problemas pueden ser apropiados para esta tcnica por lo que, antes de intentar usarla, se recomienda tomar en cuenta los siguientes requisitos: Su espacio de bsqueda debe estar delimitado en un cierto rango. Debe poder definirse una funcin de aptitud que indique la respuesta. Las soluciones deben codificarse de manera que resulte relativamente fcil de implementar en la computadora.
Influencia de la topologa de comunicacin en algoritmos genticos.
La topologa de comunicacin es un factor muy importante al implementar un algoritmo gentico, ya que determina la velocidad con la que las buenas soluciones se propagan hacia el resto de poblaciones. Si el grado de conectividad es alto o el dimetro de la red es pequeo, las soluciones buenas se expandirn rpidamente a travs de todas las poblaciones, favoreciendo as la evolucin hacia el ptimo. Es necesario tener en cuenta que la densidad de conexiones puede influir negativamente en el algoritmo, ya que supone una sobrecarga importante en el trafico de la red. Es importante elegir una buena topologa para obtener el mximo rendimiento del algoritmo. La ms utilizada es la topologa de anillo y de hipercubo de cuatro dimensiones.
44
6.2.2. Optimizacin por Enjambres de Partculas. Es un mtodo de optimizacin heurstico basado en poblaciones y que fue propuesto por primera vez en 1995 por Kenedy y Eberhart[6].
Optimizacin. La optimizacin es el acto de obtener el mejor resultado bajo circunstancias dadas [7]. La optimizacin puede producirse en diferentes ambientes, siempre con la finalidad de mejorar el funcionamiento de alguna tarea a travs de la planeacin de recursos. La optimizacin puede ejecutarse en distintos niveles y lo ms recomendable es definirla al final de un proceso. La optimizacin es importante en varios campos y especialidades e incluye tareas tanto de minimizacin como de maximizacin. Los problemas de optimizacin pueden clasificarse dependiendo de la manera en que son modelados, agrupndolos en [11,12]: Lineales: Utilizan programacin lineal. No lineales: Son difciles de modelar y resolver. Algunos requieren tcnicas de programacin paralela. Segn sus restricciones y forma, se clasifican como: o Minimizacin sin restricciones. o Minimizacin acotada. Se tienen parmetros que deben satisfacer alguna restriccin.
45
Optimizacin combinatoria. La optimizacin combinatoria es una rama de la optimizacin relacionada con la inteligencia artificial, ingeniera de software, investigacin de operaciones y matemticas aplicadas. La optimizacin combinatoria se caracteriza por buscar una combinacin de elementos de un conjunto determinado que maximice o minimice una funcin objetivo, resolviendo problemas de gran dificultad. Esto se logra reduciendo el tamao efectivo del espacio y explorando eficientemente el espacio de bsqueda.
PSO (Particle Swarm Optimization; Optimizacin por Enjambres de Partculas) PSO est inspirado en el comportamiento social del vuelo de las bandadas de aves y el movimiento de los bancos de peces. Consiste en mantener una poblacin de partculas, donde cada una es una solucin potencial y est descrita por las siguientes caractersticas [12]:
o Posicin actual. o Velocidad actual. o Mejor posicin histrica.
46
PSO Paralelo. La paralizacin del algoritmo puede ser de dos tipos [12]: Grano grueso: Tambin conocido como modelo de islas, en el cual se procesan varios enjambres con intercambio ocasional de partculas entre ellos. Grano fino: Un enjambre organizado en una malla ortogonal, donde los vecinos intercambian informacin. En la implementacin de grano fino se actualizan simultneamente los parmetros de velocidad y posicin de todas las partculas del enjambre.
47
7. Desarrollo.
Se analiz el trfico de datos en la red que soporta el clster compuesto por 16 computadoras ubicadas en el Laboratorio de Cmputo de la Divisin de Estudios de Posgrado e Investigacin del Instituto Tecnolgico de La Paz. Cada computadora est equipada con: o Memoria RAM de 2.0 GB o Procesador Intel core 2 Duo CPU E7400 @ 2.80 GHz x 2 o Disco duro de 300 GB. o Tarjeta de red Intel 82562v-2 10/100 Network Connection. o Sistema operativo Fedora 15, 32-bits. GNOME Versin 3.0.1. Las computadoras se encuentran interconectadas a travs de tarjetas Fast- Ethernet y un switch de 16 puertos. Estas caractersticas cubren los requerimientos para ejecutar el cdigo utilizado en las pruebas de anlisis de trfico a travs del programa Wireshark. Los algoritmos que se usaron para la obtencin de los datos fueron implementados en PVM, el cual se configur tomando en cuenta los criterios e informacin contenidos en las referencias [2,6 y7].
48
7.1. Adaptacin de PVM. A fin de lograr el correcto funcionamiento de PVM, se realizaron los pasos descritos en el anexo 1. Es conveniente que las instrucciones relacionadas con el ambiente se ejecuten como sper usuario (root), a fin de tener permiso para modificar los archivos de cualquier directorio.
7.2. Procedimiento para utilizar PVM en un clster. Una vez que PVM qued instalado correctamente en todas las computadoras, se asign un nombre a cada una las 16 que se utilizaron en el clster como se muestra en el anexo 2.
7.3. Software para el anlisis de trfico de datos. Para el anlisis de trfico de datos se utiliz Wireshark, la eleccin se hizo en base a las grandes capacidades que posee y a que es de licencia libre. Una vez verificadas las especificaciones del programa y que las computadoras cumplen con los requerimientos [5], se procedi a la instalacin del programa a travs de los pasos descritos en el anexo 3.
7.4. Algoritmos de prueba. Para el anlisis de trfico de datos se utilizaron 3 algoritmos: 1. Algoritmo Gentico Distribuido con migracin controlado por el proceso maestro (ag - dm). 2. Algoritmo Gentico Distribuido con migracin en anillo (ag dm-4.0). 3. Optimizacin por enjambre de partculas mediante vecindarios (pso-d-4.2)
49
7.5. Implementacin de los algoritmos. Una vez ubicados en una terminal de Linux, es conveniente que las instrucciones vinculadas con el entorno sean ejecutadas como sper usuario ( root ), con el objetivo de tener los permisos para modificar archivos en cualquier directorio. Para esto se ejecut, en las 16 computadoras del clster, el comando para entrar como sper usuario: $ su l Luego se procedi a la captura de paquetes de datos.
7.6. Captura de paquetes de datos. Para comenzar la captura de paquetes en el entorno grafico del programa, se ejecut en cada una de las 16 computadoras el comando: # wireshark Una vez dentro del entorno grfico, se realiz la captura de paquetes como se muestra en el anexo 4, una vez terminado el procedimiento de captura de paquete de datos se obtuvo el archivo maquina_final.cap, se procedi a el anlisis de las conversaciones entre los hosts 7.7. Conversaciones. Una conversacin es el flujo de paquetes entre dos hosts su anlisis se llev a cabo siguiendo los pasos que se muestran en el anexo 6. Una vez terminado el proceso, se muestra la informacin detallada de las conversaciones en cuanto a cantidad, duracin y medicin de trfico.
50
8. Resultados.
8.1. Algoritmo Gentico Distribuido con migracin controlada por el proceso maestro (ag dm) El anlisis del trfico de datos para este programa permiti observar el uso de una gran cantidad de ancho de banda. En la Tabla 8.1 podemos ver en la columna Packets, el nmero total de paquetes transmitidos. Por la estructura del programa, la mquina maestra enva informacin a todos sus esclavos para asignar parmetros como se muestra en la Figura 8.1.
Tabla 8.1. Conversacin entre hosts del algoritmo ag-dm 4.0
51
Figura 8.1. Asignacin de parmetros. Una vez asignados los parmetros los esclavos envan la respuesta para comenzar la migracin como se puede apreciar en la Figura 8.2. Figura 8.2.Migracin. Una vez termina el proceso de migracin, los esclavos regresan la respuesta para la fase de consolidacin como se muestra en la Figura 8.3.
52
Figura 8.3. Consolidacin.
53
8.2. Algoritmo Gentico Distribuido con Migracin en anillo (ag dm-4.0) Mediante el anlisis de conversaciones se pudo constatar que a diferencia del algoritmo anterior, la transmisin de paquetes en este algoritmo se dividi en 2 envos: Asignacin de parmetros. Migracin. Pudo observarse en la columna Packets que se enviaron menos paquetes que en el algoritmo anterior, esto es resultado de que se utiliz poca cantidad de ancho de banda al momento de asignar los parmetros a cada computadora esclava (Figura 8.4.). En la Tabla 8.2 se puede ver el nmero total de paquetes transmitidos.
Tabla 8.2. Asignacin de parmetros en la conversacin entre hosts del algoritmo ag-dm 4.0.
54
Figura 8.4. Asignacin de parmetros.
En la migracin de este algoritmo se utiliz menos ancho de banda que con el algoritmo (ag-dm) y que las cantidades de paquetes enviados fueron menores, como se muestra en la columna Packets de la Tabla 8.3.
El proceso de migracin en este algoritmo las computadoras esclavas transmiten datos a sus vecinos ms prximos, como se muestra en la Figura 8.5.
Figura 8.5. Migracin
Una vez termina el proceso de migracin, los esclavos regresan la respuesta para la fase de consolidacin, como se muestra en la Figura 8.6.
56
Figura 8.6. Consolidacin
57
8.3. Optimizacin por enjambre de partculas mediante vecindarios (pso-d- 4.2) Mediante el anlisis de las conversaciones se pudo constatar que al igual que el algoritmo gentico (ag-dm 4.0), la transmisin de paquetes en este algoritmo se dividi en 2 envos: Asignacin de parmetros. Migracin. Pudo observarse en la columna Packets que se enviaron meno paquetes que en el algoritmo gentico (ag-dm 4.0), esto es resultado de que se utiliz menos cantidad de ancho de banda al momento de asignar los parmetros a cada computadora esclava (Figura 8.7.). En la Tabla 8.4en la columna Packets se puede ver el nmero total de paquetes transmitidos en cada direccin, dando como resultado la migracin en un tiempo menor a diferencia de los algoritmos anteriores.
Tabla 8.4. Asignacin de parmetros en la conversacin entre hosts del algoritmo pso-d-4.2.
En la dispersin (Figura 8.8.) se observ que se utiliz menor ancho de banda, menor cantidad de paquetes y bytes enviados, que en los algoritmos genticos, el proceso de dispersin en este algoritmo las computadoras esclavas transmiten datos a sus vecinos ms prximos, como se muestra en la Tabla 8.5.
Tabla 8.5. Sincronizacin de procesos en la conversacin entre las computadoras del algoritmo pso-d-4.2.
60
Figura 8.8.Dispersin. Una vez termina el proceso de dispersin, los esclavos regresan la respuesta para la fase de consolidacin, como se muestra en la Figura 8.9. Figura 8.9.Consolidacin.
61
9. Conclusiones y recomendaciones.
Conclusiones. El anlisis de trfico de datos dio como resultado la cantidad de paquetes transmitidos y la duracin de la transmisin, entre otros. Con los resultados obtenidos se determin cual de los algoritmos requiri menos tiempo en la transmisin de datos, con lo que se llega a las siguientes conclusiones:
Los Algoritmos arrojan resultados diferentes, respecto al volumen de paquetes transmitidos entre los equipos anfitriones (hosts) El Algoritmo Gentico Distribuido con migracin en anillo es ms eficiente que el Algoritmo Gentico Distribuido Controlado por el Proceso Maestro, dado que utiliza menos ancho de banda puesto que la cantidad de paquetes enviados es menor. El Algoritmo de Optimizacin por Enjambre de Partculas Mediante Vecindarios es ms eficiente que el Algoritmo Gentico Distribuido con Migracin en Anillo, dado que la cantidad de paquetes enviados es menor. No se generaron errores durante la transmisin de paquetes. El Algoritmo de Optimizacin por Enjambre de Partculas Mediante Vecindarios transmite menos paquetes en un menor tiempo.
62
Recomendaciones. Efectuar el anlisis de trfico de datos utilizando LAM/MPI y comparar los resultados obtenidos con los de este trabajo. Desarrollar una herramienta para el anlisis de protocolos, con la que se puedan comparar resultados especficos al aplicar diferentes algoritmos
63
10. Fuentes bibliogrficas.
Libros.
[1] Thomas Rauber, Gudula Runger, Parallel Programming for Multicore and Cluster Systems,2nd ed. , Springer-Verlag, Berlin Heidelber, Germany , 2010.
[2] A. Geist, A. Beguelin, J. Dongarra, W. Jiang, R. Manchek, and V. Sunderam,PVM Parallel Virtual Machine: A Users Guide and Tutorial for Networked Parallel Computing, Cambridge, 1996.
[3] Chris Sanders, Practical packet analysis, using wire shark to solve real world network problems, California, 2007.
[4] Andrew S. Tanenbaum,Organizacin de computadoras, un enfoque estructurado, sptima edicin, Mxico, 2000. [5] Chris Sanders, Practical Packets Analysis (Using Wireshark to Solve Real-World Network Problems), San Francisco CA., 2007.
[7] Singiresu S. RaoEngineering Optimization Theory and Practice,4 th ed.,New Jersey,2009. [8] Andrew G. Blank TCP/IP Foundations, San Francisco, London, 2004.
64
Artculos.
[9] Marco Antonio Castro Liera, Un algoritmo gentico distribuido con aplicacin en la identificacin difusa de un proceso fermentativo, Cuba, 2009. [10] Marco Antonio Castro Liera, Jess Antonio Castro, Manuel lvaro Pacheco Hoyo, Algoritmo Gentico Distribuido Sobre PVM, Instituto Tecnolgico de La Paz, 2006,http://redalyc.uaemex.mx/redalyc/html/944/94403110/94403110.html.
[11] Van den Bergh, F., An Analysis of Particle Swarm Optimizers, Pretoria, 2001.
[12] Iliana Castro Liera, Paralelizacin de Algoritmos de Optimizacin Basados en Poblaciones, por Medio de GPGPU, ITLP, La Paz, B.C.S., Mxico, 2011.
Internet.
[13] www.wireshark.org
65
11. Anexos.
11.1. Anexo 1. Instalacin de PVM. Desde la lnea de comandos de una terminal, se ejecut la orden: #yum -y install pvm* Variables de entorno. Se edit el archivo .bashrc , agregndosele las siguientes instrucciones, para crear las variables de entorno: PVM_ROOT=/usr/share/pvm3 PVM_ARCH=LINUXI386 PVM_RSH=/usr/bin/ssh export PVM_ROOT PVM_ARCH PVM_RSH Modificacin de la variable de entorno PATH. Se edit el archivo .bash_profile y se le agreg la ruta: $PVM_ROOT/lib, al final de la variable PATH PATH=$PATH:$HOME/bin:$PVM_ROOT/lib export PATH Entrar a PVM. Para entrar al ambiente de PVM, se escribi: #pvm Y a continuacin apareci el smbolo de peticin de orden de PVM: pvm> Salir temporalmente de PVM. Se dej en ejecucin al demonio PVM y se volvi a la lnea de rdenes del sistema operativo, por medio del comando quit. pvm>quit Con esta orden se abandona el ambiente de PVM, pero queda corriendo el Demonio pvmd.
66
11.2. Anexo 2.
Primero se edit el archivo: /etc/sysconfig/network # gedit /etc/sysconfig/network Y se agregaron los nombres de las computadoras a utilizar, como se muestra en la Tabla 11.1 No. Lineas agregados al archivo 1 maquina1 2 maquina2 3 maquina3 4 maquina4 5 maquina5 6 maquina6 7 maquina7 8 maquina8 9 maquina9 10 maquina10 11 maquina11 12 maquina12 13 maquina15 14 maquina16 15 maquina17 16 maquina18
Tabla 11.1. Asignacin de nombres a las computadoras. Una vez asignado el nombre a las 16 computadoras, se continu con la verificacin de sus IPs y nombres. En cada computadora se utiliz la siguiente instruccin: # ifconfig La cual despleg las IPs que se muestran en la Tabla 11.2.
67
No. IP Nombre de la computadora 1 10.0.0.1 maquina1 2 10.0.0.2 maquina2 3 10.0.0.3 maquina3 4 10.0.0.4 maquina4 5 10.0.0.5 maquina5 6 10.0.0.6 maquina6 7 10.0.0.7 maquina7 8 10.0.0.8 maquina8 9 10.0.0.9 maquina9 10 10.0.0.10 maquina10 11 10.0.0.11 maquina11 12 10.0.0.12 maquina12 13 10.0.0.15 maquina15 14 10.0.0.16 maquina16 15 10.0.0.17 maquina17 16 10.0.0.18 maquina18 Tabla 11.2. IPs de las computadoras.
68
Se implement el acceso remoto a otra mquina por medio de Secure Shell sin password.
Acceso a mltiples servidores con ssh. Una forma de administrar mltiples servidores, mediante ssh y sin tener que escribir la contrasea, es usar pares de llaves publicas/privadas para la autentificacin. Primero deberemos generar la llave pblica en el servidor maestro, ejecutando la orden: ssh-keygen -t rsa En pantalla deber aparecer algo como: Generating public/privatersakeypair. Enter file in which to save the key (/home/rob/.ssh/id_rsa): Tecleamos <Enter> para dejar los archivos predeterminados para las llaves. A continuacin se nos pide una frase de contrasea, la cual dejaremos en blanco (tecleando <Enter> en un par de ocasiones) a fin de poder entrar sin contrasea los servidores.
Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/rob/.ssh/id_rsa. Your public key has been saved in /home/rob/.ssh/id_rsa.pub. The key fingerprint is: a6:5c:c3:fb:19:94:0d:06:a1:a6:29:58:fa:80:0a:bc usuario@localhost Con lo anterior se han creado los archivos id_rsaeid_rsa.pub en el directorio .ssh La llave privada es id_rsa, la llave pblica es id_rsa.pub Para usar este par de llaves basta con copiar la llave pblica en el archivo .ssh/authorized_keys2 de un servidor esclavo. Por ejemplo, para acceder al servidor esclavo maquina_x desde el servidor maestromaquina1, ejecutamos:
69
sshmaquina_x "mkdir .ssh; chmod 0700 .ssh" scp .ssh/id_rsa.pub maquina_x:.ssh/authorized_keys2 La primera instruccin crea el directorio .ssh en la cuenta del usuario en el servidor esclavo, la segunda instruccin copia nuestra llave pblica en la lista de llaves autorizadas en dicho servidor. Ahora, podremos acceder al servidor esclavo mediante ssh, sin necesidad de teclear la contrasea.
Se modific el archivo /etc/hosts para agregar las lneas con las IP y nombres asignados a las computadoras, como se muestra en la Tabla 11.3.
Se edita el archivo host y se agregaron los nombres de las mquinas, como se muestra en la Tabla 11.4. Lineas maquina1 maquina2 maquina3 maquina4 maquina5 maquina6 maquina7 maquina8 maquina9 maquina10 maquina11 maquina12 maquina15 maquina16 maquina17 maquina18 Tabla 11.4. Archivo host con los nombres de las computadoras agregadas. Una vez que se agregaron los nombres de las computadoras en el archivo, se continu con la ejecucin de la instruccin para agregar a los hosts: #pvm maquinas Se verific que realmente fueron agregados, para lo cual se utiliz el comando: pvm># conf Esto arroj los nombres de las computadoras agregadas, con lo cual confirmamos que PVM est listo para ser utilizado.
71
11.3. Anexo 3. 1. Ya que se tiene una conexin a Internet, se ejecuta el siguiente comando : #yum -y install wireshark wireshark-gnome 2. El paquete wireshark contiene la plataforma base que incluye las utilidades para la lnea de comandos. 3. El paquete wireshark-gnome incluye la aplicacin GUI de Wireshark. Los programas instalados por estos paquetes son los que se muestran en la Tabla 11.5. Ubicacion Caracteristica /usr/sbin/wireshark wireshark version GUI /usr/sbin/tshark wireshark versin CLI, lnea de comandos /usr/sbin/dumpcap utilidad para captura de paquetes /usr/sbin/capinfos utilidad para archivos de captura /usr/sbin/editcap utilidad para archivos de captura /usr/sbin/mergecap utilidad para archivos de captura /usr/sbin/text2pcap utilidad para archivos de captura /usr/sbin/randpkt utilidad de captura aleatoria /usr/sbin/dftest utilidad para compilar muestras de filtros
Tabla 11.5. Paquetes de Wireshark instalados.
72
11.4. Anexo 4. Entrando a la opcin capture / start, como se muestra en la Figura 11.6.
Figura 11.6. Inicio de la captura en el entorno grfico de Wireshark. Con las 16 computadoras en modo de captura. Una vez iniciada la ejecucin del algoritmo, este empez la transmisin de paquetes. Cuando termin la ejecucin del programa, se eligi la opcin capture / stop (en las 16 computadoras del clster) para detener la captura de datos, como se muestra en la Figura 11.7.
73
Figura 11.8. Detencin de la captura en Wireshark. Una vez detenida la captura se guardaron los datos en cada computadora. Para guardar los datos se elige la opcin File / Save As, inmediatamente se muestra un recuadro donde se tecleo el nombre del archivo a guardar, este procedimiento se hizo para cada computadora, con lo que se dio por terminada la etapa de captura de trfico de datos. Despus de analizar los datos capturados en cada mquina, se unieron los 16 archivos de captura, por medio del comando mergecap cuya sintaxis es: mergecap [ -a ] [ -F <formato del archivo> ] [ -h ] [ -T <tipo de encapsulacin> ] [ -v ] -w <archivo de salida>|- <archivo de entrada>... La instruccin para unir los 16 archivos de captura fue la siguiente:[root@maquina1] # mergecap maquina1 maquina2 maquina3
74
maquina4 maquina5 maquina6 maquina7 maquina8 maquina9 maquina10 maquina11 maquina12 maquina15 maquina16 maquina17 maquina18 -w maquina_final.cap Con el archivo maquina_final.cap resultante, se procedi a el anlisis de las conversaciones entre los hosts. 11.5. Anexo 5. Se selecciona la opcin: statistics / conversations, como se muestra en la Figura 11.9.
Figura 11.9. Conversacin entre dos hosts en Wireshark. Las estadsticas resultantes nos muestran informacin ms detallada de las conversaciones entre los distintos hosts involucrados en el anlisis, como se puede observar en la Figura 11.10.
75
Figura 11.10. Estadsticas de las conversaciones entre dos hosts.
En la Figura 11.10. Se muestra la informacin detallada de las conversaciones en cuanto a cantidad, duracin y medicin de trfico. La conversacin muestra el trfico entre la IP origen y la IP destino, esto es posible mediante la conexin que se hace atraves de un socket UDP.