SIMULACIÓN DE REDES COMPLEJAS MEDIANTE PROCESOS CONCURRENTES

Alejandro Pomares, Gabriel Ruiz, Carlos Pastor, Mª del Mar Galotto,

José A.G. Orza, Marco Marhuenda, Salvador Alcarazp

Dpto. de Física y Arquitectura de Computadores, Universidad Miguel Hernández

Avda. del Ferrocarril, s/n. Edif. Torregaitán 03202 Elche

 

 

RESUMEN

En las fases previas de la Ingeniería de Proyectos Telemáticos es cada vez más necesario incluir procesos de simulación como apoyo al diseño de redes complejas. Estas redes se caracterizan por estar formadas por un elevado número de nodos, medios de transmisión de gran ancho de banda, conmutadores complejos y alta densidad de tráfico de datos.

Por otro lado, los avances en Microinformática, la integración y el aumento en la capacidad de computación, están permitiendo el uso de potentes herramientas de simulación en plataformas tipo microcomputador Unix/Linux.

Todo ello nos ha conducido a desarrollar una Herramienta de Simulación en Tiempo Real, con arquitectura de procesos concurrentes y tolerante a fallos. Permite la evaluación y prueba de los diferentes dispositivos, capacidades, congestión, tráfico, etc., antes de su desarrollo e implantación.

Se ha utilizado un lenguaje de alto nivel declarativo, Erlang, que proporciona: procesos concurrentes, tolerancia a fallos y aprovechamiento óptimo de la programación declarativa, obteniendo un código compacto, eficiente y de fácil comprensión. Asimismo, Erlang permite implementar sistemas Soft Real-Time, obteniendo simulaciones muy reales, al eliminar la carga computacional del tiempo simulado, propio de los simuladores tradicionales.

La versatilidad del sistema permite un exhaustivo análisis de los nodos de la red, y la parametrización puntual de todos los elementos del conmutador: memoria, tiempos de retardo, tiempos de computación, buffers, tiempo de procesamiento, pérdida de paquetes, latencia, diámetro de la red, etc.

1. INTRODUCCIÓN

En la última década hemos asistido a un espectacular desarrollo en redes de comunicaciones, y en particular, en redes de conmutación de paquetes, con un papel predominante de Internet. Proliferación de Redes de Área Local (LAN), así como el uso de medios de transmisión de gran ancho de banda para conexiones backbone de redes WAN, y LAN's en organizaciones o empresas de medio/gran tamaño.

Paralelamente se ha producido la aparición de dispositivos electrónicos en el campo de la Ingeniería de Comunicaciones, de elevadas prestaciones, reducido tamaño, altas capacidades de procesamiento, múltiple y variada interconectividad, así como una serie de características que deberán ser evaluadas en el Proyecto Telemático.

