martes, 5 de marzo de 2013

ACTIVIDAD 5: SIMULACION CON NS2

Para esta semana tenemos la tarea de simular una red mediante el network simulator 2 (NS2), usando Network Animator (NAM).

Para instalar los programas en ubuntu es simple , con el comando que acostumbramos usar:




El código de ejemplo no fue hecho por mi, lo encontré aquí : http://webingineer.wordpress.com/2010/08/15/simulation-example-in-ns-2/

////

#Se crea el objeto simulador
set ns [new Simulator]
#Para mostrar el flujo de datos en colores diferentes en NAM
$ns color 1 Blue
$ns color 2 Red
#Archivo NAM
set nf [open out.nam w]
$ns namtrace-all $nf
#Definir procedimiento
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
}
#Se crean los nodos
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
#Se crean las aristas
$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
#Tamano de la cola en la arista n2-n3
$ns queue-limit $n2 $n3 10
#posicionar los nodos para 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
#Se monitorea la arista n2-n3 para NAM
$ns duplex-link-op $n2 $n3 queuePos 0.5
#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
$tcp set fid_ 1
#Conexion FTB sobre TCP
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP
#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
$udp set fid_ 2
#Conexion CBR sobre 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
#Eventos para los agentes CBR y FTP
$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 4.0 "$ftp stop"
$ns at 4.5 "$cbr stop"
#Despegar los agentes tcp y sink
$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"
#Se llama al procedimiento llamado "finish" despues de 5 segundos de simulacion
$ns at 5.0 "finish"
#Imprime el tamano del paquete CBR y el intervalo
puts "CBR packet size = [$cbr set packet_size_]"
puts "CBR interval = [$cbr set interval_]"
#Iniciar simulacion
$ns run
view raw simple.tcl hosted with ❤ by GitHub
////

El escenario descrito por el código anterior se puede describir mediante el siguiente diagrama:


Mediante el diagrama ( y el código) podemos ver los siguientes detalles de la simulación:

  • Se crea una conexión TCP sobre FTP en el nodo 0.
  • Se crea una conexión UDP sobre CBR en el nodo 1.
  • Las conexiones nodo 0 - nodo 2 y nodo 1 - nodo 2 tienen una velocidad de 2Mbps con un delay de 10 ms .
  • La conexion nodo 2 - nodo 3 tiene una velicdad de 1.7 Mbps con un delay de 20 ms.
  • El tamaño de cada paquete es de 1KByte.
Aquí esta la simulación en video, donde podemos ver que al transmitir datos entre el nodo 2 y el nodo 3, se desprenden unos cuadrados rojos y azules, estos representan los paquetes perdidos.


1 comentario: