Forwarding (DPF) y su implementación en INET. ... 126 5.3.3.3. Problemas de PIM‐SM‐DPF en escenarios inter‐dominio ... 129
5.3.3.4. Solución al desdoblamiento de árboles y convergencia de ramas:
Túneles unicast inter‐dominio ... 131 5.4. Modelado de escenarios para simulación ... 136 5.4.1. Modelado de topologías inter‐dominio ... 137 5.4.2. Parametrización del modelo ... 139 5.4.2.1. Buffers de los routers ... 139 5.4.2.2. Retardo de proceso en los routers ... 140 5.4.3. Generación de escenarios mediante ReaSE ... 141 5.4.3.1. Selección de parámetros de generación ... 142 5.4.3.2. Generación de tráfico ... 143 5.4.4. Casos de simulación ... 143 5.4.4.1. Parámetros de configuración ... 143 5.4.4.2. Casos de simulación unicast ... 145 5.4.4.3. Casos de simulación multicast ... 145
5.1.
Introducción
El trabajo que se recoge en este capítulo consta de varias partes. En primer lugar y una vez se ha decidido realizar simulaciones con PIM‐SM sobre escenarios
inter‐dominio, se ha seleccionado la herramienta de simulación de redes OMNeT++
tras realizar una comparativa de las opciones de software disponibles. Una vez hecho esto se ha modelado PIM‐SM en base a la definición original del protocolo en IETF. El
modelado funcional y estructural del protocolo se ha traducido a un modelo
estructural más refinado de clases, módulos y objetos dentro del modelo de
simulación de OMNeT++. Para realizar simulaciones ha sido necesario modelar a su vez
los escenarios de simulación. Se han establecido rangos de parámetros de
configuración y elaborado tablas resumen con los valores usados en las instancias de
ejecución. Con los escenarios generados y configurados se han ejecutados
simulaciones, de las que se han extraído conclusiones acerca de la operación de PIM‐ SM en escenarios inter‐dominio.
Al llegar a este punto del estudio hay que aclarar un aspecto de enfoque. Tal y como se ha visto al realizar el estudio detallado de los protocolos de encaminamiento
multicast, PIM‐SM funciona correctamente en escenarios completos inter‐dominio.
Estos escenarios cuentan con una serie de características específicas que no se dan en
los dominios cerrados. Estas características imponen una serie de capacidades
adicionales para la correcta operación de PIM‐SM y en general de protocolos multicast
que se basen para funcionar en la información contenida en las tablas de
encaminamiento unicast. Las capacidades adicionales son cubiertas a través de
protocolos de soporte, que se encargan de recopilar información topológica y distribuir rutas entre los dominios, manteniendo bases de datos multicast o MRIBs (multicast
routing information base). No obstante, la ejecución de protocolos adicionales y el llenado y mantenimiento de la información de rutas en las MRIBs conlleva una carga
adicional de proceso y de almacenamiento. Simultáneamente, es necesaria
información lo suficientemente detallada acerca de la topología de las redes
involucradas en las sesiones multicast para permitir un procesado correcto de las rutas
multicast. Esta información no la suelen exponer al exterior de sus redes los
operadores de red.
Por los aspectos descritos y para contribuir a la simplificación de la operación de PIM‐SM en escenarios inter‐dominio, a la vez que se elimina la dependencia de
información topológica detallada, se han realizado modificaciones sobre PIM‐SM
estándar para solventar las siguientes características de escenarios inter‐dominio sin emplear protocolos de soporte:
• Aislamiento de dominios: el mecanismo de exportación selectiva de prefijos de red en los dominios de tránsito hace que se generen “muros” entre diversas zonas de la red inter‐dominio para uno u otro sentido de la comunicación a
través de determinados dominios de tránsito. Esto genera el siguiente
problema.
• Rutas asimétricas para conectar puntos situados en dominios diferentes: dos puntos fijos en dominios distintos pueden tener rutas en el espacio inter‐ dominio que circulen por dominios separados para el sentido de ida y el de vuelta de los paquetes, por lo que el algoritmo de creación de árboles de PIM‐ SM basado en RFP fallará ante esta situación.
• Rutas múltiples: paralelamente a las rutas asimétricas, entre un par de puntos
de dominios diferentes puede haber en un mismo sentido de encaminamiento
múltiples caminos alternativos simultáneos para ir del punto origen al punto destino.
Se hace hincapié en que estas particularidades de las redes inter‐dominio se pueden cubrir empleando protocolos de soporte junto a PIM‐SM, y las modificaciones realizadas en este proyecto tienen como objetivo simplificar el modelo general de operación inter‐dominio y descargar la red en empleo de recursos de proceso y
almacenamiento.
En el siguiente apartado se presenta una introducción general a las
herramientas de simulación de eventos discretos, justificando la selección de la
herramienta OMNeT++ para el modelado de protocolos y simulaciones de este
proyecto. Adicionalmente se describen herramientas de apoyo para la construcción de escenarios y un framework específico para la simulación de protocolos de Internet.
5.2.
Herramienta de simulación OMNeT++
5.2.1. Simulación de eventos discretos
Las herramientas de simulación de eventos discretos, [46], son programas
informáticos que permiten simular la operación de un sistema mediante la
representación de ésta como una secuencia de eventos cronológicamente ordenados.
Cada evento ocurre en un instante de tiempo y conlleva un cambio en el estado del sistema. La transición entre eventos ocurre de forma instantánea. Entre cada par de eventos consecutivos, el tiempo de simulación salta al comienzo del evento siguiente, se actualiza el estado de las variables y vuelve a ocurrir un salto al instante (fijado previamente) de comienzo del evento próximo. Estos saltos en el tiempo de simulación son los que implican la denominación como “discretas” de estas herramientas.
Para llevar a cabo su cometido estas herramientas cuentan con los siguientes
componentes:
o Variables de estado que definen la representación del sistema en cada
o Lógica de operación para la modificación del estado en función de los eventos.
o Un reloj que permite la planificación de la simulación, en las unidades de tiempo que se definan, y los saltos instantáneos entre eventos consecutivos.
o Una lista de eventos de simulación con al menos un elemento, el evento
siguiente, definido por su instante de tiempo de inicio y tipo de evento.
o Generadores de números aleatorios que permitan tener un comportamiento
diferente en módulos similares dentro del sistema, como tiempos aleatorios en el inicio de eventos.
o Módulos para la recolección de estadísticas y resultados obtenidos durante las
simulaciones.
o Condición de finalización de la simulación, definida por diversos mecanismos,
ya sea tiempo de simulación, tiempo de procesador, número de eventos
procesados, etc.
Los simuladores de eventos discretos tienen distintos campos de aplicación:
• Optimización del rendimiento en los procesos de una organización: estudiando
las rutas de la información, viendo donde se generan cuellos de botella y verificando la mejora de los procesos ante cambios en la distribución y modificación de dichas rutas.
• Aplicaciones hospitalarias: mediante el modelado de un sistema que tenga en
cuenta las especialidades quirúrgicas, tiempos de espera, afluencia de
pacientes, distribución de salas de operación, variaciones en el tiempo de atención por paciente, etc.
• Evaluación de inversiones de capital: se realiza un modelado del mercado en el que se va a invertir, se analiza y prueba el modelo contra datos históricos
existentes. Se valida el modelo e introducen cambios para simular el
comportamiento ante distintas opciones.
• Simulación de redes: permite modelar el comportamiento de una red
calculando las interacciones entre las distintas entidades de red (hosts, routers,
enlaces, paquetes, protocolos, etc.), usando fórmulas matemáticas que
describen el comportamiento de cada entidad.
5.2.2. Herramientas de simulación de redes
Dentro de las herramientas de simulación de eventos discretos existe una
especificidad para simular sistemas dentro de sus distintos campos de aplicación. Las
dedicadas a la simulación de redes permiten evaluar el comportamiento de redes
informáticas y de telecomunicaciones. Esto permite estudiar el comportamiento
dinámico de una red frente a la variación de distintos parámetros, como la carga de tráfico, usuarios, puntos problemáticos, cuellos de botella, etc. Asimismo, se puede estudiar cómo afecta a una red la introducción de un nuevo servicio, modificaciones de
uno existente, alteración de la estructura de la red con incorporación o sustitución de elementos físicos, viendo cómo evolucionan las prestaciones de la red en el proceso.
Con estas herramientas se pueden evaluar protocolos de red existentes y crear, cuando la herramienta lo permite, modificaciones y nuevos protocolos, de modo que se puede estudiar la variación de parámetros de eficiencia de red ante las nuevas condiciones. Esta es la funcionalidad que se va a aprovechar para el modelado y análisis del protocolo PIM‐SM y realización de modificaciones.
Existen diversas alternativas en cuanto a simuladores de redes basados en
eventos discretos, tanto gratuitas como de pago. En [47] se encuentra un análisis de algunas de ellas. A continuación se listan los simuladores analizados en el citado documento junto con sus características principales:
OPNET
o Cuenta con multitud de librerías y miles de módulos para todo tipo de equipos
y enlaces, con posibilidad de crear nuevos en lenguaje C.
o Es un programa comercial, pero gratuito para las universidades. o Funciona en sistemas Windows, Linux y Solaris.
o Alto grado de realismo
o Es lento simulando
o Para muchas aplicaciones queda grande, es demasiado profesional
o No es muy flexible, está más orientado a simular casos concretos y prácticos.
OMNeT++
o Contiene los módulos básicos para los protocolos más habituales
o Es muy extensible mediante la adición de módulos en C++, la creación de
nuevos módulos y su integración es más sencilla que en otros simuladores.
o Se distribuye bajo Licencia Pública Académica.
o Hay versiones para Linux, Windows y Mac
o Las simulaciones son rápidas
o El grado de realismo es inferior a otras herramientas
o Tiene pocos modelos de equipos y enlaces
NS‐2
o Contiene multitud de módulos que permiten definir escenarios basados en la
pila TCP/IP, MPLS, redes inalámbricas, redes de satélite, unicast y multicast, etc.
o Los escenarios se definen mediante scripts en oTCL.
o Es de código abierto, se incorporan continuamente nuevos módulos y
funcionalidades, estando en desarrollo la versión NS‐3.
o Los objetos y módulos están programados en C++, es muy extensible.
o Es ampliamente usado en grupos de investigación y existe muchísima
documentación.
Durante la elaboración de este proyecto se encontraban disponibles para su uso las tres herramientas listadas. De entre las tres opciones, se escogió OMNeT++,
fundamentalmente por: su gran extensibilidad mediante la programación de nuevos
módulos en C++; su distribución bajo licencia pública de uso, que permite aportes de terceros no sólo dentro del ámbito universitario; y su soporte multiplataforma y velocidad de ejecución de las simulaciones. A esto hay que añadir el concepto de simulador base que se detalla en el siguiente apartado, el cual permite que OMNeT++ sea un núcleo básico sobre el que se añaden marcos de trabajo orientados a áreas específicas de simulación, lo que permite contrastar resultados entre distintas áreas y
hacer evaluaciones cruzadas.
5.2.3. Simulador de redes OMNeT++
El simulador de eventos discretos OMNeT++, [48], está disponible desde 1997.
La concepción de OMNeT++ fue implementar un simulador genérico que pudiera
extenderse modularmente para hacerlo específico para áreas como redes de
comunicaciones, sistemas multiprocesador y sistemas distribuidos. Este entorno ha
sido usado desde entonces probando su eficacia para simular colas en redes de
comunicaciones, redes ad‐hoc, inalámbricas, peer‐to‐peer, redes de conmutación
óptica, redes de almacenamiento distribuido, etc.
Lejos de ser punto en contra, es un punto a favor el hecho de que OMNeT sea un simulador que ofrece un marco genérico para distintas áreas de simulación. Se encuentran disponibles el código fuente y documentación, así como foros y listas de correo para la colaboración entre usuarios. Esto permite extender el simulador base mediante la adición de marcos de trabajo o frameworks, que añaden especificidad para un área concreta de simulación. Los frameworks son en sí mismos extensibles mediante la adición de nuevos módulos simples.
El diseño de OMNeT++ se basa en los siguientes puntos:
• Permitir simulaciones a gran escala, mediante modelos jerárquicos construidos
con componentes reutilizables.
• Una interfaz gráfica orientada a la depuración y verificación de los modelos
implementados.
• Estructura modular que permite extensibilidad y personalización, así como
inclusión de componentes en aplicaciones más grandes de planificación de red.
• Interfaces de datos abiertas, generando ficheros de definición y de resultados
fácilmente interpretables y procesables por herramientas genéricas.
• Proveer un entorno de desarrollo integrado que facilita el desarrollo de
modelos y el análisis de resultados.
La base del entorno de simulación es el núcleo o kernel. En éste se encuentran programadas las funciones generales que permiten la extensión modular del programa para la simulación en áreas específicas mediante herencia e interfaces en C++. Dentro
de cada extensión o framework específico se pueden definir los modelos de
simulación.
La definición de modelos en OMNeT se lleva a cabo de forma modular
jerárquica. Existe un módulo principal, por ejemplo el módulo de red, que engloba todos los elementos y relaciones existentes entre ellos. Debajo de este nivel, están los
módulos compuestos, que integran sistemas y elementos físicos de la red, como
pueden ser routers, servidores Web, hosts de usuarios finales, enlaces inalámbricos, etc. Y finalmente, en el nivel más bajo de la jerarquía se encuentran los módulos
simples. Éstos implementan funciones concretas, como interfaces de red (punto‐a‐
punto, Ethernet,…), protocolos específicos (TCP, FTP,…), o canales para la conexión entre módulos (enlaces de fibra, enlaces inalámbricos,…). Los módulos simples son la base de los modelos definidos en OMNeT++, y están implementados en lenguaje C++. La estructura modular descrita puede observarse en la figura 5.2‐1.
Fig. 5.2‐1 Estructura modular de los modelos de OMNeT++. Fuente [48].
Por otro lado, sólo se implementan en C++ los módulos simples. La definición de los modelos de red y módulos compuestos se realiza mediante un lenguaje especial
desarrollado para esta función, el lenguaje NED (Network Description Language).
Mediante el lenguaje NED se establece la jerarquía modular, la construcción de
módulos compuestos y la asociación y conexión entre los elementos del modelo, así como la definición de los canales de comunicación e interfaces de entrada y salida.
Una vez se tienen definidos los módulos a usar, ya sean módulos existentes previamente o creados para tal fin, se pasa definir topologías concretas sobre las que realizar una configuración de elementos y módulos implicados. Una vez decididos los rangos de parámetros, se crea un fichero inicialización de topología, por defecto “OMNETPP.INI”, que contiene los valores concretos de cada parámetro a usar en cada
experimento y conjunto de medidas. Se crean instancias concretas de ejecución,
llamadas “RUN ‘X’”, y se ejecuta la simulación.
A lo largo de la simulación se van produciendo una serie de eventos
programados en el tiempo dentro de la cola de espera principal. Estos eventos pueden
implementar bien mensajes entre los módulos simples o bien automensajes para
simular temporizadores. La transmisión de mensajes se puede realizar entre módulos directamente conectados, a través las interfaces directas entre módulos simples o los
canales de comunicación entre objetos y módulos compuestos. También se pueden transmitir mensajes directamente entre un par de módulos cualquiera en caso de ser necesario hacer llamadas por ejemplo pasando varios niveles de jerarquía.
Durante cada ejecución de la simulación se obtienen resultados de salida de los distintos módulos así como colecciones de estadísticas, que se van almacenando en
ficheros escalares y vectoriales para su posterior procesado y visualización en
herramientas gráficas. Además el proceso de ejecución permite elegir entre una
interfaz textual muy rápida o una interfaz gráfica más lenta pero especialmente
diseñada para la depuración, localización y corrección de fallos.
La capacidad de extensión y adición de nuevos módulos es la que se ha aprovechado para integrar la simulación del protocolo PIM‐SM y sus modificaciones de operación. Es la razón fundamental de la elección de este simulador como herramienta para el desarrollo del estudio. En la simulación y análisis de PIM‐SM se ha realizado
mediante la extensión de módulos del framework INET, [49]. La construcción de
topologías se ha llevado a cabo usando la herramienta auxiliar ReaSE. Se pasa a describir ambos en el siguiente apartado.
5.2.4. Framework INET y herramienta auxiliar ReaSE
Estas dos herramientas son la base del trabajo presentado en lo que resta de memoria. Para empezar se muestra la figura 5.2‐2 con la estructura de componentes
que interaccionan en OMNeT++3.3, INET Framework y ReaSE. A continuación se
explica su significado.
Fig. 5.2‐2 Estructura de interrelación de OMNeT++3.3, INET y ReaSE
Las clases básicas que sirven de apoyo y definen el sistema de funcionamiento de todo el conjunto son las provistas por el núcleo (kernel) de OMNeT++3.3. Dentro de OMNeT se instalan el Framework INET para trabajar con la pila TCP/IP y ReaSE para la generación de escenarios realistas con estructura de las redes de Internet.
Por defecto INET sólo puede trabajar con jerarquías de red de un solo nivel y
encaminamiento plano. ReaSE genera topologías jerárquicas y usa encaminamiento y
asignación de direcciones igualmente jerárquico. Para que ambas herramientas sean
interoperables, ReaSE aplica un parche a INET, que modifica sus características para
permitir las operaciones mencionadas con redes jerárquicas. Por otra parte ReaSE
permite generar independientemente de OMNeT topologías realistas con múltiples
dominios, varios niveles de jerarquía a nivel de routers y adición de hosts finales y
servidores. Estas topologías tienen un formato compatible con la definición de
topologías .ned, por lo que se pueden integrar directamente en instancias de modelos de INET y ser modificadas para añadir los elementos nuevos creados y adaptarlas a las modificaciones del modelo base.
5.2.4.1. Framework INET
El framework INET, [49], es un paquete de extensión para OMNeT++ que permite simular redes de telecomunicaciones. Al igual que el resto de extensiones de OMNeT++, es de código abierto, y sigue la filosofía de diseño de OMNeT++ en la que se desarrollan paquetes específicos para áreas de simulación como extensiones sobre el
núcleo base. Este framework contiene modelos de simulación para varios protocolos
de Internet, entre ellos UDP, TCP, SCTP, IP, Ethernet, PPP, IEEE 802.11, MPLS, OSPF, etc. En principio, se puede definir e implantar cualquier pila de protocolos, usando tanto IPv4 como IPv6, pero la implementación del protocolo IPv6 no está completa en el momento de elaboración de este documento.
La definición de escenarios de simulación se realiza con el mismo lenguaje NED que usa el simulador base OMNeT++. Se pueden crear tantos niveles de jerarquía como se desee entre módulos, pudiendo crearse escenarios de alta complejidad. No
obstante, la velocidad de ejecución de la simulación decrece enormemente conforme
se aumenta el número de nodos de la red.
Los mensajes entre módulos, la definición de conexiones y canales de
comunicación son idénticos a la que provee OMNeT++, siendo estos elementos
modificaciones de los módulos base mediante herencia para implementar variedad de
alternativas. Los canales definidos incluyen conexiones punto a punto, conexiones
Ethernet, enlaces ópticos y enlaces inalámbricos.
Los protocolos y módulos simples son integrados en módulos compuestos para
obtener entidades de red de alto nivel, como son servidores Web, conmutadores,
tarjetas de red, puntos de acceso inalámbrico, etc. Los módulos compuestos se pueden reutilizar para distintos tipos de escenarios, por ejemplo un servidor Web puede usarse en redes cableadas o inalámbricas.
Los tipos de red que se pueden definir incluyen redes cableadas, como redes
TCP/IP, redes MPLS, redes ópticas o redes inalámbricas 802.11. Las políticas de