Está en la página 1de 15

1 Resumen

Se presenta un breve resumen del trabajo realizado, los conceptos clave serán
profundizados más adelante en el presente informe y se hará énfasis en las car-
acterı́sticas que consideramos clave durante el desarrollo de la actividad.
Se realizó una Red AdHoc móvil o MANET por sus siglas en inglés donde se
puede generar distintos tipos de tráfico con los protocolos DSDV, AODV y
OLSR esto a través de una región con cincuenta dispositivos o nodos UDP que
se desplazan siguiendo un modelo aleatorio.

2 Conceptos básicos
2.1 MANET
También llamada red AdHoc móvil, es una red de dispositivos conectado de
forma inalámbrica y que tiene la capacidad de auto configuración, esto quiere
decir que cada dispositivo tiene la capacidad de establecer una conexión con
cualquier otro dispositivo auto configurable y posteriormente manejar un pro-
ceso de comunicación o enrutamiento de paquetes. Adicionalmente cada uno de
estos dispositivos tiene la capacidad de desplazarse dentro de un área definida
por el alcance del dispositivo de red.

2.1.1 Caracterı́sticas de una red MANET


• Topologı́a dinámica: Los enlaces o conexiones entre dispositivos pueden
cambiar de forma aleatoria muy rápidamente.
• Enlaces: Cada enlace entre dos nodos puede tener direccionalidades difer-
entes (bidireccional, unidireccional), distintos anchos de banda, estabili-
dades y estabilidades distintas.
• Comportamiento autónomo: Cada nodo puede actuar como un host
o como un enrutador.
• Capacidad y potencia: Cada nodo puede tener distintos niveles de
transmisión o capacidad en memoria, esto dependiendo de las caracterı́sticas
fı́sicas del dispositivo o de las restricciones definidas a nivel de software.
• Autonomı́a: Las redes Ad Hoc requieren una menor intervención hu-
mana, ya que cualquier dispositivo puede entrar o salir de la red y tener
la capacidad de auto configurarse dependiendo de las necesidades.

• Seguridad: Las Redes MANET presentan un limitante en el aspecto


de seguridad ya que no existe un firewall centralizado, por lo que una
vulnerabilidad propia de un dispositivo en la red compromete en gran
medida toda la red, siendo complicado el controlar esto.

1
2.2 Protocolo UDP
User Datagram Protocol, es un protocolo que permite el envı́o de datagramas
a través de la red sin que se haya establecido previamente una conexión, ya
que el propio datagrama incorpora suficiente información de direccionamiento
en su cabecera. Tampoco tiene confirmación ni control de flujo, por lo que los
paquetes pueden adelantarse unos a otros; y tampoco se sabe si ha llegado cor-
rectamente, ya que no hay confirmación de entrega o recepción.
Por la naturaleza cambiante de la red MANET se eligió trabajar con el proto-
colo UDP ya que de esta forma se evita la congestión de la red con mensajes
de verificación y confirmación, lo cual trabajando con los protocolos de tipo
proactive y reactive permite un desempeño confiable de la red.

2.3 Agentes y Ambientes

La imagen anterior muestra la forma en que interactúan los agente con el am-
biente en el que se encuentran. Aquı́ tenemos que a través se sensores el agente
recibe las percepciones del ambiente, Luego de que cada agente ha realizado el
correcto procesamiento del conjunto de percepciones que obtuvo, por medio de
actuadores ejecuta acciones dentro de su ambiente, esto dependiendo del obje-
tivo propio del agente.
Cada uno de los elementos mencionados se describirá a continuación.

2.3.1 Agente
Los agentes inteligentes se definen como unidades autónomas que perciben y
actúan en un ambiente formal, dirigiendo sus acciones para alcanzar un objetivo.
Los agentes mapea de un historial de percepciones a un conjunto de acciones
f : P∗ → A

Donde P ∗ es el conjunto histórico de todas las percepciones y A es el conjunto


de acciones posibles.

2
2.3.2 Ambiente
EL ambiente es el lugar donde el agente vive y opera, este proporciona las
percepciones que el agente recibe a través de los sensores y es el lugar donde el
agente realiza sus acciones.

2.3.3 Percepciones
Es toda la información proveniente del ambiente que un agente puede capturar
y procesar

2.3.4 Actuadores
Son dispositivos capaces de realizar acciones que afectan el estado del agente o
el ambiente.

2.3.5 Acciones
Son todas las posibles actividades que un agente puede realizar que genera un
cambio sobre el agente o el ambiente en el que se encuentra.

