• No se han encontrado resultados

CAPÍTULO 2. ESCENARIO DE SIMULACIÓN

2.4 Módulos y modelos ns-3

El ns-3 es un simulador de eventos discretos, lo que significa que enlaza cada evento con su tiempo de ejecución y la simulación consta de la ejecución de los eventos en el orden temporal del tiempo de simulación. Los eventos pueden causar que se modifique el tiempo de ejecución de un evento futuro y pueden generar nuevos eventos.

La simulación comienza al llamar la función Simulator::Run() y finaliza cuando se acaban los eventos en cola o cuando se llama explícitamente la función Simulator::Stop(simTime). La variable double simTime = 100.0; declara el tiempo en el que debe finalizar la simulación en segundos. Se debe indicar un tiempo final en caso de existir eventos autosustentables que generen indefinidamente nuevos eventos en el simulador.

La simulación en ns-3 consta de un programa main en C++. En dicho programa se incluyen todos los headers de las clases que se van a utilizar en la simulación. En estos headers

están implementados los protocolos de redes y las funcionalidades de las que está compuesto el sistema. El software ns-3 está organizado en diferentes módulos que se organizan como librerías de software individuales correspondientes a determinadas redes o aspectos específicos de una simulación. Los programas ns-3 pueden incluir los módulos que necesiten para realizar la simulación. Los modelos ns-3 son representaciones abstractas de objetos reales como protocolos, dispositivos, etc. Un módulo ns-3 puede contener varios modelos. Los módulos se encuentran en la carpeta ns-allinone-3.22/ns-3.22/src. Cada módulo contiene dentro la colección de modelos que utiliza.

33 En el presente trabajo se utiliza el módulo lte. Este contiene numerosos modelos que representan el comportamiento del stack de protocolos LTE: PHY, MAC, RLC, PDCP, RRC, el control de potencia, los UE y eNB, entre otros [50].

El módulo mobility incluye los modelos de movilidad que se implementan en los UE y es utilizado en la simulación. Se divide en la subclases GaussMarkov, Hierarchical, ConstantPosition, ConstantVelocity, ConstantAcceleration, RandomDirection2D, RandomWalk2D, RandomWaypoint, SteadyStateRandomWaypoint y Waypoint. Se utiliza ConstantPosition en la simulación, pues los UE permanecen estáticos.

El módulo propagation es utilizado en el proyecto, este incluye los modelos de propagación en el espacio del sistema, entre los cuales se encuentran JakesPropagationLossModel, FixedRssLossModel, RandomPropagationLossModel, FriisPropagationLossModel, TwoRayGroundPropagationLossModel, LogDistancePropagationLossModel, ThreeLogDistancePropagationLossModel, NakagamiPropagationLossModel,

MatrixPropagationLossModel, RangePropagationLossModel y

OkumuraHataPropagationLossModel. De los modelos existentes se utiliza el modelo Friis para caracterizar el comportamiento radioeléctrico en la simulación con ns3::FriisSpectrumPropagationLossModel. La ecuación de Friis describe el comportamiento del espacio radioeléctrico. Su ecuación es:

𝑷𝒓𝒙 =𝑷𝒕𝒙 × 𝑮𝒕𝒙 × 𝑮𝒓𝒙 × 𝝀

𝟐

(𝟒𝝅𝒅)𝟐× 𝑳

donde Prx y Grx son la potencia y la ganancia de la antena de recepción Ptx y Gtx son la potencia y la ganancia de la antena de transmisión L pérdidas en el espacio libre

λ longitud de onda de la señal transmitida

d distancia entre la antena transmisora y receptora

El módulo antenna se compone de los modelos de antenas del software. Cuenta con los modelos CosineAntennaModel, ParabolicAntennaModel e IsotropicAntennaModel. IsotropicAntennaModel es la utilizada y crea una antena isotrópica con ganancia de 0 dB en todas direcciones.

El módulo network incorpora el comportamiento de los paquetes en la red caracterizando su conformación con los encabezados, fragmentación, defragmentación y manejo de buffers. También incorpora los modelos de error de los paquetes como son RateErrorModel, ListErrorModel, ReceiveListErrorModel, BurstErrorModel que ayudan al tratamiento de estos paquetes que transitan por la red. El módulo contiene los modelos Node, NetDevice, Channel y Application, de vital importancia para la modelación [51].

El modelo Node es la abstracción básica de un dispositivo de cómputo que se conecta a una red en ns-3. Se representa por la clase Node que provee métodos para manejar las representaciones de estos dispositivos en las simulaciones. A este nodo se le añaden funcionalidades como aplicaciones, stacks de protocolos y periféricos para que trabaje correctamente en la red.

34 Las siguientes líneas de código crean los 48 nodos UE y los 3 eNB en el programa de simulación y los sitúan en contenedores para trabajar con ellos de una manera más fácil en el resto del programa.

NodeContainer enbNodes; NodeContainer UeNodes1; NodeContainer UeNodes2; NodeContainer UeNodes3; enbNodes.Create (3); UeNodes1.Create (16); UeNodes2.Create (16); UeNodes3.Create (16);

En ns-3 para conectar un nodo a la red se le añade el modelo NetDevice. Este dispositivo de red implementa las funciones de hardware y software (drivers) correspondientes para que el nodo pueda comunicarse con otros nodos a través del objeto Channel que representa el canal de comunicaciones. Un nodo puede estar conectado a más de un canal de comunicaciones por varios NetDevices. Este modelo está representado por la clase NetDevice que provee métodos para administrar las conexiones de los objetos Node y Channel.

En las siguientes líneas de código se crean los NetDevices y se instalan en los nodos UE y eNB.

NetDeviceContainer enbDevs; NetDeviceContainer UeDevs1; NetDeviceContainer UeDevs2; NetDeviceContainer UeDevs3;

UeDevs1 = lteHelper->InstallUeDevice (UeNodes1); UeDevs2 = lteHelper->InstallUeDevice (UeNodes2); UeDevs3 = lteHelper->InstallUeDevice (UeNodes3); lteHelper->InstallEnbDevice (enbNodes.Get (0)); lteHelper->InstallEnbDevice (enbNodes.Get (1)); lteHelper->InstallEnbDevice (enbNodes.Get (2));

El modelo Channel representa en ns-3 el canal de comunicaciones, representado por la clase Channel. Esta clase provee los métodos para administrar los objetos de las subredes de comunicación y conectar los nodos a ellos.

El modelo Application en ns-3 es la abstracción de un programa que genera una actividad que debe simularse. En ns-3 se carece del concepto de sistema operativo por lo que no existen aplicaciones de sistema ejecutándose de forma subyacente en los nodos y todas las

35 tareas que generan las aplicaciones se ejecutan como si fueran aplicaciones de usuario, con un fin específico. La clase Application brinda los métodos para administrar la actividad que generan las aplicaciones en la capa de usuario en las simulaciones.

Documento similar