El simulador ns-2

El simulador ns-2 es un software de código libre desarrollado originalmente en la Universidad de Berkeley, y mantenido por la comunidad académica del área de redes.

Es un simulador de eventos discretos que incorpora el comportamiento de diferentes protocolos y fenómenos de las redes.

El simulador en sí consiste en dos paquetes:
  • ns (simulador)
  • nam (visualizador de resultados)
A su vez, requiere las siguientes bibliotecas, disponibles también en la página:
  • Tcl/Tk (lenguaje de scripting)
  • otcl (extensiones orientadas a objetos)
  • TclCL (bibliotecas de TCL)
Además en general para realizar gráficas desde línea de comandos o desde los scripts es útil el paquete xgraph.

Instalación en Linux

Para trabajar en ns-2 se recomienda hacerlo en un entorno Linux. Para instalarlo, se deben descargar las fuentes y compilarlo, por lo que es necesario tener los paquetes de compilación gcc y make así como sus bibliotecas asociadas.

A continuación se da un procedimiento de instalación para Ubuntu/Linux a modo de ejemplo. En otras distribuciones puede ser necesario actualizar gcc, make y libxmu-dev (el 1er paso) de otro modo, pero el resto es común.

1) Actualizar los paquetes de compilación:
$> sudo apt-get install build-essential autoconf automake libxmu-dev

2) Descargar el archivo de fuentes ns-allinone-2.33 (o la versión más actual; tome en cuenta esto en las instrucciones que siguen) que ya contiene todas las librerías necesarias, así como el código de ns.

3) Descomprimir el archivo (se asume que se instalará en /home/usuario):
$> tar xzvf ns-allinone-2.33.tar.gz

4) Compilar usando el script de instalación:
$> cd ns-allinone-2.33
$> ./install


obs: en versiones de Ubuntu nuevas puede dar el siguiente error:
linkstate/ls.h:137:58: error: 'erase' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
  void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
                                                          ^
linkstate/ls.h:137:58: note: declarations in dependent base 'std::map<int, LsIdSeq, std::less<int>, std::allocator<std::pair<const int, LsIdSeq> > >' are not found by unqualified lookup
linkstate/ls.h:137:58: note: use 'this->erase' instead
make: *** [linkstate/ls.o] Error 1
Ns make failed!

para solucionarlo, antes de install ejecutar:

export CC=gcc-4.4 CXX=g++-4.4
sudo apt-get install gcc-4.4 g++-4.4

5) Editar las variables de entorno.

En el home del usuario, hacer:
$> gedit .bashrc

Agregar lo siguiente al final del archivo:
Atención: cambiar "/home/usuario" por el directorio donde se descomprimió el ns-allinone-2.33.tar.gz
#LD_LIBRARY_PATH
OTCL_LIB=/home/usuario/ns-allinone-2.33/otcl-1.13
NS2_LIB=/home/usuario/ns-allinone-2.33/lib
X11_LIB=/usr/X11R6/lib
USR_LOCAL_LIB=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:$X11_LIB:$USR_LOCAL_LIB

# TCL_LIBRARY
TCL_LIB=/home/usuario/ns-allinone-2.33/tcl8.4.18/library
USR_LIB=/usr/lib
export TCL_LIBRARY=$TCL_LIB:$USR_LIB

# PATH
XGRAPH=/home/usuario/ns-allinone-2.33/bin:/home/usuario/ns-allinone-2.33/tcl8.4.18/unix:/home/usuario/ns-allinone-2.33/tk8.4.18/unix
NS=/home/usuario/ns-allinone-2.33/ns-2.33/
NAM=/home/usuario/ns-allinone-2.33/nam-1.13/
export PATH=$PATH:$XGRAPH:$NS:$NAM

6) Actualizar las variables de entorno:
$> source .bashrc

7) Test:
$> ./ns-allinone-2.33/ns-2.33/validate

Atención: la validación dura mucho. Si los primeros test dan OK cortarla con CTRL+C ya que no vale la pena correrla entera, la idea es simplemente verificar que quedó instalado.

Ns-2 en Windows

Si bien el ns-2 fue diseñado para entornos UNIX/Linux, puede ser utilizado en windows habiendo versiones pre compiladas. El problema principal es que estas versiones son bastante antiguas. Los ejemplos funcionan bajo esta versión (hasta donde sabemos al menos) aunque los obligatorios no fueron testeados. En definitiva, le recomendamos fuertemente que utilice las últimas versiones disponibles bajo linux (o el emulador CygWin, si no quiere instalar un Linux).

Para ejecutar el ns en windows, necesita descargar tres cosas:
Instale tcl. La manera más sencilla de ejecutar el ns-2 es poniendo los ejecutables del ns y de nam en la misma carpeta donde tiene sus scripts. Luego mediante un terminal ejecute:
C:\<dir>\>ns.exe <script.tcl>
Note que necesita cambiar el nombre del ejecutable del ns por ns.exe (igual para el nam).

Última modificación: domingo, 1 de marzo de 2015, 22:06