3 Abstracciones de NS3
3.1 Nodo
Es una computadora o host a la cual se le pueden añadir ciertas funcionalidades,
como el stack de protocolos, aplicaciones o interfaces de red. Se relaciona con la
clase NodeContainer, la cual provee la abstracción de un arreglo de nodos. En
especı́fico, la abstracción se emplea ejecutando la clase Node, la cual, también
provee funciones para el manejo de los host en la simulación.

3.2 Canal
Permite la conexión entre nodos. Es una representación del medio fı́sico por el
cual fluyen los datos entre dos nodos. La clase que realiza esta abstracción es
Channel, la cual provee funciones para el manejo de la conexión entre los nodos.
Una clase especı́fica derivada de Channel y que se utiliza en la ejecución de la
red adhoc es PointToPointChannel.

3.3 Aplicación
Es un programa de software que corre sobre los nodos para realizar ciertas tareas
a nivel de usuario. Esta abstracción es implementada por la clase Application,
la cual provee funciones para el manejo de aplicaciones a nivel de usuario.

3
3.4 Dispositivos de Red
Para NS3, un dispositivo de red cubre el software y el hardware de una tarjeta
de red. Cuando un dispositivo de red se asocia a un nodo, el nodo está en la
capacidad de comunicarse con otros mediante un canal. A la clase que maneja
esta abstracción se la denomina NetDevice, la cual maneja las funciones para
comunicar los nodos a través de un canal. En NS3 se debe tener una asociación
correcta entre un tipo de canal y un tipo de dispositivo de red, pues una clase
especı́fica como PointToPointNetDevice sólo podrá asociarse a un canal de la
clase PointToPointChannel. La clase NetDeviceContainer permite crear un
arreglo de dispositivos de red.

3.5 TopologyHelper
Esta abstracción en NS3 facilita la asociación entre los distintos nodos, dispos-
itivos de red y canales. Clases especı́ficas utilizadas en este programa son, por
ejemplo: AodvHelper, OlsrHelper, DsdvHelper, DsrHelper, Ipv4ListRoutingHelper,
InternetStackHelper.

4 Principales bibliotecas utilizadas


4.1 Core-module
Biblioteca núcleo de NS3 que permite el uso de clases para la ejecución de
las simulaciones. Las clases y funciones del core son comunes para todos los
protocolos y nodos de red usados en los modelos. Las clases del módulo core
permiten: manejo de variables aleatorias como número de secuencia inicial,
manejo de los eventos en el tiempo de una simulación, uso de punteros, entre
otros. Las clases y funciones empleadas de esta biblioteca son:

• CommandLine: Clase que permite modificar valores por defecto medi-


ante la lı́nea de comandos, durante el inicio de la ejecución de la simulación.
• GlobalValue::Bind(”variable a cambiar”, ”estado lógico de la
variable”): Permite modificar el valor por defecto de una variable global,
en este caso se usará para calcular los checksums de los protocolos TCP e
IP.

• Simulator::Run(): Función global que ejecuta la simulación en NS3.


• Simulator::Stop(”tiempo en segundos”): Función global que detiene
la simulación luego que han transcurrido el número de segundos que se
indica en el argumento de la función.

• Simulator::Destroy(): Función global que permite liberar los recursos


comprometidos con la simulación como memoria, objetos creados, entre
otros.

4
4.2 Internet-module
Biblioteca que provee clases para que los nodos posean el stack UDP/IPv4. Las
clases usadas son:
• InternetStackHelper: Agrega el stack UDP/IP sobre los nodos ya ex-
istentes.
• Ipv4AddressHelper: Clase que permite establecer el direccionamiento
IPv4 sobre un enlace entre dos nodos.
• Ipv4InterfaceContainer: Clase que permite tener un contenedor entre
las interfaces de los nodos conectados y sus respectivas direcciones IPv4.

4.3 Mobility-model
Biblioteca que dispone de clases para modelos de movilidad entre nodos. La
clase a usar es RandomWaypointMobilityModel la cual hace que la posición
actual de un nodo siempre sea cambiante.

4.4 Applications
Biblioteca que proporciona una forma uniforme de iniciar y detener aplicaciones
Ns3. Dentro de esta podemos encontrar los siguientes modulos:
• BulkSendApplication: Este generador de tráfico simplemente envı́a
datos lo más rápido posible hasta MaxBytes o hasta que la aplicación
se detenga (si MaxBytes es cero).

