Desarrollo de una red de comunicaciones para sistemas de cómputo heterogéneos distribuidos y escalables

Giménez Rosado, Carlos (2016). Desarrollo de una red de comunicaciones para sistemas de cómputo heterogéneos distribuidos y escalables. Tesis (Master), E.T.S.I. Industriales (UPM).

Descripción

Título: Desarrollo de una red de comunicaciones para sistemas de cómputo heterogéneos distribuidos y escalables
Autor/es:
  • Giménez Rosado, Carlos
Director/es:
  • Torre Arnanz, Eduardo de la
  • Rodríguez Medina, Alfonso
Tipo de Documento: Tesis (Master)
Título del máster: Ingeniería Industrial
Fecha: Septiembre 2016
Materias:
Escuela: E.T.S.I. Industriales (UPM)
Departamento: Automática, Ingeniería Eléctrica y Electrónica e Informática Industrial
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[img]
Vista Previa
PDF (Document Portable Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (2MB) | Vista Previa

Resumen

El desarrollo tecnológico y los avances que han tenido lugar en los últimos años han propiciado la aparición de sistemas que hace diez años parecían impensables. En este sentido el mundo evoluciona a pasos agigantado hacia lo que se espera que sea una sociedad interconectada en todos los aspectos. La tecnología se ha ido adentrando poco a poco en la sociedad moderna, pudiéndose aprovechar ésta de sus ventajas, pero a la vez provocando un grado de dependencia difícil de cubrir en el caso de que se quiera volver al estado anterior. Por lo tanto se puede afirmar que el mundo ha cambiado de forma definitiva. En este mundo interconectado cada vez son más necesarios sistemas de comunicaciones avanzados que puedan hacer frente a la demanda y a las necesidades que se requieren. En este sentido se está poniendo un gran esfuerzo para que la potencia de cálculo que se requiere no afecte a otros aspectos como puede ser la fiabilidad o el consumo energético. Hoy en día los sistemas de comunicaciones se encuentran por todas partes, desde las más habituales como son la red de telefonía o internet, hasta que red local que crea el router en un hogar, donde se encuentran interconectados en todo momento los dispositivos móviles, la televisión, la impresora…, en incluso en viviendas más modernas se puede centralizar el control de todos los instrumentos electrónicos. Pero no sólo hay que centrarse en el ámbito doméstico, sino que las opciones que aporta una red de comunicaciones bien montada son más amplias y pueden ayudar a la resolución de problemas más complejos. Es en este aspecto donde se va a centrar este trabajo. El objetivo que se persigue es poder diseñar una red de comunicaciones heterogénea y con un alto grado de escalabilidad. Se pretende que los nodos de esta red puedan llevar a cabo cómputo de altas prestaciones mediante la paralelización y distribución de tareas, valiéndose para ello de dos herramientas fundamentales: pfSense junto a sockets de internet y MPI. La primera se encargará de la parte externa de la red y el filtrado de información, mientras que con la segunda se implementará el reparto de la misma. En este último caso lo que también se busca es una funcionalidad más completa, asemejándose a la arquitectura hardware ARTICo3, que como se verá más adelante permite llevar a cabo una aceleración con detección de fallos. Una de las ventajas adicionales que se pretende conseguir es un enmascaramiento de la red de servidores. El hecho de colocar un router entre éstos y el cliente permite aislar la red interna de la externa. El cliente debe realizar la petición a la IP pública del router y éste se encarga después de distribuir la información. A este enmascaramiento de las direcciones IP internas se le conoce como NAT (Network Address Translation). El ocultar la red de servidores facilita las tareas de paralelización y balance de cargas. Para desarrollar esta funcionalidad se va a emplear pfSense. PfSense es una distribución abierta basada en un sistema operativo de libre distribución que se emplea para convertir un ordenador convencional en un firewall o router. Puede ser instalado en cualquier ordenador que tenga dos tarjetas de red (una para la red interna y otra para conectarse con la red externa) y su amplio abanico de opciones le permiten al usuario configurarlo a su gusto. Es esta flexibilidad una de las mayores razones para su uso, ya que nunca se sabe la utilidad que se le puede acabar dando a la red de comunicaciones. Además, el uso del pfSense permite realizar labores de firewall, pudiendo filtrar determinados paquetes o peticiones y permitiendo realizar un direccionamiento de puertos. La transmisión de información a través del router pfSense se ha realizado empleando sockets de internet. Los sockets se pueden definir como los extremos que se establecen en una comunicación llevada a cabo en una red. El socket siempre está ligado a un puerto en concreto para que la capa de transporte, explicada a continuación, pueda identificar la aplicación a la que se dirigen los datos. Dentro de las distintas partes que componen la comunicación, los sockets pertenecen a la capa de transporte. Ésta es la encargada de establecer la comunicación entre los dos puntos y gestionar el flujo de información. Los sockets empleados han sido desarrollados empleando el protocolo TCP. Al contrario que UDP, el protocolo TCP es un protocolo con conexión, garantizando que los paquetes llegan a su destino y en el mismo orden en que partieron. Dentro de las distintas opciones se ha optado por emplear la biblioteca de funciones que provee Windows para su sistema operativo conocida como Winsock. Entre las distintas formas de ejecutar un sistema basado en sockets hay dos que destacan sobre el resto: sockets bloqueantes o asíncronos. En el primero de los casos, que es el modo que se implementa por defecto, el cliente o el servidor ejecutan su código hasta que, por ejemplo han de enviar o recibir un paquete de datos. Cuando se da esta situación se quedan esperando hasta que pueden completar la operación. De esta forma uno de los dos extremos se encuentra parado con la penalización que eso conlleva en cuanto a rendimiento. La segunda de las opciones permite que el código se siga ejecutando aunque la comunicación no se haya completado. Esta opción es la ideal para sistemas de altas prestaciones, pero no hay que obviar la anterior, que para sistemas mucho más simples resulta más fácil de configurar. En este proyecto, tras desarrollar una primera versión con sockets bloqueantes posteriormente se ha optimizado a una versión asíncrona con un sistema que gestiona tanto las recepciones como los envíos para que puedan realizarse en el momento oportuno. En este caso hay que cuidar la limitación existente de eventos pendientes de ejecución y la gestión de los buffers para que no se colapsen con la información pendiente de salida. Para la validación de los resultados de este proyecto se ha optado por implementar el sistema de comunicaciones desarrollado en máquinas virtuales alojadas en un mismo ordenador. Esta medida se tomó para evitar el montaje de una compleja red de ordenadores debido sobre todo al espacio que ocupa, optando finalmente por el uso de estas máquinas virtuales. Para poder implementar la red se han necesitado tres máquinas virtuales: una para instalar el router pfSense y dos que harán las veces de servidores. Estas dos máquinas están conectadas únicamente a la red interna (LAN) creada por el router pfSense, mientras que éste está conectado por el otro lado a la red del laboratorio, y por lo tanto es accesible desde el ordenador principal que ejecutará las labores de cliente en la comunicación. Hasta ahora se ha hablado de la parte más externa de la red. El siguiente paso es implementar el reparto de las tareas y la comunicación entre los distintos servidores. Para ello se ha empleado una herramienta conocida como MPI (Message Passing Interface). Esta herramienta es el fruto de un largo trabajo desarrollado por un conjunto de universidades y empresas con el objetivo de agrupar bajo un mismo estándar las distintas opciones existentes para sistemas concurrentes. Se podría definir como un interfaz estandarizado, con las ventajas que ello conlleva de portabilidad y facilidad de uso, enfocado sobre todo a la transferencia de mensajes en la realización de tareas paralelas. Además MPI se implementa a alto nivel, por lo que el programador no tiene por qué conocer las características internas del hardware para diseñar sus propias aplicaciones. Al igual que con los sockets, en este campo también existen distintas alternativas en cuanto a bibliotecas de funciones se refiere. Para este trabajo se ha optado por emplear MSMPI, el sistema desarrollado por Microsoft. El emplear unas bibliotecas u otras sólo afecta al funcionamiento interno de esa máquina y no genera ningún problema de compatibilidad al conectarse con otra distinta. Esto resulta de vital importancia ya que lo que se pretende es que la ejecución se lleve a cabo en un sistema heterogéneo. MPI tiene la ventaja de que con cuatro funciones básicas se puede ejecutar un programa que distribuya una tarea entre los distintos recursos . Sin embargo, donde radica su potencial es en las operaciones colectivas. Gracias a MPI todos los elementos de procesamiento que pertenezcan a un mismo comunicador (la unidad que engloba a un conjunto de procesos) pueden realizar operaciones de forma colectiva: reducción, gathering, scattering, broadcast. Este tipo de operaciones aumenta de forma significativa la funcionalidad de la red. Entre otras cosas se pueden llevar a cabo algoritmos redundantes para la detección de fallos en la red y su posterior corrección. También, al igual que los sockets se puede elegir entre implementar la alternativa bloqueante o la que no lo es. Todo depende de la funcionalidad final que se le quiera dar. En el fondo MPI, al igual que los sockets, se usa para transferir información entre dos elementos, por lo que la forma en la que emisor y receptor se comportan de cara a la gestión de la información es similar en ambos casos. Por lo tanto, gracias a MPI se puede realizar una aceleración mediante la paralelización de tareas, aparte de implementar mecanismos de tolerancia a fallos. Esta misma funcionalidad es la que posee ARTICo3, una arquitectura reconfigurable diseñada en el CEI, implementada en FPGA, que está basada en un sistema de bloques hardware comunicados por bus que se encargan de gestionar la ejecución de un programa de la forma más eficiente posible. Mediante unos aceleradores hardware que se asemejan a los nodos de una red se consigue llevar a cabo una paralelización de tareas y algoritmos redundantes. De esta forma juntando ambas tecnologías, considerando las FPGA como nodos de una red se podría obtener una paralelización tanto a alto nivel en la distribución de las tareas como en cada uno de los nodos de forma interna. Otra de las alternativas que ofrece MPI si se quiere realizar un sistema más avanzado es el multithreading. Este tipo de ejecución permite tener distintos hilos de ejecución que comparten los recursos, optimizando de esta forma la utilización de éstos. La opción más atractiva es implementar un sistema maestro esclavo en el que el primero también pueda hacer las veces de esclavo (con un hilo de ejecución para cada perfil), lo que permite una mayor utilización de los recursos simplificando el código. Al igual que con los sockets se han empleado las máquinas virtuales para validar la comunicación. En este caso se ha ejecutado un programa que calcula el número PI mediante una simulación de Montecarlo. La ejecución se ha realizado sobre dos máquinas virtuales que comparten sus recursos, empleando para una de las pruebas dos procesadores de cada una y para otra únicamente un procesador. Además, de cara a comparar el rendimiento en las máquinas virtuales con respecto al ordenador, se ha ejecutado el mismo programa en el ordenador principal empleando cuatro y ocho procesadores. Se puede afirmar que el sistema de comunicaciones llevado a cabo posee las funcionalidades que se habían marcado como objetivo al comienzo del desarrollo. Se ha conseguido validar la funcionalidad de la red, si bien es cierto que para conseguir resultados numéricos más atractivos habría que implementar la red de forma física.

Más información

ID de Registro: 44641
Identificador DC: http://oa.upm.es/44641/
Identificador OAI: oai:oa.upm.es:44641
Depositado por: Biblioteca ETSI Industriales
Depositado el: 13 Feb 2017 07:55
Ultima Modificación: 13 Feb 2017 07:55
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • e-ciencia
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM