Probablemente NS2 es el simulador de redes open source más extendido tanto en investigación como para propósitos docentes, en esta receta vamos a aprender a instalarlo y a simular un escenario para MANET's muy simple.
Introducción
Entre los usos más habituales que les puedes dar a este tipo de simuladores se encuentran:
Simular estructuras y protocolos de redes de todo tipo (satélite, wireless, cableadas, etc..)
Desarrollar nuevos protocolos y algoritmos y comprobar su funcionamiento.
Comparar distintos protocolos en cuanto a prestaciones.
Instalación
En la web del proyecto nos podemos encontrar todo lo necesario para instalarlo. Desde el 2005 los distintos módulos y el propio simulador han sido licenciados con una colección de licencias "GNU GPL compatible".
La opción mas sencilla para instalarlo es bajarse el paquete "todo en uno" que contiene todas las versiones de las librerias que necesita. Este tgz puedes bajártelo de aqui (la actual versión es la ns2.29 y son 68 Megas).
No obstante, puedes obtener las librerías y el propio simulador por separado en la página web de descarga e intentar instalar solamente aquellas partes que te falten o en las que estes interesado.
La forma mas simple, como ya hemos dicho es bajarse el paquete "todo en uno". Una vez bajado el paquete lo descomprimimos:
se nos crea un directorio denominado ns-allinone-2.29 dónde encontraremos un script "install" que debemos ejecutar para compilar e instalar el simulador y sus herramientas asociadas.
Es necesario resaltar dos herramientas (aparte del propio simulador ns que se encuentra en el directorio ns-2.29):
nam: herramienta que se utiliza para visualizar de forma gráfica nuestras simulaciones.
xgraph que sirve para realizar gráficas a partir de los datos de la simulación. No coje el archivo de salida del simulador directamente sino que se tienen que generar archivos adicionales mediante scripts.
Puedes compilar cada uno de los paquetes por separado introduciendote en su directorio y ejecutando el configure para realizar a continuación el make correspondiente.
Un aspecto importante es que debe ser compilado con el g++2.95 ya que con versiones posteriores da errores al compilar.
Una vez compilado el programa tenemos un ejecutable denominado ns.
Para comprobar que el simulador se ha compilado de forma correcta debemos validarlos con los ejemplos y sus salidas que nos bienen con el propio simulador, para lo cual existe una serie de scripts que comienzan con la
palabra validate y que permiten validar todos los ejemplos o solamente parte de ellos. Estos tests tambien son una buena fuente de ejemplos para aprender a usar el simulador ns.
Uso básico de ns2
El uso básico del simulador ns2 es bastante simple, se crea un archivo dónde le decimos qué queremos simular (topología, nodos, movimientos, tráfico, etc..) y se lo pasamos como parámetro al simulador, este genera una traza de todos los eventos que se han generado durante la simulación.
El archivo de configuración es un script realizado en TCL y la salida es un archivo de texto (generalmente con extensión .tr), adicionalmente le podemos indicar que nos genere tambien un archivo para el visor gráfico nam o generar archivos adicionales para visualizar en el xgraph.
Por ejemplo, una ejecución básica (mi simulador ha sido instalado en ./original/ns-allinone-2.29/ns-2.29/) sería:
Podemos ver que nos ha generado los archivos basico1-out.nam basico1-out.tr de las salidas del simulador.
Vamos a describir ahora el ejemplo basico.tcl paso a paso explicando que es cada uno de los elementos que lo conforman. Para las distintos valores que pueden tomar las variables lo mejor es echar un vistazo a la documentación del propio simulador.
Nuestro ejemplo básico es una simulación de cinco nodos wireless estáticos (se les puede añadir movimiento): veamos pues las distintas partes del archivo (los que sepan TCL supongo que la mayoría de los comentarios les
parecerán obvios).
Primero se definen las variables que luego usaremos en la configuración de los nodos que podemos identificar con los elementos físicos que vamos a simular.
NOTA: El fichero básico.tcl es una recopilación desde distintos ejemplos creados por otros autores
A continuación definimos las características de la antena que queremos añadir a cada nodo. Estos valores en concreto pertenecen a una tarjeta Lucent Orinoco.
Por último en cuanto a configuración de parámetros establecemos el ancho de banda a utilizar:
Lo siguiente es crear una instancia del simulador e indicar al simulador dónde tiene que guardar los eventos de traza y del nam respectivamente.
a continuación, definimos la topología con las constantes que hemos declarado al principio del archivo, creamos el objeto que va a simular todos los eventos (god) y le indicamos que vamos a usar el nuevo formato de traza.
A partir de aquí vamos a definir los nodos y su configuración, como podemos ver creamos una configuración y a continuación creamos 4 nodos con esa configuración con un bucle for.
Si queremos crear una configuración distinta para un determinado nodo, pues determinamos los nuevos valores (en este ejemplo solo cambiamos la energía inicial del nodo) y definimos los nodos a continuación (en nuestro caso el
quinto nodo que nos faltaba).
Ya tenemos los nodos, ahora nos falta posicionarlos en el entorno a simular, debemos proporcionar las coordenadas x y z para cada uno de los nodos creados.
Teniendo los nodos posicionados, configurados y con las antenas configuradas solamente nos queda generar tráfico para ver como se nos comporta nuestro escenario.
ns2 denomina agentes a los objetos encargados de generar tráfico (de muy distinta índole) de uno a otro. Para ello, creamos el agente y lo "adosamos" a un nodo mientras que creamos otro agente y lo "adosamos" al destino. Finalmente conectamos los dos agentes para indicarles que el tráfico que genera uno va a ir destinado al segundo.
Estos agentes siguen la pila de protocolos, es decir, si quieres crear un agente ftp sobre tcp, debes crear primero el agente tcp y luego asociar el agente ftp a dicho agente tcp.
A continuación le indicamos al dicho agente el tiempo en el cual debe generar tráfico mediante el comando start y stop.
Ya queda poco, un aspecto interesante si queremos visualizar la simulación en el nam es indicarle el tamaño de dichos nodos en la representación gráfica.
Como penúltimo paso indicamos cuando se debe detener la simulación tanto al propio simulador como a los nodos.
Para finalizar, comenzamos la simulación.
Si juntamos todo en un archivo denominado "basico.ns2" y simulamos, tendremos la simulación en los
archivos .tr y .nam que le hemos indicado anteriormente.
Interpretar los resultados sin herramientas de ayuda es un poco lioso, una descripción de el significado de cada una de las lineas de salida la podeis encontrar aqui
Las posibilidades para simular topologías, configuraciones, antenas, algoritmos de enrutado, tecnologías (bluetooth, wimax, wifi, etc.) son infinitas.
En cuanto aprenda como poner imágenes, pongo algún pantallazo del nam.