martes, 9 de abril de 2013

Actividad 6: Métodos de ruteo y creación de topología en NS2

Para ésta entrada mostraremos como formar una topología y aplicar un enrutamiento utilizando el simulador NS-2.

En este caso veremos aplicado en una topología mixta mandando mensajes con el protocolo udp y veremos como se comporta al momento de estar tirando las aristas en la que se conecta con el nodo 5 que es el destino, mandándolas desde el nodo 0.

Inicializamos los nodos que vamos a empelar para el envio de paquetes
##creamos 7 nodos
for {set i 0} {$i < 7} {incr i} {
set n($i) [$ns node]
}
##tres nodos centrales
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
#nodo 7, 8 y 9
view raw gistfile1.tcl hosted with ❤ by GitHub

Hacemos las uniones entre los nodos
##unimos al primer nodo central
for {set i 0} {$i < 2} {incr i} {
$ns duplex-link $n0 $n($i) 1Mb 10ms DropTail
}
#unidmos al segundo nodo central
for {set i 2} {$i < 4} {incr i} {
$ns duplex-link $n1 $n($i) 1Mb 10ms DropTail
}
##unimos el tercer nodo central
for {set i 4} {$i < 7} {incr i} {
$ns duplex-link $n1 $n($i) 1Mb 10ms DropTail
}
##unimos los dos nodos centrales
$ns duplex-link $n1 $n0 1Mb 10ms DropTail
$ns duplex-link $n2 $n1 1Mb 10ms DropTail
##Hacemos diferentes conexiones entre los demas nodos
$ns duplex-link $n(0) $n(4) 1Mb 10ms DropTail
$ns duplex-link $n(1) $n(3) 1Mb 10ms DropTail
$ns duplex-link $n(3) $n(0) 1Mb 10ms DropTail
$ns duplex-link $n(5) $n(2) 1Mb 10ms DropTail
view raw gistfile1.tcl hosted with ❤ by GitHub

Creamos el tipo de conexión de datos a enviarse, en nuestro caso es udp y se lo asignamos al nodo 0 e indicamos que el destino será nuestro nodo 5
##Creamos el tipo de msn udp y se lo asignamos al nodo 0
set udp0 [new Agent/UDP]
$ns attach-agent $n(0) $udp0
##creamos el tamaño del los paquetes e intervalo de envio
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
##Decimos cual es nuestro nodo de destino y de cual enviaremos
set null0 [new Agent/Null]
$ns attach-agent $n(5) $null0
$ns connect $udp0 $null0
##iniciamos el envio
$ns at 0.5 "$cbr0 start"
view raw gistfile1.tcl hosted with ❤ by GitHub

Vamos indicando los nodos que iremos tirando, para ser su comportamiento
##Cortamos las aristas para verificar como se conporta
$ns rtmodel-at 1.0 down $n1 $n(3)
$ns rtmodel-at 1.5 down $n1 $n(4)
$ns rtmodel-at 2.0 down $n(0) $n0
##las vamos levantanto
$ns rtmodel-at 2.5 up $n1 $n(4)
$ns rtmodel-at 3.0 up $n1 $n(3)
$ns rtmodel-at 3.5 up $n(0) $n0
$ns at 4.5 "$cbr0 stop"
#finalizamos
$ns at 5.0 "finish"
$ns run
view raw gistfile1.tcl hosted with ❤ by GitHub

Código completo:
##iniciamos
set ns [new Simulator]
##declaramos el tipo de enrutamiento
$ns rtproto LS
##archivo para la simulación
set nf [open a.nam w]
set nt [open trace.tr w]
$ns namtrace-all $nf
$ns trace-all $nt
##que ara al final
proc finish {} {
global ns nf nt
$ns flush-trace
close $nf
close $nt
exec nam -a a.nam &
exit 0
}
##creamos 7 nodos
for {set i 0} {$i < 7} {incr i} {
set n($i) [$ns node]
}
##tres nodos centrales
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
#nodo 7, 8 y 9
##unimos al primer nodo central
for {set i 0} {$i < 2} {incr i} {
$ns duplex-link $n0 $n($i) 1Mb 10ms DropTail
}
#unidmos al segundo nodo central
for {set i 2} {$i < 4} {incr i} {
$ns duplex-link $n1 $n($i) 1Mb 10ms DropTail
}
##unimos el tercer nodo central
for {set i 4} {$i < 7} {incr i} {
$ns duplex-link $n1 $n($i) 1Mb 10ms DropTail
}
##unimos los dos nodos centrales
$ns duplex-link $n1 $n0 1Mb 10ms DropTail
$ns duplex-link $n2 $n1 1Mb 10ms DropTail
##Hacemos diferentes conexiones entre los demas nodos
$ns duplex-link $n(0) $n(4) 1Mb 10ms DropTail
$ns duplex-link $n(1) $n(3) 1Mb 10ms DropTail
$ns duplex-link $n(3) $n(0) 1Mb 10ms DropTail
$ns duplex-link $n(5) $n(2) 1Mb 10ms DropTail
##Creamos el tipo de msn udp y se lo asignamos al nodo 0
set udp0 [new Agent/UDP]
$ns attach-agent $n(0) $udp0
##creamos el tamaño del los paquetes e intervalo de envio
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
##Decimos cual es nuestro nodo de destino y de cual enviaremos
set null0 [new Agent/Null]
$ns attach-agent $n(5) $null0
$ns connect $udp0 $null0
##iniciamos el envio
$ns at 0.5 "$cbr0 start"
##Cortamos las aristas para verificar como se conporta
$ns rtmodel-at 1.0 down $n1 $n(3)
$ns rtmodel-at 1.5 down $n1 $n(4)
$ns rtmodel-at 2.0 down $n(0) $n0
##las vamos levantanto
$ns rtmodel-at 2.5 up $n1 $n(4)
$ns rtmodel-at 3.0 up $n1 $n(3)
$ns rtmodel-at 3.5 up $n(0) $n0
$ns at 4.5 "$cbr0 stop"
#finalizamos
$ns at 5.0 "finish"
$ns run
view raw gistfile1.tcl hosted with ❤ by GitHub
Video:

1 comentario:

  1. No discutes el aspecto de varias el modo de ruteo. Es una sola topología y no cien porciento parametrizado en su generación... 4 pts.

    ResponderEliminar