Como consecuencia de los desarrollos en Microelectrónica, avances VLSI, aumento de la capacidad de procesamiento en microcomputadores,etc. se están obteniendo plataformas PC, con arquitecturas multiprocesador equipadas con 2, 4, 6, e incluso mayor número de procesadores, a unos costes insignificantes comparados con arquitecturas multiprocesador tradicionales. También estamos asistiendo al desarrollo de Sistemas Operativos para las plataformas hardware anteriores, dotados de características multiprocesador, multitarea y concurrentes, siendo los ejemplos más representativos, el Sistema Operativo Linux/Unix, arquitecturas tipo BeoWolf y el entorno Erlang (http://www.erlang.org), como claros exponentes de software freeware, de elevada potencia de cálculo y totalmente exportable entre plataformas.

Tradicionalmente, los entornos de simulación de elevadas prestaciones, han sido desarrollados en plataformas paralelas y multiprocesador, restringidas su uso a centros de investigación, instituciones gubernamentales, centros universitarios de elevado presupuesto o grandes empresas tecnológicas. Eran necesarios unos conocimientos bastantes elevados de la herramienta y/o sistema utilizado, así como una modelización del sistema bastante estricta. Además, el uso estaba restringido a investigadores o miembros de dichos centros, imposibilitando el uso por aquellos ingenieros freelance o empresas de tamaño medio de reducido presupuesto.

El escenario actual es diferente: todos los avances anteriores han contribuido, como explicaremos en este artículo, al desarrollo de herramientas y entornos, de elevadas prestaciones y capacidad de computación, pero de reducidos costes. Ello lo hacen asequibles a pequeñas y medianas empresas de ingeniería, no dejando de ser una potente herramienta, flexible y abierta a cualquier requerimiento del proyecto abordado.

2. NECESIDAD DE SIMULACIÓN EN PROYECTOS TELEMÁTICOS

La simulación ha sido utilizada a lo largo de décadas en multitud de áreas de la ciencia y la técnica. Antes de iniciar el desarrollo de cualquier sistema complejo, los ingenieros suelen utilizar alguna herramienta de simulación o test donde sea posible modelizar y probar el sistema que está desarrollando.

Las ventajas de la simulación son múltiples: reducción del tiempo de desarrollo del sistema; chequeo de decisiones a priori, antes de iniciar el desarrollo del proyecto; posibilidad de reutilización de un mismo modelo, etc. El uso de simulación es más sencillo que otras técnicas analíticas y, por tanto, necesita menos simplificaciones. El modelo y la simulación tendrá como objetivo ayudar a investigadores e ingenieros a modelar dichos sistemas complejos.

En la Ingeniería Telemática y de Redes de Comunicaciones, se presentan varias situaciones en las que la simulación juega un papel decisivo en la implantación y desarrollo exitoso del proyecto:

  • Modificación y/o ampliación de una red, o segmento de red, así como la incorporación de equipos fuentes y/o sumideros de tráfico, puede ocasionar alteraciones en dispositivos de otros segmentos de la red.
  • Test de dispositivos con prestaciones diferentes a los existentes en la red, proporcionando resultados y aproximación de funcionamiento de los equipos a integrar, y su interacción con el resto de equipos de la red.
  • Simulación de viabilidad de red, permitiendo validar especificaciones (topología, dispositivos, interconectividad, segmentación).
  • Simulación de diferentes escenarios de tráfico (Erlang, Poisson, Aleatorio, Determinista) y análisis del comportamiento de los diferentes dispositivos.
  • Técnicas de routing y conmutación de paquetes: Routing por Vector distancias, Routing por Estado del Enlace, Algoritmos de encaminamiento.
  • Análisis de prestaciones: Distancia, latencia, tiempos de procesamiento, tamaño de buffers, tiempos de encolamiento, tiempos de propagación, pérdidas de paquetes, congestión, etc.

Una de las características más destacadas del simulador que se presenta, es la capacidad de procesamiento de un ‘elevado’ numero de procesos distribuidos concurrentes, esto nos permite la simulación de sistemas de un elevado número de elementos (nodos). Ello permitiría realizar un esbozo del futuro de Internet, realizando simulaciones del orden de millares de nodos, con comunicación asíncrona y total independencia inter-nodal.

3. TIEMPO SIMULADO vs TIEMPO REAL

Tradicionalmente, los esquemas de simulación , y en concreto, los simuladores de redes de computadores están organizados en los denominados Sistemas Dinámicos de Eventos Discretos (DEDS, "Discrete Events Dynamic Systems"), caracterizados por el uso de variables discretas y utilización de una base de tiempos continua (valor real), pero éste solo cambia de estado en puntos discretos del tiempo simulado (evento).

Por tanto, el resultado de la simulación obtenida con un simulador del tipo DEDS, se expresa en relación a una base de tiempo no-real, que posteriormente habrá que correlacionar y escalar a tiempo real, para obtener datos reales de aplicación al mundo real.

Esta herramienta, aprovechando las características de proporcionadas por Erlang en Sistemas Soft Real-Time (restricciones de tiempo del orden milisegundos), construye una simulación del sistema de tipo ‘real’, realizando unos cálculos y proporcionando unos resultados finales reales, sin necesidad de elevarlos ni escalarlos a ninguna base de tiempos. Esta característica de ‘tiempo real’ implica trabajar con capacidades de procesamiento, tamaños de paquete, coste de procesamiento/byte, tiempos de propagación, retardos, saturación, etc., todo ello, en base de tiempos del orden de milisegundos.

4. ERLANG: LENGUAJE FUNCIONAL PARA SISTEMAS DISTRIBUIDOS

Para el desarrollo del simulador, se ha utilizado un lenguaje basado en el paradigma de la Programación funcional: Erlang.

En este contexto de Programación Funcional (Prolog, Lisp, Erlang, Haskell, etc.), a diferencia de la Programación Imperativa (C, Pascal, Fortran, Basic, etc.), el programador se olvida de cómo se hacen las tareas, y concentra sus esfuerzos en qué hacer. Los lenguajes de programación funcionales se fundamentan en el concepto de función y razonamiento matemático. La relación entre lenguajes imperativos y funcionales se resume en la Tabla1.

Erlang surgió en la década de los 80 en los laboratorios de la empresa sueca Ericsson, como un intento de desarrollar un lenguaje de alto nivel, estructurado y con capacidad para afrontar el tipo de proyectos, especialmente de Telecomunicaciones, que la empresa estaba desarrollando, y que optimizara el uso de la tecnología emergente en Microelectrónica, especialmente, en Microinformática.

Tras realizar un sondeo de la totalidad de los lenguajes existentes, se llega a la conclusión de que ninguno cumple rigurosamente las especificaciones deseadas, por lo que se inicia el desarrollo de Erlang, como solución a los problemas originados por la tecnología emergente en materia de Telecomunicaciones y el uso de la Microinformática.

El nombre del lenguaje se adoptó en honor al matemático de origen danés Agner Krarup Erlang, que desarrolló a principios del Siglo XX importantes estudios sobre Teoría de Colas, ampliamente utilizados en Telecomunicaciones.

Erlang surge como una solución a las problemas encontrados en cualquier proyecto de Telecomunicación, que también son similares a los encontrados en los sistemas en Tiempo Real ampliamente utilizados en la industria. Necesidades de estructuración, ausencia de errores y funcionamiento continuo, que se resuelven en Erlang mediante la agrupación de código fuente en módulos, una complejo sistema detector de errores (interno al lenguaje) y la posibilidad de carga en caliente, hacen de Erlang un potente y eficaz lenguaje para modelizar y resolver problemas de Telecomunicaciones y Tiempo Real, donde la distribución de procesos, robustez y tolerancia a fallos son prioritarios.

Las características más relevantes del lenguaje, son las siguientes:

  • Procesos concurrentes en tiempo real. Erlang se adapta perfectamente a Sistemas Soft Real-Time, con tiempos de proceso comprendidos en un intervalo de tiempo probabilístico (milisegundos).
  • Sistemas distribuidos. Diseñado para resolver problemas distribuidos por naturaleza, donde el problema tiene origen distribuido, y no es necesario incorporar la distribución de procesos de forma artificial. Asimismo, está especialmente diseñado para el uso con sistemas compuestos por un elevado número de procesos, donde la creación, ejecución y eliminación de procesos se hace de una forma sencilla y eficaz. El mecanismo de comunicación inter-procesos utilizado es el paso de mensajes asíncrono.
  • Tolerancia a fallos. La propia naturaleza del sistema, formado por un elevado número de procesos concurrentes y procesados de forma distribuida, así como la capacidad de ejecución de procesos de forma local (nodo local), o distribuir los procesos en máquinas remotas (nodos remotos), en una red de computadores, hacen de Erlang un entorno de programación distribuida y con una alta tolerancia a fallos, al permitir la asignación de procesos a determinados nodos de la red, así como establecer alternativas de ejecución ante problemas o caídas del nodo local de ejecución del proceso.

Otras características y funcionalidades específicas de Erlang son:

  • Lenguaje de alto nivel basado en procesos.
  • Las variables no se pueden sobreescribir, para evitar efectos colaterales.
  • El código de programa está formado por funciones, agrupadas en módulos.
  • Pattern-Matching.
  • Uso de librerías de programa (OTP, "Open Telecomunication Platform").
  • Organización de memoria mediante Colector de Basura automática (garbage collector).

En general, destacamos de Erlang una elevada potencia de computación y optimización de código basado en un lenguaje declarativo, que al estar más próximo al razonamiento humano, se obtienen códigos de programa más compactos, eficientes y de más fácil comprensión para el ser humano.

5. CONCLUSIONES

En este artículo presentamos una alternativa a la simulación tradicional, exponiendo los trabajos realizados en una herramienta de simulación de redes de conmutación de paquetes, utilizando un paradigma de Programación Concurrente en Tiempo Real, con posibilidad de procesamiento tanto en sistemas monoprocesador como sistemas multiprocesador; tiene incluso, capacidad de procesamiento distribuido en una red de computadores, con comunicación inter-procesos mediante paso de mensajes asíncrono. Obteniendo unos rendimientos de computación comparables a los tradicionales sistemas multiprocesador, pero a un coste económico muy inferior a de estos sistemas, por tratarse de plataformas de tipo PC y sistema operativo Unix/Linux.

Las ventajas del entorno de simulación que presentamos en el artículo son: (i) Reducido coste. (ii) Sistema distribuido (local o remoto). (iii) Programación funcional. (iv) Sistema Soft Real-Time. (v) Procesamiento Asíncrono. (vi) Simulación de redes complejas (elevado nº de nodos). (vii) Sencillez de uso.

La herramienta está en fase de desarrollo. Se han obtenido resultados experimentales bastante coherentes que nos animan a continuar e investigar en el campo de los procesos concurrentes, y en particular, en el uso de Erlang como sistema de programación distribuida y muy aplicado a entornos de Telecomunicaciones y Sistemas en Tiempo Real.

6. REFERENCIAS

[AHU98] Sanjay P. Ahuja, "COMNET III: A Network simulation Laboratory Environment For A Corse In Communications Networks", Proceedings of the Frontiers in Education Conference, 1998, Tempe, Arizona.

[ARM96] Armstrong, Joe; Virding, Robert; Wikström, Mike, "Concurrent Programming in Erlang", 2a. Edition, Prentice Hall, 1996.

[BAC98] Bacon, J., "Concurrent Systems", 2a. Edition, Addison Wesley, 1998.

[BDS88] D.F. Bacon, A. Dupuy, J. Schwartz y Y. Yemini. "Nest: A Network Simulation and Prototyping Tool", Proceedings of the 1988 Winter USENIX Conference, Mar. 1988.

[CAS98] Castro, Maurice, "Erlang in Real Time". http://www.serc.rmit.edu.au/~maurice/erlbk/pdf/main.pdf.

[CHA99] Chang, Xinjie, "Network Simulations With Opnet", Proceedings of the Winter Simulation Conference, Arlington, Virginia. 1999.

[COU01] Coulouris, George; Dollimore, Jean; Kinderberg, Tim, "Sistemas Distribuidos", Addison Wesley, 2001.

[HAR93] Harrison, P.G.; Patel, N.M.: "Performance Modelling of Communication Networks and Computer Architectures".1993.

[HAY84] Hayes, J.F.: "Modeling and Analysis of Computer Communication Networks",Plenum, 1984.

[KRA97] David Krahl, J. Steven Lamperti, "A Message-Based Discrete Event Simulation Architecture", Proceedings of the 1997 Winter Simulation Conference, Atlanta, Georgia.

[MAD98] Dhananjai Madhava Rao, Narayanan V. Thondugulam, Radharamanan Radhakrishnan, Philip A. Wilsey, "Unsynchronized Parallel Discrete Event Simulation", Proceedings of the 1998 Winter Simulation Conference, Washington, DC.

[ROB90] Robertazzi, T.G.:"Computer Networks and Systems: Queuing Therory and Performance Evaluation". Springer-Verlag. 1990.

7. CORRESPONDENCIA

Salvador Alcaraz Carrasco

Dpto. de Física y Arquitectura de Computadores

Universidad Miguel Hernández

Avda. del Ferrocarril, s/n 03202 Elche (Alicante)

Telf. 34 96 665 8495 Fax. 34 96 674 96 71

e-mail: s.alcaraz@umh.es