SIMULACIÓN DE PROTOCOLOS DE ENRUTAMIENTO
PARA REDES MÓVILES AD-HOC MEDIANTE
HERRRAMIENTA DE SIMULACIÓN NS-3
INSTALACIÓN DE NS-3
Simulación de Redes
Introducción a la herramienta
•
NS-3 es un simulador de redes de eventos discretos•
Cada evento ocurre en un instante determinado y modifica el estado del sistema•
La simulación no recorre de forma progresiva el tiempo (simulador de tiempo continuo), sino que va saltando en el tiempo de un evento al evento siguiente•
Las simulaciones son más rápidas•
Aplicaciones: usos en investigación y educación•
Software abierto, de uso público, desarrollado en común a través de las contribuciones de sus usuarios•
El Proyecto ns-3 arrancó su andadura en 2006•
Trata de sintonizar con las líneas de investigación más actuales en materia de redes de comunicacionesSimulación de Redes
Loja - 2014 3
Introducción a la herramienta
•
Objetivo: construcción de un núcleo de simulación sólido (validado), sencillo de depurar y bien documentado (relativamente)•
Facilita la extracción de los resultados de simulación (trazas) para su posterior análisis•
Sistema operativo: Linux (nativo o máquina virtual)•
El núcleo de simulación soporta redes estructuradas sobre el modelo IP y también no basadas en IP:•
Wi-Fi•
WiMAX•
LTE•
Redes de sensores, redes cableadas TCP/IP, aplicaciones, etc.•
Ejemplo de su evolución:•
Agosto 2013 ns-3.18•
Diciembre 2013 ns-3.19Introducción a la herramienta
Compilación y ensamblado
•
Se realiza mediante WAF para configurar, compilar, limpiar, instalar y desinstalar programas.•
Está desarrollado en el lenguaje PYTHON (instalar antes de su uso)•
Se ejecuta desde línea de comandos: ./waf antenna aodv applications bridge buildings config-store core csma csma-layoutdsdv dsr emu energy fd-net-device flow-monitor
internet lte mesh mobility mpi netanim (no Python)
network nix-vector-routing olsr point-to-point point-to-point-layout propagation
sixlowpan spectrum stats tap-bridge test (no Python) topology-read
Simulación de Redes
Loja - 2014 5
Introducción a la herramienta
Los scripts se pueden desarrollar principalmente en dos lenguajes:
•
CPP•
PYTHONUn ejemplo de ejecución de un programa en ns3 es: ./waf --run scratch/scratch-simulator
El ejecutable se encuentra en el directorio build, si se quiere ejecutar directamente sería necesario actualizar enlaces simbólicos (sudo ln…).
El fichero scratch-simulator.cc es:
Cabecera típica de C
Programa principal Muestra mensaje en pantalla
Utilizado para depuración
Simulación de Redes
Prerrequisitos
Instalación de C++$
sudo apt-get install gcc g++ python¿Instalar estos paquetes sin verificación [s/N]? → y
Instalación de Python$
sudo apt-get install gcc g++ python python-dev
Instalación de Mercurial$
sudo apt-get install mercurial
Instalación de Bazaar$
sudo apt-get install bzr
Depurador$
sudo apt-get install gdb valgrind
Librería GSL (GNU Scientific Library)Simulación de Redes
Loja - 2014
Prerrequisitos
7
Analizador flex y generador bison$
sudo apt-get install flex bison libfl-dev
Instalación de tcpdump (lectura de salidas pcap)$
sudo apt-get install tcpdump
Instalación de librerías estadísticas$
sudo apt-get install sqlite sqlite3 libsqlite3-dev
Instalación de librerías XML$
sudo apt-get install libxml2 libxml2-dev
Sistema GTK (toolkit basado en objetos)$
sudo apt-get install libgtk2.0-0 libgtk2.0-dev
Máquinas virtuales en ns-3$
sudo apt-get install vtun lxcPrerrequisitos
Chequeo de código python$
sudo apt-get install uncrustify
Documentación (doxygen)$
sudo apt-get install doxygen graphviz imagemagick$
sudo apt-get install texlive texlive-extra-utils texlive-latex-extra
Visualización de manuales y tutorial (con sphinx y dia)$
sudo apt-get install python-sphinx dia
Instalación de visualizador pyviz de ns-3$
sudo apt-get install pygraphviz kiwi python-pygoocanvas libgoocanvas-dev
Módulo openflow$
sudo apt-get install libboost-signals-dev libboost-filesystem-dev
Soporte de emulador MPI (Message Passing Interface)$
sudo apt-get install bin commonopenmpi-Simulación de Redes
Loja - 2014
Prerrequisitos
9
Enlaces modificados con python$
sudo apt-get install gcc-multilibSimulación de Redes
Instalación usando Bake
$
mkdir workspace$
cd workspace$
hg clone http://code.nsnam.org/bake$
export BAKE_HOME=`pwd`/bake$
export PATH=$PATH:$BAKE_HOME$
export PYTHONPATH=$PYTHONPATH:$BAKE_HOME$
cd bake$
./bake.py check$
./bake.py configure –e ns-3.18$
bake .py showqt4 - missing
$
sudo apt-get install qt4-dev-tools$
./bake.py showSimulación de Redes
Loja - 2014
Instalación usando Bake
11
$
cd ../..$
./bake.py download –vCentro de Software: instalar gccxml
$
./bake.py build -vvvPrueba de funcionamiento
$
cd source/ns-3.18$
./test.py –c coreSimulación de Redes
Loja - 2014
Instalación de aplicaciones
13