|
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
|