Professional Documents
Culture Documents
Prcticas
PRCTICA 1.
INTRODUCCIN AL SIMULADOR ns
El objetivo de esta prctica es introducir al alumno en la utilizacin de uno de los simuladores de redes ms ampliamente utilizado entre la comunidad docente e investigadora del rea de redes de computadores. El simulador ns es una herramienta disponible en mltiples plataformas que ofrece soporte para la simulacin de todo tipo de redes tanto cableadas como inalmbricas. El simulador permite la configuracin de gran cantidad de parmetros tales como la topologa de la red, la pila de protocolos y parmetros especficos de cada protocolo. Tambin permite evaluar el impacto de diferentes tipos de trfico de red. Se realiza una prctica guiada que introduce al alumno la herramienta de simulacin presentando los aspectos bsicos de la misma que permiten al alumno una primera toma de contacto a partir de la cual poder avanzar en el estudio y anlisis de diferentes aspectos relacionados con las redes de computadores. Informacin detallada del simulador esta disponible en el siguiente sitio web: http://www.isi.edu/nsnam/ns/. 1. El simulador ns. ................................................................................... 2 2. Obtencin del simulador...................................................................... 3 2.1 Instalacin de ns. ............................................................................. 3 3. Herramienta Network Animation, nam................................................. 4 4. Un primer ejemplo. .............................................................................. 6 4.1 Anlisis del primer ejemplo. ............................................................. 6 5. Ejercicios. .......................................................................................... 11
Pgina 1
1. El simulador ns.
El simulador ns fue originalmente desarrollado bajo la supervisin del proyecto VINT (Virtual InterNetwork Testbed). Este proyecto estuvo respaldado por la DARPA (Defense Advanced Research Projects Agency) y actualmente ha quedado en manos de un grupo de investigadores y desarrolladores de la Universidad de Berkeley, LBL (Lawrence Berkeley Laboratory), USC/ISI (University of Southern California/Information Sciences Institute) y Xerox PARC (Palo Alto Research Center). La versin actualmente en desarrollo es la 2 (de la cual existen mltiples subversiones). ns es un simulador gratuito que se suministra con el cdigo fuente completo. El principal cambio desde la versin 1 ha sido una mejor subdivisin de las clases de objetos que componen el ncleo del simulador (para permitir un mejor desarrollo del mismo) y la adopcin del lenguaje OTcl como lenguaje de scripting. El simulador ns consta de un ncleo principal escrito en C++ al que se invoca simplemente tecleando ns en la lnea de comandos (una vez este ha sido correctamente instalado). A partir de este punto el usuario puede interactuar directamente con el simulador, a travs de un lenguaje de interface. El lenguaje de interface es OTcl, una versin de Tcl 2 orientada a objetos. En realidad, el mtodo anterior no es el ms recomendable. ns est pensado para ser ejecutado en modo batch. El usuario define mediante un script la pila de protocolos y otros aspectos bsicos del tipo de red a simular, y proporciona a ns diversos datos, algunos en forma de ficheros acerca del escenario a simular y del tipo y caractersticas del trfico se va a utilizar. Conforme avanza la simulacin, se generan un conjunto de datos de salida que se almacenan en un fichero de traza. A partir de las trazas de simulacin se pueden utilizar lenguajes como Perl y AWK para filtrar la traza y obtener los ndices de prestaciones que se deseen evaluar. Finalmente, herramientas tales como Network Animator (nam) permiten realizar un anlisis visual del envo y recepcin de paquetes de datos y control a medida que avanza la simulacin. La Figura 1 muestra un esquema del proceso de simulacin
Script Otc
Network Simulator 2
Archivo de
Procesamiento de datos
Network Animator
Figura 1. Estructura del proceso del simulacin.
Pgina 2
El simulador ns, es un simulador extremadamente potente, diseado por y para investigadores. A pesar de esto, y debido a que es altamente configurable, resulta tambin indicado para ejecutar simulaciones de redes concretas as como herramienta educativa.
Tras descargar el paquete, este debe instalarse correctamente en el sistema, descomprimiendo el fichero, compilando en caso de ser necesario y finalmente ejecutando los scripts de configuracin que establecen las variables de entorno necesarias.
Pgina 3
Una vez descargado, el fichero se debe descomprimir en un directorio determinado. A continuacin se deben compilar los ficheros fuentes para generar los binarios del simulador y sus utilidades asociadas. Se debe ejecutar el comando ./configure desde el directorio donde ha sido descomprimido ns para generar los scripts de compilacin correctamente. A continuacin se ejecuta la orden de compilacin make (puede tardar hasta treinta minutos en compilar, dependiendo de la velocidad de la mquina en la cual se est trabajando): Si todo ha ido correctamente, tras la ejecucin de las ordenes anteriores ns estar compilado en nuestro sistema listo para ser invocado. Nota: Los PCs del laboratorio ya tienen instalada una copia del simulador. Sin embargo para que ste funcione correctamente se deben establecer una serie de variables de entorno. Para establecer dichas variables correctamente basta con ejecutar el script bash_setup_ns2 disponible en la web de la asignatura. Estableciendo previamente los permisos de ejecucin sobre el script bash_setop_ns2, ejecute el siguiente comando: source bash_setup_ns2 En este punto ya debe estar disponible el simulador ns.
Pgina 4
Figura 2. Herramienta nam. Las principales reas y funciones de la herramienta nam son las siguientes: Animation Area: En esta zona de la ventana se visualiza el escenario y la animacin del mismo. Zoom In y Zoom Out: Estos dos botones permiten acercar o alejar el escenario y poder abarcar un mayor rango de visin de la simulacin. Stop/Play Animation: Como su nombre indica sirven para iniciar y detener la animacin. Current Animation Time: Indica el tiempo que llevamos de simulacin. Su valor llegar hasta el tiempo que le hubiramos indicado en la simulacin. Step: Este valor nos indica lo rpido que evolucionar la simulacin (en milisegundos). Su valor se puede modificar con el slider que hay debajo del marcador. Men: Agrupa varias opciones como por ejemplo grabar la animacin, imprimir el rea de animacin, ver la energa de los nodos, filtrar el tipo de paquetes a visualizar (Datos, Mac, Routing), etc.
Pgina 5
4. Un primer ejemplo.
En este apartado se presenta un primer ejemplo sencillo que se utilizar para introducir los conceptos bsicos de utilizacin del simulador. La forma bsica de utilizacin del simulador es la siguiente: 1. Desarrollo de un fichero scripts escrito en OTcl. Los scripts describen en lenguaje OTcl las caractersticas de la simulacin a llevar a cabo. Para editar estos scripts se necesitarn tener conocimientos bsicos de OTcl. En la direccin http://www.isi.edu/nsnam/ns/tutorial/index.html se puede encontrar manuales relacionados con OTcl. Un primer punto de partida puede ser utilizar alguno de los numerosos ejemplos disponibles en el directorio /tcl/ex de la distribucin del simulador. 2. Ejecucin del script. Una vez desarrollado el script, la forma de ejecutarlo se puede realizar utilizando el comando siguiente: ns script.tcl 3. Anlisis de los resultados. A partir de la simulacin realizada se pueden generan dos ficheros de salida. Un fichero con extensin .nam utilizado por la herramienta nam para realizar una animacin de la simulacin y un fichero de traza con extensin .tr a partir del cual se pueden obtener los ndices de prestaciones que se deseen, utilizando scripts de filtrado en lenguajes tales como Perl o AWK.
Pgina 6
7 Las lneas 4-6 se utilizan para asociar colores con el trfico ns. Este cdigo esta asociado con las animaciones de la herramienta nam. 8 set n0 [$ns node] 9 set n1 [$ns node] 10 set n2 [$ns node] 11 set n3 [$ns node] Las lneas 8-11 declaran 4 estaciones y les asigna las variables n0 a n3. 12 13 set f [open out.tr w] 14 $ns trace-all $f 15 set nf [open out.nam w] 16 $ns namtrace-all $nf 17 Las lneas 12-17 declaran los descriptores de los ficheros de salida out.tr (fichero de traza) y out.nam (fichero de animacin utilizado por nam). 18 $ns duplex-link $n0 $n2 5Mb 2ms DropTail 19 $ns duplex-link $n1 $n2 5Mb 2ms DropTail 20 $ns duplex-link $n2 $n3 1.5Mb 10ms DropTail 21 Las lneas 18-20 declaran enlaces entres las estaciones. Por cada enlace se indica caractersticas tales como el tipo (duplex) el ancho de banda (5 Mb/s o 1.5 Mb/s) el retardo de propagacin (2ms o 10 ms) y la poltica de servicio de las colas (DropTail corresponde a una poltica first-in-first-out). 22 $ns duplex-link-op $n0 $n2 orient right-up 23 $ns duplex-link-op $n1 $n2 orient right-down 24 $ns duplex-link-op $n2 $n3 orient right 25
Pgina 7
26 $ns duplex-link-op $n2 $n3 queuePos 0.5 27 Las lneas 22-26 son comandos que se utilizan para generar el fichero de animacin .nam, y describen la orientacin de las estaciones y los enlaces. 28 set udp0 [new Agent/UDP] 29 $ns attach-agent $n0 $udp0 30 set cbr0 [new Application/Traffic/CBR] 31 $cbr0 attach-agent $udp0 32 Las lneas 28-31 declaran un agente de transporte UDP en la estacin n0, y le asocian un trfico CBR. 33 set udp1 [new Agent/UDP] 34 $ns attach-agent $n3 $udp1 35 $udp1 set class_ 1 36 set cbr1 [new Application/Traffic/CBR] 37 $cbr1 attach-agent $udp1 38 Las lneas 33-37 son parecidas a las anteriores con la nica diferencia de que se utiliza la lnea 35 para etiquetar este trfico con una clase de servicio diferente. 39 set null0 [new Agent/Null] 40 $ns attach-agent $n3 $null0 41 42 set null1 [new Agent/Null] 43 $ns attach-agent $n1 $null1 44 Las lneas 39-43 declaran y asocian agentes del tipo "null" a las estaciones receptoras. Estos agentes simplemente aceptan trfico sin realizar ninguna otra accin adicional.
Pgina 8
45 $ns connect $udp0 $null0 46 $ns connect $udp1 $null1 47 Las lneas 45 y 46 establecen las conexiones entre los agentes udp y null. 48 $ns at 1.0 "$cbr0 start" 49 $ns at 1.1 "$cbr1 start" Las lneas 48 y 49 indican los instantes en los que se comienza a generar trfico CBR (instante 1.0 y 1.1 respectivamente). 50 51 set tcp [new Agent/TCP] 52 $tcp set class_ 2 53 set sink [new Agent/TCPSink] 54 $ns attach-agent $n0 $tcp 55 $ns attach-agent $n3 $sink 56 $ns connect $tcp $sink 57 set ftp [new Application/FTP] 58 $ftp attach-agent $tcp 59 $ns at 1.2 "$ftp start" 60 Las lneas 51-59 declarar un agente del tipo TCP entre las estaciones n0 y n3. A continuacin se asocial un trfico FTP (file transfer protocol) sobre dicho agente. En el instante 1.2 se comienza a transferir un fichero de tamao infinito. 61 $ns at 1.35 "$ns detach-agent $n0 $tcp ; $ns detachagent $n3 $sink" 62 La lnea 61 indica la parada del trfico FTP en el instante 1.35. 63 puts [$cbr0 set packetSize_] 64 puts [$cbr0 set interval_]
Pgina 9
65 Las lneas 63 y 64 indican que se impriman en pantalla las variables tamao del paquete e intervalo entre paquetes CBR. 66 $ns at 3.0 "finish" 67 La lnea 66 indica el instante en el que finaliza la simulacin. 68 proc finish {} { 69 70 71 72 73 74 75 76 77 } 78 Las lneas 68-77 declaran una funcin encargada de cerrar los descriptores de ficheros y lanzar la herramienta nam de forma automtica una vez finalizada la simulacin. 79 $ns run 80 Finalmente, la lnea 79 indica que se ejecute el objeto simulador declarado en la lnea 2. puts "running nam..." exec nam out.nam & exit 0 global ns f nf $ns flush-trace close $f close $nf
Pgina 10
5. Ejercicios.
Antes de realizar los ejercicios se deber obtener y descomprimir en un directorio el paquete p3_scripts.tar.gz con los diferentes scripts de la prctica. Para descomprimir el fichero ejecute la siguiente orden: tar xzvf p3_scripts.tar.gz Ejercicio 1. Ejecute el fichero primer.tcl e indique cual es el tamao del paquete CBR y el intervalo de envo de los mismos.
Ejercicio 2. Analice el fichero de traza out.tr. Nota: Cada lnea de este fichero corresponde a un evento donde cada uno de los campos tiene un significado especfico. As, por cada lnea el primer campo hace referencia a la operacin (+ = paquete entra en una cola, - = paquete sale de una cola, r = paquete recibido, d = paquete eliminado). El siguiente campo indica el tiempo en que ocurre el evento. A continuacin aparecen las estaciones fuente y destino, el tipo y el tamao del paquete. Del resto de campos, resulta de especial inters el ltimo campo, el cual es un identificador de paquete, y permite realizar un seguimiento de los diferentes paquetes.
Ejercicio 3. Ejecute la herramienta nam con el fichero out.nam generado e intente identificar los diferentes flujos de datos. En que periodo temporal hay una mayor congestin de la red? Nota: Intente poner el paso de simulacin aproximadamente en 50 microseg y visualizar la evolucin de la simulacin a partir del segundo 1.
Pgina 11
Ejercicio 4. A partir de los conceptos tratados en la asignatura de Redes calcule el producto bandwidth-delay (tamao de la ventana) de los enlaces entre las estaciones 0-3 y 2-3.
Ejercicio 5. Utilice la herramienta nam para analizar cuantos paquetes estn siendo enviados sin llegar al destino entre el instante 1.0 y 1.1. Se pide: 1. Cuntos paquetes estan in fligh entre las estaciones 0-2? 2. Cuntos paquetes estan in fligh entre las estaciones 2-3? 3. A que se debe esta diferencia?
Ejercicio 6 A partir del fichero de traza out.tr indicar cuantos paquetes son eliminados. (Intente buscar eventos cuyo primer campo sea d = drop).
Pgina 12
Nota: Utilice el comando grep Se pide: Cuntos paquetes se eliminan debido a saturacin de alguna cola?
Ejercicio 7 El script primer.tcl utiliza un tamao de cola igual a 50 paquetes. En este ejercicio se va a modificar el tamao de la cola entre las estaciones 2 y 3. Para realizar este cambio se deben aadir las siguientes lneas tras la lnea 27 del fichero primer.tcl. $ns queue-limit $n2 $n3 10 puts "Nuevo tamao de cola entre 2 y 3 es [[[$ns link $n2 $n3] queue] set limit_]" Se pide: 1. Modificar el script primer.tcl. 2. Cuntos paquetes se eliminan debido a saturacin de alguna cola? 3. Intente visualizar con la herramienta nam los paquetes eliminados 4. Elimine las dos lneas aadidas al script original.
Pgina 13
Como se comento anteriormente, para obtener ndices de prestaciones a partir del fichero de traza out.tr, lo ms cmodo es utilizar alguno de los numerosos lenguajes de scripts tales como perl y awk. A continuacin se utilizarn dos scripts realizados en lenguaje perl para analizar la relacin existente entre ancho de banda y variabilidad del retardo o jitter. Samples.pl. Es un script que a partir del fichero de traza obtiene el retardo que ha sufrido desde que fue enviado hasta que es recibido por la estacin destino. Este script utiliza como entrada el fichero out.tr y genera como resultado el fichero out.tr.delay. Stddev.pl. Obtiene la media y desviacin tpica de los valores contenidos en out.tr.delay.
Ejercicio 8. Ejecutar los siguientes comandos: $ perl samples.pl -infile out.tr $ perl stddev.pl -infile out.tr.delays Se pide: 1. Indicar cual es el retardo mnimo, mximo, la media y la desviacin tpica de los paquetes enviados.
Pgina 14
Ejercicio 9. Modifique el script primer.tcl para reducir el ancho de banda entre las estaciones 2-3 desde 1.5 Mb/s hasta 500 Kb/s Se pide: 1. Indicar cual es el retardo mnimo, mximo, la media y la desviacin tpica de los paquetes enviados. 2. Razone los resultados obtenidos.
Pgina 15