El simulador ns3 es un simulador de eventos discretos utilizado ampliamente en investigación y en docencia.
Se pueden desarrollar todo tipo de simulaciones relativas a tecnologías, protocolos y aplicaciones atendiendo a la configuración que hagamos en un archivo C++.
Los elementos básicos de una simulación vienen representados por clases c++ que simulan los elementos básicos hardware/software de un escenario real, son los siguientes:
- Node: representa un dispositivo (computador, servidor, teléfono móvil, portátil, sensor, cámara, etc.)
- Channel: representa un canal de comunicación y su comportamiento (cable, inalámbrico, punto a punto, etc.)
- Net Device : Dispositivo de red, es una tarjeta de red inalámbrica (e.j wifi) o cableada (e.j ethernet)
- Application: es una aplicación software. Desde el punto de vista de una simulación es un generador/consumidor
de paquetes de información. Un servidor web, un navegador, etc. son ejemplos de aplicaciones - Protocol stack: es una pila de protocolos de comunicación. El mas conocido, la pila de protocolos TCP/IP que hace posible la comunicación en Internet
- El simulador propiamente dicho: se encarga de lanzar y gestionar la simulación.
Con estos cinco elementos podemos simular cualquier escenario de red. En nuestro archivo de C++ debemos tener estos elementos configurados apropiadamente para simular un escenario real.
Cuando analizemos un escenario ns3 veremos que en C++ vamos realizando los mismos pasos que haríamos en un escenario real.
- Creamos los objetos C++ que representen a los nodos, el canal, la aplicación y la pila de protocolos que necesitemos
- A los nodos, les «instalamos» los dispositivos de red (Net Devices)
- «Conectamos» el channel a los dispositivos de red
- Instalamos en cada nodo la pila de protocolos y la configuramos apropiadamente. En TCP/IP le damos la dirección IP, máscara de subred, etc.
- Instalamos en cada nodo la aplicación y la configuramos
- Configuramos y lanzamos la simulación
Hay elementos secundarios que nos facilitan la labor de gestionar simulaciones complejas (argumentos, log, configuración de muchos elementos) con
muchos nodos y/o aplicaciones.