Lo que se midió en esta simulación fue el throughput que son la cantidad de bits que se transmiten exitosamente por segundo y la latencia que es la velocidad en que se propaga la señal, dependiendo del medio por el que viaja.
La simulación que se muestra a continuación, se intento reproducir un videostreaming, donde el transmisor esta emitiendo un "show" en vivo, y donde los paquetes viajan por UDP (ya que es la mejor para videoconferencias o cosas por el estilo), estos paquetes llegan al servidor y estas son enviadas a los routers de las personas que quieran verlo y asi hasta llegar a las computadoras de los usuarios.
Aquí el código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set ns [new Simulator -multicast on] | |
set tf [open trace.tr w] | |
$ns trace-all $tf | |
#Abrimos los archivos para NAM | |
set nf [open out.nam w] | |
$ns namtrace-all $nf | |
#Creamos los nodos | |
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] | |
set n7 [$ns node] | |
set n8 [$ns node] | |
#Creamos los enlaces entre los nodos | |
$ns duplex-link $n0 $n1 1.5mb 10ms DropTail | |
$ns duplex-link $n1 $n2 1.5Mb 10ms DropTail | |
$ns duplex-link $n1 $n3 1.5Mb 10ms DropTail | |
$ns duplex-link $n3 $n4 1.5Mb 10ms DropTail | |
$ns duplex-link $n3 $n5 1.5Mb 10ms DropTail | |
$ns duplex-link $n3 $n6 1.5Mb 10ms DropTail | |
$ns duplex-link $n2 $n7 1.5Mb 10ms DropTail | |
$ns duplex-link $n2 $n8 1.5Mb 10ms DropTail | |
#Acomodamos las figuras en NAM | |
$ns duplex-link-op $n0 $n1 orient down | |
$ns duplex-link-op $n1 $n2 orient down-right | |
$ns duplex-link-op $n1 $n3 orient down-left | |
$ns duplex-link-op $n3 $n4 orient down-left | |
$ns duplex-link-op $n3 $n5 orient down-right | |
$ns duplex-link-op $n3 $n6 orient down | |
$ns duplex-link-op $n2 $n7 orient down | |
$ns duplex-link-op $n2 $n8 orient down-right | |
#Establecemos la dispocision de la coneccion | |
set udp0 [new Agent/UDP] | |
$ns attach-agent $n0 $udp0 | |
$udp0 set fid_ 1 | |
#Creacion de trafico CBR | |
set cbr1 [new Application/Traffic/CBR] | |
$cbr1 attach-agent $udp0 | |
#Agente null | |
set null [new Agent/Null] | |
$ns attach-agent $n1 $null | |
$ns connect $udp0 $null | |
#Establecemos la dispocision de la coneccion | |
set udp1 [new Agent/UDP] | |
$ns attach-agent $n1 $udp1 | |
$udp1 set fid_ 1 | |
#Creacion de trafico CBR | |
set cbr2 [new Application/Traffic/CBR] | |
$cbr2 attach-agent $udp1 | |
#Agente null | |
set null [new Agent/Null] | |
$ns attach-agent $n3 $null | |
$ns connect $udp1 $null | |
#Establecemos la dispocision de la coneccion | |
set udp2 [new Agent/UDP] | |
$ns attach-agent $n1 $udp2 | |
$udp2 set fid_ 1 | |
#Creacion de trafico CBR | |
set cbr3 [new Application/Traffic/CBR] | |
$cbr3 attach-agent $udp2 | |
#Agente null | |
set null [new Agent/Null] | |
$ns attach-agent $n2 $null | |
$ns connect $udp2 $null | |
set udp3 [new Agent/UDP] | |
$ns attach-agent $n3 $udp3 | |
$udp3 set fid_ 2 | |
#Creacion de trafico CBR | |
set cbr4 [new Application/Traffic/CBR] | |
$cbr4 attach-agent $udp3 | |
#Agente null | |
set null [new Agent/Null] | |
$ns attach-agent $n4 $null | |
$ns connect $udp3 $null | |
set udp4 [new Agent/UDP] | |
$ns attach-agent $n3 $udp4 | |
$udp4 set fid_ 2 | |
#Creacion de trafico CBR | |
set cbr5 [new Application/Traffic/CBR] | |
$cbr5 attach-agent $udp4 | |
#Agente null | |
set null [new Agent/Null] | |
$ns attach-agent $n6 $null | |
$ns connect $udp4 $null | |
set udp5 [new Agent/UDP] | |
$ns attach-agent $n3 $udp5 | |
$udp5 set fid_ 2 | |
#Creacion de trafico CBR | |
set cbr6 [new Application/Traffic/CBR] | |
$cbr6 attach-agent $udp5 | |
#Agente null | |
set null [new Agent/Null] | |
$ns attach-agent $n5 $null | |
$ns connect $udp5 $null | |
set udp6 [new Agent/UDP] | |
$ns attach-agent $n3 $udp6 | |
$udp6 set fid_ 3 | |
#Creacion de trafico CBR | |
set cbr7 [new Application/Traffic/CBR] | |
$cbr7 attach-agent $udp6 | |
#Agente null | |
set null [new Agent/Null] | |
$ns attach-agent $n1 $null | |
$ns connect $udp6 $null | |
$ns at 0.1 "$cbr1 start" | |
$ns at 1.0 "$cbr1 stop" | |
$ns at 0.3 "$cbr2 start" | |
$ns at 0.3 "$cbr3 start" | |
$ns at 0.5 "$cbr4 start" | |
$ns at 0.5 "$cbr5 start" | |
$ns at 0.5 "$cbr6 start" | |
$ns at 0.5 "$cbr7 start" | |
$ns rtmodel-at 0.5 down $n2 $n8 | |
$ns rtmodel-at 0.5 down $n2 $n7 | |
$ns rtmodel-at 1.0 up $n2 $n8 | |
$ns rtmodel-at 1.0 up $n2 $n7 | |
$ns at 1.0 "$cbr2 stop" | |
$ns at 1.0 "$cbr3 stop" | |
$ns at 1.0 "$cbr4 stop" | |
$ns at 1.0 "$cbr5 stop" | |
$ns at 1.0 "$cbr6 stop" | |
$ns at 1.0 "$cbr7 stop" | |
$ns at 1.2 "finish" | |
#Definimos un procedimiento para "terminar" | |
proc finish {} { | |
global ns nf tf | |
$ns flush-trace | |
close $nf | |
close $tf | |
#ejecutamos NAM en los archivos Trace | |
exec nam out.nam & | |
exit 0 | |
} | |
$ns color 1 red | |
$ns color 2 green | |
$ns color 3 blue | |
$ns color 4 green | |
$n1 color red | |
$n1 label "Servidor" | |
$n4 color green | |
$n4 label "Receptor 1" | |
$n5 color green | |
$n5 label "Receptor 2" | |
$n6 color green | |
$n6 label "Receptor 3" | |
$n7 color green | |
$n7 label "Receptor 4" | |
$n8 color green | |
$n8 label "Receptor 5" | |
$n0 color blue | |
$n0 label "Transmisor 1" | |
$n3 color purple | |
$n3 label "Router 1" | |
$n2 color purple | |
$n2 label "Router 2" | |
#Corremos la simulacion | |
$ns run |
Como se puede apreciar dos de los receptores no pudieron ver u oír el vídeo ya que hubo problema con la conexión y por lo tanto no llegaron los paquetes.
Thrughput
Código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BEGIN { | |
node = 1; | |
Tinicial = 0.0; | |
Tfinal = 0.0; | |
paquetes=0; | |
bytes=0; | |
} | |
{ | |
Tfinal = $2; | |
if (tfinal - tinicial > 0.05) { | |
perdida = bytes_counter / (Tfinal-Tinicial); | |
perdida /= 1000000; | |
printf("%f %f\n", Tfinal, thru) > "archivo.dat"; | |
Tinicial = $2; | |
} | |
if ($1=="r") { | |
bytes += $6; | |
paquetes++; | |
} | |
} | |
END { | |
print("LOL"); | |
} |
Aquí el archivo creado con los resultados:
Aquí el resultado en forma de gráfica:
Como se puede apreciar la se transmitía cada vez mejor, aumentando poco a poco.
Latencia
Código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Begin{ | |
Tinicial = 0.0; | |
Tfinal = 0.0; | |
latencia = 0; | |
paquete = 0; | |
} | |
{ | |
Tfinal = $2 | |
latencia = Tfinal - Tinicial | |
Tinicial = Tfinal | |
paquete += 1; | |
if ($1 == "r"){ | |
printf ("%f %f\n",paquete,latencia); | |
} | |
} | |
End { | |
print("LOL"); | |
} |
Aquí una parte del resultado del código:
Aquí los resultados en gráfica:
Esto nos indica que la velocidad no siempre es la misma al entregar los paquetes.
Bibliografias:
http://nile.wpi.edu/NS/simple_ns.html
No hay comentarios:
Publicar un comentario