• OnOffApplication: Este generador de tráfico sigue un patrón de en-


cendido/apagado: después de Application::StartApplication se llama, los
estados ”On” y ”Off” se alternan.
• PacketSink: Esta aplicación fue escrita para complementar OnOffAppli-
cation, pero es más general por lo que se seleccionó un nombre PacketSink.

• ThreeGppHttpClientServer: Este generador de tráfico simula el tráfico


de navegación web utilizando el protocolo de transferencia de hipertexto
(HTTP).

4.5 Wifi-module
Biblioteca que permite modelar un controlador de interfaz de red inalámbrica
basado en el estándar IEEE 802.11

4.6 Traffic Control-module


Biblioteca que tiene como objetivo introducir un equivalente de la infraestruc-
tura de Control de Tráfico de Linux en Ns3.

5
4.7 Spectrum-module
Biblioteca que tiene como objetivo proporcionar soporte para modelar los as-
pectos dependientes de la frecuencia de las comunicaciones en Ns3.

4.8 Stats-module
Biblioteca que incluye algunas caracterı́sticas útiles para facilitar la recolección
de datos de los experimentos.

4.9 Flow Monitor-module


Biblioteca cuyo objetivo es proporcionar un sistema flexible para medir el rendimiento
de los protocolos de red.

4.10 Opengym-module
OpenAI Gym es un conjunto de herramientas para el aprendizaje de refuerzo
(RL) ampliamente utilizado en la investigación.

5 Ns3 – Open AI Gym


5.1 ¿Qué es Open AI Gym?
Open AI Gym es conjunto de herramientas que utiliza técnicas de aprendizaje
automatico (Machine Learning) y soluciones basadas en aprendizaje por refuerzo
(Reinforcement Learning).

El objetivo principal de esta herramienta es proporcionar una interfaz capaz


de permitir el acceso al estado y la ejecución de las acciones de un entorno, el
cual es independiente y no se define completamente dentro de la simulación.

Para poder conectar el simulador Ns3 y la herramienta Open AI Gym se uso


el middleware ns3-gym, el cual se encarga de transferir el estado y control
entre el entorno de simulación y el Gym.

6
El middleware esta compuesto por dos partes el Environment Gateway y Proxy
de Entorno.
• Environment Gateway: Este se encuentra en el interior del simulador
y es responsable de reunir datos numéricos estructurados y la codificación
de las acciones recibidas del medio ambiente.

• Environment Proxy: Recibe el estado del entorno y exponerlo a un


agente a través de la API del gimnasio pitónico.
Para poder configurar el ambiente de Ns3 con la herramienta de Open AI Gym
es es necesario instanciar penGymGateway e implementar sus funciones de de-
volución GetObservationSpace(), GetActionSpace(), GetObservation(), GetRe-
ward(), GetGameOver() y GetExtraInfo() las cuales deben estar registradas en
el objeto del Gateway.

7
El proxy del Gateway se encuentra en el middleware el cual se encuentra dentro
de la clase Ns3GymEnv que hereda de la clase generica Gym Environment. Este
envia llamadas de función de Open AI Gym a una puerta de enlace a través de
un socket ZMQ.

5.2 Integración de Ns3 con Open AI Gym


Para la integración de Ns3 con Open AI Gym se utilizó desarrollo una her-
rmamienta llamada Ns3-gym, esta herramienta esta dividida en dos procesos de
comunicación.
• Ns3: Este proceso está desarrollado en C++ y se encarga de simular la
red.
• Open AI Gym: Este proceso está desarrollado en Python y se encarga
del aprendizaje automático de la red.
La principal motivación de hacer esta división se debe a que durante el proceso
de aprendizaje es necesario que un agente OpenAI Gym mantenga su estado
(Los conocimientos adquiridos) a través de múltiples ejecuciones de simulación
y tener estos dos procesos por separados facilita el cumplimiento de este requi-
sito.

8
Ademas esta estructura permite ejecutar multiples instancias de Ns3 en par-
alelo lo cual permite aplicar técnicas de AC3 (Asynchronous Advantage Actor
Critic), que actualmente el algoritmo de Inteligencia Artificial más potente ac-
tualmente el cual utiliza Deep Convolutional Q-Learning. Esta técnica permite
un aprendizaje más eficiente ya que utiliza múltiples agentes interactuando con
sus propias copias del entorno.

