All You Must to Know the NS Simulator                                               A. F. Montoya, E. A. Ruiz, M. A. Marti...
III. PROCESO DE INSTALACIÓN Y                         OTCL_LIB=/your/path/ns-allinone-2.31/otcl-1.13               CONFIGU...
set n0 [$ns node]                                                                 set n1 [$ns node]                       ...
$ns duplex-link-op $n5 $n6 orient right-down$ns duplex-link-op $n6 $n8 orient right-up                          Ahora, pro...
$ns rtmodel-at 1.5 up $n0 $n3$ns rtmodel-at 2.0 down $n1 $n2$ns rtmodel-at 2.0 down $n8 $n2$ns rtmodel-at 2.5 up $n1 $n2Pa...
pero una vez se llena, solo de pierden paquetes azules, a                                                                 ...
código, si se quiere hacer una buena simulación, concaracterísticas adicionales que éste tiene.El ejemplo es una muy peque...
Upcoming SlideShare
Loading in …5
×

Artículo - Simulador NS (Network Simulator)

830 views

Published on

Artículo que describe el proceso de instalación, configuración y un ejemplo de simulación con el simulador NS 2.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
830
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
42
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Artículo - Simulador NS (Network Simulator)

  1. 1. All You Must to Know the NS Simulator A. F. Montoya, E. A. Ruiz, M. A. MartinezAbstract- This paper presents the main features of NS Simulator NS es un simulador de eventos discretos destinado para laas the operating system that works, technical data of the creación de redes de investigación. Este proporciona uncomputer for work and advantages over other simulators. Also, apoyo sustancial para la simulación de variedad dedescribes the process of installing and configuration in a protocolos de las capas de aplicación (http, ftp, cbr, etc),operating system and a step by step example of a simple topology. transporte (TCP, UDP, RTP, SRM), también protocolos deKeywords- simulation, NS, modeling, software tools, example, enrutamiento mono-difusión y multidifusión (multicast).installation.1 Aplicando funcionalidades tanto para redes cableadas, no cableadas, satelitales; con topologías complejas. I. INTRODUCCIÓN El simulador NS también incluye mecanismos concernientes aLa simulación se puede definir como la imitación del la capa de Enlace de Datos en redes de área local, tales comocomportamiento de un sistema real durante un lapso de tiempo protocolos de control de acceso al medio (MAC) del tipo dedeterminado. En la actualidad se utilizan las simulaciones para Acceso múltiple por detección de portadora y detección deusos prácticos tales como: predicción, entrenamiento, colisiones (CSMA/CD). A su vez incluye diversos algoritmosentretenimiento, mejor comprensión de la situación estudiada, para la planificación de colas como FIFO, RED, FQ, SFQ,apoyo a la toma de decisiones, etc. DRR.En el campo de las redes es importante simular debido a que Para visualizar las simulaciones, NS dispone de herramientasen la mayoría de los casos resulta mucho más práctico tener para graficar como NAM y XGRAPH. El NAM es unauna idea del comportamiento que tendrá una arquitectura que interfaz grafica que pueda representar la red que construyamosnecesitemos implementar antes de construirla físicamente. atreves del lenguaje OTcl y además permite visualizar dinámicamente el desplazamiento de los paquetes de laUna de las herramientas de simulación de redes más simulación. El XGRAPH atreves de graficas bi-dimensionalesutilizadas alrededor del mundo tanto en el ámbito académico permite realizar análisis de funcionalidades tales comocomo en el investigativo es el NS, esto se debe a que se paquetes recibidos, paquetes perdidos, ancho de banda yencuentra escrito en código abierto, y además gracias a que retardos.existe abundante documentación sobre este en la red. Elcódigo de NS se ofrece bajo la versión 2 de la GNU (General Básicamente NS se puede definir como un simuladorPublic License). orientado a objetos, fue construido en C++ y proporciona una interfaz de simulación a través de OTcl, un dialecto orientado a objetos de Tcl. El usuario describe una topología de red II. GENERALIDADES DEL SIMULADOR escribiendo scripts Otcl y, a continuación, el programa principal de NS simula la topología con los parámetrosEn sus inicios NS fue desarrollado como una variante del especificados.simulador de redes REAL en 1989, en los últimos años hatenido una gran evolución. Su desarrollo fue apoyado por En la actualidad NS se está utilizando tanto en entornos deDefense Advanced Research Projects Agency (DARPA) con investigación como en entornos educativos. NS resulta de granayuda de instituciones de investigación en redes como LBL, ayuda para la investigación ya que nos da la posibilidad deXerox PARC, UCB y USC / ISI. acceder a la realización de pruebas con elementos a los que no podríamos acceder normalmente en caso de no disponer de un simulador. NS además permite modificar casi todos los A. F. Montoya, Universidad Católica de Pereira, Pereira, Colombia, parámetros que intervienen en el estado o configuración demontoya118@hotmail.com una red en tan solo unos segundos. E. A. Ruiz, Universidad Católica de Pereira, Pereira, Colombia,edwar.ruiz@ucpr.edu.co M. A. Martinez, Universidad Católica de Pereira, Pereira, Colombia,therelax29@hotmail.com
  2. 2. III. PROCESO DE INSTALACIÓN Y OTCL_LIB=/your/path/ns-allinone-2.31/otcl-1.13 CONFIGURACIÓN DEL SIMULADOR NS2_LIB=/your/path/ns-allinone-2.31/lib X11_LIB=/usr/X11R6/libEn el siguiente capítulo, se describirá como se puede instalar USR_LOCAL_LIB=/usr/local/libel simulador NS en un sistema operativo Linux, la cual exportrecomendamos que sea en Ubuntu, en la cual lo instalamos y LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$funcionó correctamente. NS2_LIB:$X11_LIB:$USR_LOCAL_LIB Instalación del Simulador # TCL_LIBRARY TCL_LIB=/your/path/ns-allinone-2.31/tcl8.4.14/libraryPrimero nos logueamos como usuario root USR_LIB=/usr/lib export TCL_LIBRARY=$TCL_LIB:$USR_LIB$ su –password: # PATH XGRAPH=/your/path/ns-allinone-2.31/bin:/your/path/ns-Descargamos el archivo, lo movemos a /usr/src/, de ahí nos allinone-2.31/tcl8.4.14/unix:/your/path/ns-allinone-ubicamos en esa carpeta y lo descomprimimos 2.31/tk8.4.14/unix NS=/your/path/ns-allinone-2.31/ns-2.31/# wget http://nchc.dl.sourceforge.net/sourceforge/nsnam/ns- NAM=/your/path/ns-allinone-2.31/nam-1.13/allinone-2.31.tar.gz PATH=$PATH:$XGRAPH:$NS:$NAM# mv ns-allinone-2.31.tar.gz /usr/src/# cd /usr/src/ Luego actualizamos el bashrc con el siguiente comando:# tar -xzvf ns-allinone-2.31.tar.gz # source ~/.bashrcInstalamos las librerías necesarias para poder compilar el ns: Si hemos seguido los pasos anteriores y no hemos tenido# apt-get install build-essential autoconf automake libxmu-dev contratiempos deberíamos obtener el símbolo "%" al escribir ns en la consola de linux.Sólo si aparecen errores reiniciamos el PC y luego instalamos: # ns# sudo apt-get install -f build-essential libxt-dev libxt6 libsm- %dev libsm6 libice-dev libice6 libxmu-dev Si queremos salir del shell de ns pulsamos las teclasAhora instalamos el paquete ns-2, esto demora un buen control+c.tiempo, así que se puede dejar compilando. IV. EJEMPLO DE SIMULACIÓN# cd ns-allinone-2.31#./install En éste capítulo de ejemplo de simulación, explicaremos las líneas de código necesarias para llevar a cabo la simulación Configuración de las Variables de Entorno que queremos.Se pueden usar las variables vi o nano en lugar de gedit si es El ejemplo simulará la topología que se muestra en la figura 1,necesario. donde se enviarán paquetes UDP desde el nodo 0 hasta el 9 y desde el nodo 1 hasta el 8. Luego de un tiempo, se caen dos$ gedit ~/.bashrc enlaces, y debido a que se ha configurado enrutamiento dinámico, los paquetes son desviados por otros enlaces hastaUna vez dentro del bashrc le agregamos las siguientes líneas y llegar a su destino. Además, se puede ver como se encolan losreemplazamos /your/path/ por /usr/src/, como se muestra a paquetes y como se pierden.continuación:# LD_LIBRARY_PATH
  3. 3. set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] set n6 [$ns node]Figura 1. Topología de ejemplo para la simulación set n7 [$ns node] set n8 [$ns node]Lo primero que debemos hacer, es abrir el editor de texto de set n9 [$ns node]Linux donde vamos a escribir todas nuestras líneas de código,para que, posteriormente, se pueda ejecutar todo el archivo Ahora vamos a conectar los nodos ya creados, con la topologíadesde el terminal de Linux. presentada en la figura 1.Le ponemos un nombre al archivo y lo guardamos conextensión TCL, como por ejemplo prueba.tcl. $ns duplex-link $n0 $n1 1Mb 10ms DropTailUna vez creado y guardado el archivo, comenzamos a escribir $ns duplex-link $n1 $n2 1Mb 10ms SFQnuestro código. $ns duplex-link $n0 $n3 1Mb 10ms DropTail $ns duplex-link $n3 $n4 1Mb 10ms DropTailLo primero es crear un objeto para el simulador, el cual se $ns duplex-link $n2 $n4 1Mb 10ms DropTailhace con: $ns duplex-link $n4 $n5 2Mb 10ms DropTail $ns duplex-link $n5 $n7 1Mb 10ms DropTailset ns [new Simulator] $ns duplex-link $n7 $n9 1Mb 10ms DropTail $ns duplex-link $n9 $n3 1Mb 10ms DropTailPara obtener una visualización gráfica de la simulación, lo $ns duplex-link $n5 $n6 1Mb 10ms DropTaildebemos hacer por medio del graficador NAM. Donde en la $ns duplex-link $n6 $n8 1Mb 10ms DropTailprimera línea, creamos el archivo con nombre OUT con $ns duplex-link $n8 $n2 1Mb 10ms DropTailextensión NAM y lo vinculamos a la variable nf. En lasegunda, le decimos a la variable ns que guarde todos los Con éstas líneas le decimos al simulador que cree enlace2 fulldatos que se necesiten para la simulación en éste archivo. dúplex, conectando los nodos $n0 y $n1, y los que se vayan a conectar, con un ancho de banda de 1Mbps, retarde de 10ms yset nf [open out.nam w] el tipo de encolamiento que hay en el ejemplo son DropTail$ns namtrace-all $nf (que viene siendo FIFO el cual desecha los paquetes que llegan si está llena la cola) y SFQ (Stochastic Fair Queueing)Luego creamos un procedimiento “finish” el cual cierra todas si se quiere una pérdida de paquetes más justa. Los valoreslas trazas y ejecuta el NAM, el cual ejecutaremos más escritos anteriormente pueden ser cambiados si ustedes loadelante. consideran necesario.proc finish {} { Ahora, debemos darle una ubicación específica a los nodos, de global ns nf no hacerlo, el simulador los pone en ubicaciones aleatorias, lo $ns flush-trace que dificultaría la visualización del ejemplo y dificultaría la close $nf comprensión del mismo. exec nam out.nam & exit 0 $ns duplex-link-op $n0 $n1 orient right} $ns duplex-link-op $n1 $n2 orient down $ns duplex-link-op $n0 $n3 orient downAhora, comenzamos a crear los nodos que tendrá nuestra $ns duplex-link-op $n3 $n4 orient right-downsimulación.la instrucción set es para crear un nuevo objeto, $ns duplex-link-op $n2 $n4 orient left-downluego ponemos el nombre de la variable que queremos para $ns duplex-link-op $n4 $n5 orient downlos nodos, que en este caso van enumerados desde el 0 hasta el $ns duplex-link-op $n5 $n7 orient left-down9 y luego con la instrucción $ns node decimos que vamos a $ns duplex-link-op $n7 $n9 orient left-upcrear un objeto de tipo nodo. $ns duplex-link-op $n9 $n3 orient right-up
  4. 4. $ns duplex-link-op $n5 $n6 orient right-down$ns duplex-link-op $n6 $n8 orient right-up Ahora, procedemos a crear los agentes que va a recibir el$ns duplex-link-op $n8 $n2 orient left-up tráfico que generan los nodos anteriores. Se crea un agente de tipo Null que servirán como receptor del tráfico y se adapta elHasta el momento, ya tenemos la topología creada, todos los nodo que se usará como receptor al agente Null. Esto mismonodos conectados con sus respectivos enlaces. Ahora vamos a se hace con los otros 2 nodos que serán receptores de tráfico,configurar y crear el código para el envió de los datos entre los como se ve a continuación:nodos. Se debe tener en cuenta que hay que crear un agente, elcual genera el tráfico y otro que es el que recibe el tráfico. set null0 [new Agent/Null] $ns attach-agent $n8 $null0Primero creamos el tipo de tráfico que se va a generar, que eneste caso será UDP que lo llamamos $udp0 y lo adjuntamos al set null1 [new Agent/Null]nodo $n0. Luego, debemos crear un generador de tráfico CBR $ns attach-agent $n9 $null1que se llama $cbr0 que se adjunta al agente $udp0. En elgenerador de tráfico, podemos configurar el tamaño de los set null2 [new Agent/Null]paquetes que serán de 500 bytes con un intervalo de 0.005 $ns attach-agent $n0 $null2segundos. Conectamos los dos agentes a nivel de capa de transporte,Para el ejemplo creamos 3 nodos que van a generar tráfico, especificando el agente que genera el tráfico con el que loque son el nodo 0, el nodo 1 y el nodo 5. Para ello solo es recibirá.copiar los primeros bloques de código, cambiar los nodos y lasvariables udp y cbr, tal como se muestra a continuación: $ns connect $udp0 $null0 $ns connect $udp1 $null1#Create a UDP agent and attach it to node n0 $ns connect $udp2 $null2set udp0 [new Agent/UDP]$ns attach-agent $n0 $udp0 Luego, debemos especificar a los generadores de tráfico en que momento iniciar y cuando parar. Tal como se muestra a# Create a CBR traffic source and attach it to udp0 continuación:set cbr0 [new Application/Traffic/CBR]$cbr0 set packetSize_ 500 $ns at 0.2 "$cbr0 start"$cbr0 set interval_ 0.005 $ns at 0.4 "$cbr1 start"$cbr0 attach-agent $udp0 $ns at 2.0 "$cbr2 start" $ns at 3.0 "$cbr1 stop"#Create a UDP agent and attach it to node n1 $ns at 3.3 "$cbr0 stop"set udp1 [new Agent/UDP] $ns at 3.4 "$cbr2 stop"$ns attach-agent $n1 $udp1 Para monitorear las colas en los enlaces, ponemos el código# Create a CBR traffic source and attach it to udp1 siguiente:set cbr1 [new Application/Traffic/CBR]$cbr1 set packetSize_ 500 $ns duplex-link-op $n0 $n3 queuePos 0.5$cbr1 set interval_ 0.005 $ns duplex-link-op $n1 $n2 queuePos 0.5$cbr1 attach-agent $udp1 $ns duplex-link-op $n4 $n5 queuePos 0.5#Create a UDP agent and attach it to node n5 En nuestra simulación, haremos caer varios enlaces para ver elset udp2 [new Agent/UDP] comportamiento de los paquetes y como se direccionan por$ns attach-agent $n5 $udp2 otra vía. Para ello, ponemos el instante en el q se caera o subirá el enlace, seguido de “down” si queremos que se caiga# Create a CBR traffic source and attach it to udp2 el enlace o “up” si queremos subirlo y después los nodos delset cbr2 [new Application/Traffic/CBR] enlace.$cbr2 set packetSize_ 500$cbr2 set interval_ 0.005 $ns rtmodel-at 1.0 down $n0 $n3$cbr2 attach-agent $udp2 $ns rtmodel-at 1.0 down $n3 $n9
  5. 5. $ns rtmodel-at 1.5 up $n0 $n3$ns rtmodel-at 2.0 down $n1 $n2$ns rtmodel-at 2.0 down $n8 $n2$ns rtmodel-at 2.5 up $n1 $n2Para configurar un enrutamiento dinámico en nuestratopología ponemos la siguiente línea de código:$ns rtproto DVPodemos identificar cada flujo de datos independientemente, y Para poder ver mejor la simulación, reubicamos los nodos. Enasignarle un color a cada uno para diferenciarlo más la parte izquierda, hacemos click en el botón editar yfácilmente. movemos los nodos de forma que se vean todos, tal como se muestra en la figura siguiente:$udp0 set class_ 1$udp1 set class_ 2$ns color 1 Blue$ns color 2 RedY para finalizar, con la primera línea ponemos el tiempo quequeremos que termine la ejecución de la simulación yllamamos al procedimiento “finish” que creamos al principio,para finalizar las trazas, y con la segunda línea ejecutamos lasimulación.$ns at 3.5 "finish"$ns run Una vez acomodados los nodos ejecutamos la simulación haciendo click en el botón play, para iniciarla. En la graficaUna vez creado todo el código anterior, guardamos los siguiente, podemos observar como al inicio de la simulación,cambios hechos en el archivo. Abrimos el terminal de Linux y se envían pequeños paquetes entre los diferentes nodos, esosescribimos la línea de código a continuación para ejecutar todo son los paquetes para la tabla de enrutamiento, para saber queel archivo: ruta debe escoger el tráfico, una vez comience el envío. Estos paquetes son enviados constantemente durante toda lans prueba.tcl simulación, incluso cuando se está generando el tráfico.E inmediatamente se abre la ventana con la simulación comose verá en el siguiente capítulo. V. ANÁLISIS DE RESULTADOSUna vez se ejecuta el archivo, nos muestra la siguiente imagende simulación: En la siguiente gráfica, se puede observar como el tráfico desde el nodo 0 hasta el 8 son enviados por la ruta más corta, gracias al enrutamiento dinámico que le configuramos anteriormente.
  6. 6. pero una vez se llena, solo de pierden paquetes azules, a diferencia del anterior que se perdían por igual. De igual manera, el nodo 5 comienza a generar un tráfico hacia el nodo 0, se puede ver en la grafica que éste flujo no interfiere con el flujo de datos que viene en dirección opuesta.Luego, comienza el nodo 1 a enviar el tráfico hacia el nodo 9simultáneamente que al tráfico generado por el nodo 0.Podemos ver como el enlace es full dúplex, es decir que por elenlace del nodo 0 al 1, el tráfico de subida es independiente alde bajada, los paquetes no se interceptan ni deben esperar aque uno termine de enviar para que el otro envíe. En la siguiente gráfica, se puede ver como los enlaces entre los nodos 0 y 3, y 2 y 8, han subido nuevamente, mientras que los enlaces entre los nodos 3 y 4, y 2 y 8, han quedado inactivos. Lo importante es observar lo que sucede entre los nodos 4 y 5, llegan los tráficos de los dos nodos, pero en este caso no se produce encolamiento ni pérdida de paquetes, esto se debe a que desde un principio se configuro un ancho de banda de 2 Mbps lo cual hace que se puedan enviar los paquetes sin ningún problema.En la siguiente gráfica, se observa que los enlaces entre el Igualmente se ve como el tráfico del nodo 5 hacia el 0, no senodo 0 y 3 y entre el 3 y 9, se caen los enlaces y el tráfico ve afectado.generado por el nodo 1, es redireccionado a través de losnodos 2, 4, 5 y 7. También podemos observar como lospaquetes son encolados entre los nodos 1 y 2, y se pierden enproporciones iguales, es decir, se usa un encolamiento “justo”en pérdida de paquetes, pero es importante diseñar topologíasdonde no sucedan pérdidas como éstas. VI. CONCLUSIONES El simulador NS es uno de los más robustos y confiables en el entorno digital, toda simulación que se haga en ésta herramienta y sea presentada ante comités importantes de tecnología, respetan y confían en los resultados que éste nosAhora, en la siguiente gráfica, se caen los enlaces entre los arroja.nodos 1 y 2, y entre el nodo 2 y 8. Igualmente el tráfico esenrutado a través de los otros enlaces, pero a diferencia de la También es importante tener conocimiento del lenguaje degráfica anterior, el encolamiento entre el nodo 0 y 3 es programación con la cuales trabaja éste, ya que, como vimosdiferente, pues se puede ver que el encolamiento es más largo, anteriormente, el simulador funciona, principalmente con
  7. 7. código, si se quiere hacer una buena simulación, concaracterísticas adicionales que éste tiene.El ejemplo es una muy pequeña muestra de lo que éste puedehacer, si quiere más información, puede descargar el manualque contiene toda la programación y todo lo que se puedehacer con ésta herramienta.Por último, es muy importante tener en cuenta a la hora deimplementar una topología de red, saber el tipo de tráfico quese va a enviar, el tipo de encolamiento y el ancho de banda,para que no hallan pérdidas de paquetes ni saturación de lainformación como se pudo observar en el capítulo del análisis.De igual forma, para eso es ésta herramienta, para hacerpruebas y poderlas corregir. VII. REFERENCIAS[1] http://blog.pucp.edu.pe/item/37506/instalar-ns2-en-ubuntu[2] http://www.isi.edu/nsnam/ns/tutorial/index.html[3] Manual de práctica con NS-2,http://jpadilla.docentes.upbbga.edu.co/programa%20redes/Manual%20de%20Practicas%20con%20NS2.pdf[4] Manual for the Network Simulator “ns”,http://www.isi.edu/nsnam/ns/tutorial/[5]http://linuxalbacete.org/web/index2.php?option=com_content&do_pdf=1&id=149[6]http://nsl.csie.nctu.edu.tw/NCTUnsReferences/memoria.pdf

×