Académique Documents
Professionnel Documents
Culture Documents
org
Simulador NS-2
autor Javier Turegano Molina (SETAS)
viernes, 12 de abril de 2002
Modificado el jueves, 02 de marzo de 2006
Ns, network simulator, es una herramienta muy potente dentro del campo de la simulación de redes. Es a la vez muy
flexible dada la posibilidad de trabajar con scripts tcl que nos permite agregar toda la potencia de un lenguaje de
programación a los propios elementos de la simulación.
RESUMEN:
NS (Network Simulator) actualmente en la versión 2 nos permite realizar simulaciones de múltiples tipos de redes
(cableadas, inalámbricas y por satelite). Para ello utiliza un lenguaje de script llamado Tcl que nos permite ir generando
el modelo.
También disponemos de una interfaz gráfica llamada nam que nos permite visualizar las simulaciones e incluso crear
y editar los modelos a simular.
Ns es una gran herramienta que nos puede ayudar en muchos campos a la hora de realizar pruebas o generar nuevos
tipos de redes.
NOTA:
Este artículo está basado fundamentalmente en información que podeis encontrar en las páginas web de los enlaces
que podeis encontrar en el último capitulo, aunque no se una traducción propiamente dicha ya que contiene datos de
varias de ellas y algunos datos basados en mi propia experiencia usando este simulador. Con este artículo simplemente
se intenta acercar a todos aquellos que quieran comenzar a utilizar este simulador de redes o al menos conocerlo y para
los que el idioma (casi todas en ingles) o el nivel de las mismas sea un impedimento.
INDICE:
0 - Indice
1 - Introducción
2 - El Simulador ns
2.5 - Nam
3 - Conclusiones
1.- Introducción
Ns es un simulador de eventos centrado en la investigación sobre redes. Ns dispone simulación para TCP, routing y
multicast sobre redes cableadas o inalámbricas (locales y por satélite).
Ns empieza como una variante de el REAL network simulator en 1989 y ha evolucionado substancialmente durante los
últimos años. En 1995 el desarrollo lo llevaba acabo DARPA a través del proyecto VINT de LBL, Xerox PARC, UCB y
USC/ISI. Actualmente el desarrollo de ns lo lleva DARPA junto a SAMAN y otros. Ns siempre ha contado con
contribuciones de muchos otros desarrolladores, incluyendo código inalámbrico de los proyectos CMU Monach y UCB
Daedelus y también de Sun Microsystems.
Ns se está utilizando tanto en entornos de investigación como en entornos educativos. Ns nos va a ser útil para la
investigación ya que nos permite acceder a simulaciones con elementos a las que no podríamos acceder normalmente en
http://linuxalbacete.org/web Potenciado por Joomla! Generado: 23 May, 2011, 23:23
linuxalbacete.org
caso de no disponer de un simulador. También nos permite modificar casi todos los parámetros que influyen en el
estado o configuración de una red en tan solo unos segundos mientras que recrear en la realidad este entorno podría
costarnos días o incluso meses.
Ns se utiliza en entornos educativos ya que nos permite simular sencillas redes que nos van a ayudar a comprender los
distintos protocolos y observar como se produce el envió de paquetes entre nodos, etc.
Para definir una simulación en ns utilizamos un lenguaje de script llamado TCL que nos va a permitir definir los distintos
elementos de la red y como debe comportarse. Una vez terminado el script se lo pasamos al ns y este irá realizando la
simulación.
Ns dispone de una interfaz gráfica para visualizar las simulaciones llamada nam (network animator). Nam también
dispone de un editor gráfico, que nos va a permitir no tener que usar código TCL para crear las animaciones. Puedes
crear la topología de red y simular varios protocolos y fuentes de tráfico mediante el uso del ratón.
2.- El simulador ns
DEFINIR:
Redes terrestres, inalámbricas y por satélite con varios algoritmos de enrutado (DV, LS, PIM-DM, PIM-SM, AODV,
DSR).
Distintas fuentes de tráfico: Web, ftp, telnet, cbr ,etc..
Fallos como perdidas probabilísticas y deterministas, fallos en la conexión, etc.
Distintas disciplinas de encolado (drop-tail, RED, FQ, SFQ, DRR, etc) y QoS (calidad de servicio, como por ejemplo
InmtServ y Diffserv).
VISUALIZAR:
Comportamientos del protocolo: comienzo lento de TCP, control de congestión, retransmisión rápida y recuperación.
Primero crearemos un fichero que llamaremos ejemplo.tcl y al que iremos agregando las distintas líneas del script.
La primera línea abre el fichero out.nam para escritura y nos da un manejador ‘nf’. En la segunda línea le
decimos al objeto simulador que creamos al principio que envie todos los datos que se generen a este fichero.
El siguiente paso es añadir una función finish que cierre el fichero y que comience nam.
proc finish {} {
global ns nf
$ns flush-trace
close $nf
exec nam out.nam &
exit 0
}
La siguiente línea indica que transcurridos 5 segundos se termine la simulación invocando a la función finish.
http://linuxalbacete.org/web Potenciado por Joomla! Generado: 23 May, 2011, 23:23
linuxalbacete.org
$ns run
Este es el esqueleto básico de cualquier script Tcl para ns, ahora hemos de añadir los distintos elementos que
conformaran la simulación.
Vamos a crear una topología muy sencilla formada por dos nodos y un enlace:
El código debemos incluirlo antes de $ns run o no será incluido en la simulación. Para crear los nodos usamos $ns node
y los asignamos a dos identificadores n0 y n1:
Ahora definimos el enlace que los conecta: enlace duplex con 1 Megabit de ancho de banda , un retardo de 10ms
y encolado por Drop Tail.
Ya tenemos definida la topología, así que ahora vamos a definir el envió de datos, esto se realiza creando un agente que
envie datos y otro agente que los reciba. Definiremos un tamaño de paquete de 500 bytes y cada uno será enviado
cada 0.005 segundos (200 paquetes por segundo)
Ahora solo tenemos que indicarles cuando deben de comenzar y terminar de enviar los datos. Es recomendable
ponerlo antes del secuenciador para finish.
Ya hemos terminado. Salvamos el fichero y comenzamos la simulación. Se abrirá una ventana de nam y podemos
observar como los paquetes viajan del nodo 0 al 1.
Pinchando sobre los paquetes podremos obtener información sobre ellos y monitorizarlos. Pinchando sobre la linea
obtendremos estadísticas sobre la misma.
Este es un ejemplo muy sencillo pero que ilustra con claridad como se definen simulaciones en ns.
2.3 Un scrip Tcl con 3 nodos:
http://linuxalbacete.org/web Potenciado por Joomla! Generado: 23 May, 2011, 23:23
linuxalbacete.org
n0
\bs
5Mb \bs
2ms \bs
\bs
n2 --------- n3
/ 1.5Mb
5Mb / 10ms
2ms /
/
n1
# Creamos el simulador
set ns [new Simulator]
\clearpage
# Creamos los 3 nodos
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
\clearpage
# Definimos 3 segundos de duración para la simulación
Apartir de los dos ejemplos de scipts aquí espuestos y de la información contenida en el manual podemos definir casi
cualquier tipo de red para crear la simulación.
2.4 Monitorizar una cola:
Puede ser interesante monitorizar el estado de una cola e ir observando como los paquetes van entrando y saliendo de
ella.
Por ejemplo si tuviésemos una simulación con 4 nodos y quisiéramos monitorizar la cola para el enlace entre 2 y 3
usaríamos:
También visualizaremos los paquetes que no pueden ser procesados y son descartados.
2.5 NAM
Nam es el entorno gráfico para ns. Nos permite ver y crear las simulaciones mediante un entorno más sencillo y
visual.
Aquí podemos observar dos ejemplos de simulaciones en NAM.
También visualizaremos los paquetes que no pueden ser procesados y son descartados.
En esta simulación podemos observar tanto envios punto a punto como enlaces multipunto. También podemos observar
las colas que hemos creado para monitorizar los envíos entre 6 y 7 y entre 8 y 9. Así también vemos los paquetes que
están siendo descartados.
Este es un ejemplo de simulación de red inalámbrica con 5 nodos. Los enlaces no son “físicos” y podemos
observar como los paquetes viajan de un nodo a otro. También podemos observar los movimientos de los nodos en
caso de que estos se trasladasen de un sitio a otro.
EL EDITOR DE NAM:
Nam dispone de un editor grafico para que no sea necesario crear los esquemas de red y definir la simulación mediante
líneas de código.
Usando el editor es más sencillo definir la topología e ir observando el esquema de la red según vamos creándolo.
3. Conclusiones
Ns, network simulator, es una herramienta muy potente dentro del campo de la simulación de redes. Es a la vez muy
flexible dada la posibilidad de trabajar con scripts tcl que nos permite agregar toda la potencia de un lenguaje de
programación a los propios elementos de la simulación.
Además dispone de un entorno grafico llamado nam que nos va a simplificar el trabajo del diseño de la simulación al
tiempo que nos da la posibilidad de observar los resultados de la simulación de una forma gráfica facilmente
comprensible.
Todo ello hace de ns una ayuda inestimable en el campo de la investigación y del aprendizaje de redes.
Aquí teneis los enlaces a las páginas en las que se ha basado este artículo:
Página de ns-2:
http://www.isi.edu/nsnam/ns/
Manual de ns:
http://www.isi.edu/nsnam/ns/doc/index.html
NS by Example:
http://nile.wpi.edu/NS/
Para cualquier duda o comentario podeis contactar conmigo enviando un e-mail a: javi (arroba)
ideando.net - FIN -