martes, 5 de marzo de 2013

Entrada # 5 - Laboratorio

Redes de Telecomunicaciones

Para esta entrada muestro un ejemplo de NS2, utilizando NAM como el simulador de este.

Primeramente instale NS2 y NAM.

Para instalar ns2 utilice Synaptic (instale todas las opciones que me dio de opción):



Para instalar NAM fue mediante terminal:



Los códigos utilizados para la simulación manejan la extensión tcl.

El código utilizado para la simulación es de la página: http://nile.wpi.edu/NS/simple_ns.html

A continuación lo muestro junto con unos comentarios donde trato de comprender que hacer cada parte del texto.

puts "Corriendo Simulacion :D"
#Con esta instruccion creamos un simulador de ns donde se pondra todo la ejecución
set ns [new Simulator]
#Se define los colores que tendra el TCP y el UDP respectivamente en la simulacion del NAM
$ns color 1 Green
$ns color 2 Blue
#Abrimos un archivo .nam el cual almacenara el trafico producido por el simulador
set nf [open out.nam w]
$ns namtrace-all $nf
#Define a 'finish' procedure
proc finish {} {
global ns nf
$ns flush-trace
#Close the NAM trace file
close $nf
#Execute NAM on the trace file
exec nam out.nam &
exit 0
}
#Creamos cuatro nodos los cuales seran utilizados para la simulacion
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
#El n0 sera el TCP y el n1 sera el UDP y estos se conectan al n2 con una velocidad de 2Mb cada 10 ms
#Estos nodos se convierten en el nodo n2 y se conecta al n3 con una velocidad de 1.7Mb cada 20 ms
$ns duplex-link $n0 $n2 2Mb 10ms DropTail
$ns duplex-link $n1 $n2 2Mb 10ms DropTail
$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail
#Set Queue Size of link (n2-n3) to 10
$ns queue-limit $n2 $n3 10
#SE acomodan los nodos en la simulacion del NAM
$ns duplex-link-op $n0 $n2 orient right-down
$ns duplex-link-op $n1 $n2 orient right-up
$ns duplex-link-op $n2 $n3 orient right
#Monitor the queue for link (n2-n3). (for NAM)
$ns duplex-link-op $n2 $n3 queuePos 0.5
#Creo una Conexion TCP
set tcp [new Agent/TCP]
$tcp set class_ 2
$ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
$ns connect $tcp $sink
#Se le asgina el TCP el color 1 o sea el verde
$tcp set fid_ 1
#Se crea una conexion FTP encima de la conexion TCP
set ftp [new Application/FTP]
#El FTP se vuelve un agente del TCP
$ftp attach-agent $tcp
$ftp set type_ FTP
#Creo una conexion UDP
set udp [new Agent/UDP]
$ns attach-agent $n1 $udp
set null [new Agent/Null]
$ns attach-agent $n3 $null
$ns connect $udp $null
#Se le asigno al UDP el color 2 o sea el rojo
$udp set fid_ 2
#Se pone un CBR encima de la conexion UDP
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set type_ CBR
$cbr set packet_size_ 1000
$cbr set rate_ 1mb
$cbr set random_ false
#Schedule events for the CBR and FTP agents
$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 4.0 "$ftp stop"
$ns at 4.5 "$cbr stop"
#Detach tcp and sink agents (not really necessary)
$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"
#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"
#Se imprime tamano del paquete CBR y el intervalo de envio de cada uno.
puts "CBR packet size = [$cbr set packet_size_]"
puts "CBR interval = [$cbr set interval_]"
#Corremos la simulacion
$ns run
view raw Tarea5.tcl hosted with ❤ by GitHub


Para correr un archivo tcl se emplea la siguiente instrucción.



En mi caso seria:



La simulación se explica con la siguiente imagen:


http://nile.wpi.edu/NS/simple_ns.html

Como ven en la imagen el circulo de arriba es el TCP y el de Abajo es el UDP y estos se enviarían con una velocidad de 2 mbps cada 10 ms 

Por ultimo el vídeo donde ejecuto la simulación:



En el vídeo el color azul es el del paquete udp y el verde el del TCP, cuando los paquetes se ponen en fila significa que hay un trafico en los paquetes.

Si algún cuadro se cae significa que se perdió algún paquete.

Referencias:

Manual Breve de TCL
http://www-gris.det.uvigo.es/~estela/SC0708/breve_manual_tcl.pdf

Ejemplo de NS2
http://nile.wpi.edu/NS/simple_ns.html