6 Simulación
Para un mayor entendimiento del funcionamiento de la simulación revise la de-
scripción del código. Se debe tener en cuenta que la ejecución se realiza en
un tiempo de 10 segundos mediante consola, puesto que cuando se utiliza el
complemento visualizer es permitido aumentar este tiempo. La ejecución de
la simulación se realiza utilizando 25 nodos, los cuales estarán en constante
movimiento y comunicación entre si. Los nodos se mueven a una velocidad de
20 m/s (sin tiempo de pausa) separados inicialmente por una distancia de 45
m entre cada uno. Finalmente, la información distribuida por la red esta carac-
terizada por el numero de paquetes que cada nodo puede entregar por segundo:
1000 paquetes/s y el tamaño de carga máxima que soporta la red por paquete:
1500 bytes.

La ejecución de la red mediante consola se distribuye en el agente, que es todo el


código implementado en c++, que cuenta tanto con la aplicación de la red, como
del complemento de aprendizaje gym. Aparte, lo ejecutado mediante la imple-
mentación en python del ambiente, los cuales se están comunicando mediante
el puerto 5555.
• En la ejecución mediante consola del agente se puede observar, entre otros,
los parámetros mencionados anteriormente:

• Luego, se presentan las posiciones iniciales de cada nodo ubicados en una


matriz de 5x5:

9
• ahora, el inicio de la simulación necesita de la ejecución del ambiente, acá
se muestra como se inicializa los espacios de observación, acciones y espera
a la ejecución del gym.

10
• Por lo tanto tendremos que ejecutar el código de python, el cual se encarga
se encarga de avanzar las iteraciones de aprendizaje durante cada uno de
los 100 pasos establecidos.

• Luego de su ejecución, el ambiente y el agente se comunican entre si para


realizar el aprendizaje, donde se puede observar el arreglo definido para el
espacio de observación, el definido para las acciones, además de de saber
si las condiciones de Game over se han cumplido o no, finalmente, en el
ambiente podemos identificar también el estado de la ejecución.

11
• Ahora, mediante el uso de ns-3-pyviz visualizer podemos tener un acer-
camiento al comportamiento real de la red MANET desde donde com-
prender con facilidad que significa una red ad hoc y en qué afecta que los
nodos se mantengan en movimiento. Para lo cual presentamos primero
unas capturas de diferentes instantes del tiempo de ejecución, para especi-
ficar cómo se mueven los nodos constantemente.

12
• En segunda instancia, como se ha mencionado anteriormente, una red
MANET, es en esencia una red adhoc donde sus nodos se encuentran
en movimiento, lo cual se puede observar en los capturas anteriores, por
lo tanto ahora presentamos como es el movimiento de los enlaces en la
red, mediante los cuales se comparte el internet y se envı́an y reciben
paquetes, permitiéndole ası́ al simulador encontrar las conexiones posibles
entre todos sus nodos.

• Finalmente se establece el funcionamiento de Gym, al permitirle a la red


establecer cuales son las conexiones estables que deberı́a mantener, a con-
tinuación se puede observar como al paso de mensajes la red reconoce el
camino indicado y genera un enlace con el nodo siguiente permitiendo un
flujo constante de información.

13
14
7 Referencias
• Redes Wireless Ad-Hoc. (s.f.). Recuperado de:
http://bibing.us.es/proyectos/abreproy/11306/fichero/TEORIA%252F08+-
+Capitulo+3.pdf.
• Hidalgo Pastor, F. J. (s.f.). Estudio de viabilidad de la utilización de redes
inalámbricas Ad-Hoc en edificios departamentales. Recuperado de:
https://riunet.upv.es/bitstream/handle/10251/13183/TesinaMaster Fco-
JavierHidalgo.pdf?sequence=1.
• Abstracciones de NS3. (s.f.). Recuperado de:
https://www.nsnam.org/docs/release/3.30/tutorial/ns-3-tutorial.pdf.
• OpenAI. (s.f.). OpenAI Gym documentation. Recuperado de:
https:gym.openai.com
• Gawlowicz P, Zubow A. ns-3 meets OpenAI Gym: The Playground for
Machine Learning in Networking Research. Recuperado de:
http://www.tkn.tu-berlin.de/fileadmin/fg112/Papers/2019/
gawlowicz19 mswim.pdf

• Agentes inteligente y Ambientes. Recuperado de:


http://aima.eecs.berkeley.edu/slides-pdf/chapter02.pdf
• NS3 Modulos. Recuperado de: https://www.nsnam.org/doxygen/modules.html