Laboratorio de Redes de Telecomunicaciones
La topología diseñada para esta ocasión consiste en 3 computadoras que desean enviar paquetes UDP a una sola maquina pero antes tienen que pasar por un servidor el cuál recibe los paquetes y se los envía a la computadora destino.
El proceso de ejecución fue el siguiente se corre el simulador y todo el trafico se guarda en un archivo, el cuál es tratado por dos archivos AWK para obtener dos archivos los cuales serán graficados para obtener la gráfica de latencia y Throughput.
Vídeo de la Simulación
A continuación muestro el código de la simulación:
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
puts "Corriendo Simulación" | |
#Creamos el simulador a usar | |
set ns [new Simulator] | |
#Colores | |
$ns color 0 Green | |
$ns color 1 Yellow | |
$ns color 2 Red | |
#Enrutamiento Distance Vector | |
$ns rtproto DV | |
#$ns mrtproto DM | |
#Abrimos un archivo .nam el cual almacenara el trafico producido por el simulador | |
set nf [open out.nam w] | |
$ns namtrace-all $nf | |
set trafico [open salida.puddi w] | |
$ns trace-all $trafico | |
#Se define el proceso que tendra la simulacion | |
proc finish {} { | |
#Se definen las variables ns y nf | |
global ns nf | |
#Se guarda en la variable nf el trafico lo que a su vez se guarda en el archivo .nam | |
$ns flush-trace | |
#Se cierra la variable nf para que no almacene mas información | |
close $nf | |
#Se ejecuta el archivo .nam | |
exec nam out.nam & | |
exit 0 | |
} | |
#Creamos los nodos a utilizar | |
for {set i 0} {$i < 5} {incr i} { | |
set n($i) [$ns node] | |
$n($i) label "Nodo $i" | |
$n($i) color Blue | |
#puts "Nodo $i" | |
} | |
#Conectamos los nodos | |
$ns duplex-link $n(0) $n(3) 10Mb 10ms DropTail | |
$ns duplex-link $n(1) $n(3) 10Mb 10ms DropTail | |
$ns duplex-link $n(2) $n(3) 10Mb 10ms DropTail | |
$ns duplex-link $n(3) $n(4) 5Mb 5ms DropTail | |
#Se acomodan los nodos en la simulacion | |
$ns duplex-link-op $n(0) $n(3) orient right-down | |
$ns duplex-link-op $n(1) $n(3) orient right | |
$ns duplex-link-op $n(2) $n(3) orient right-up | |
$ns duplex-link-op $n(3) $n(4) orient right | |
#Se crea el agente udp junto con su agente CBR y null para que cada nodo pueda enviarle info al nodo final | |
for {set i 0} {$i < 3} {incr i} { | |
set udp($i) [new Agent/UDP] | |
$ns attach-agent $n($i) $udp($i) | |
set null($i) [new Agent/Null] | |
$ns attach-agent $n(4) $null($i) | |
$ns connect $udp($i) $null($i) | |
$udp($i) set fid_ $i | |
#puts "$udp($i) set fid_ $i" | |
set cbr($i) [new Application/Traffic/CBR] | |
$cbr($i) attach-agent $udp($i) | |
$cbr($i) set type_ CBR | |
$cbr($i) set packet_size_ 1000 | |
$cbr($i) set rate_ 1mb | |
$cbr($i) set random_ false | |
} | |
$ns at 0.1 "$cbr(0) start" | |
$ns at 0.2 "$cbr(1) start" | |
$ns at 0.3 "$cbr(2) start" | |
$ns at 1.7 "$cbr(0) stop" | |
$ns at 1.8 "$cbr(1) stop" | |
$ns at 1.9 "$cbr(2) stop" | |
$ns at 2.0 "finish" | |
#Corremos la simulacion | |
$ns run |
Código Bash
El bash en el cuál se generan las imágenes.
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
for Tamano in "Resultado0_Resultado3.puddi" "Resultado1_Resultado3.puddi" "Resultado2_Resultado3.puddi" "Resultado4_Resultado3.puddi";do | |
rm Graficador.plot | |
touch Graficador.plot | |
echo "set term png" >> Graficador.plot | |
echo "set output '$Tamano.png'" >> Graficador.plot | |
echo "set xlabel \"Tiempo Total\"" >> Graficador.plot | |
echo "set ylabel \"Tiempo Espera\"" >> Graficador.plot | |
echo "plot '$Tamano' using (\$1):(\$2)" >> Graficador.plot | |
gnuplot Graficador.plot | |
done |
Código AWK
Para los Retardos
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 { | |
Inicial0 = 0.0; | |
Final0 = 0.0; | |
Inicial1 = 0.0; | |
Final1 = 0.0; | |
Inicial2 = 0.0; | |
Final2 = 0.0; | |
Inicial3 = 0.0; | |
Final3 = 0.0; | |
} | |
{ | |
Final0 = $2; | |
Final1 = $2; | |
Final2 = $2; | |
Final3 = $2; | |
if($1 == "r") | |
{ | |
if($3==0) | |
{ | |
printf("%f %f\n", Inicial0, Final0) > "Resultado0_Resultado3.puddi"; | |
Inicial0 += $2; | |
} | |
else | |
{ | |
if($3==1){ | |
printf("%f %f\n", Inicial1, Final1) > "Resultado1_Resultado3.puddi"; | |
Inicial1 += $2; | |
} | |
else | |
{ | |
if($3==2) | |
{ | |
printf("%f %f\n", Inicial2, Final2) > "Resultado2_Resultado3.puddi"; | |
Inicial2 += $2; | |
} | |
else | |
{ | |
if($3==4) | |
{ | |
printf("%f %f\n", Inicial3, Final3) > "Resultado4_Resultado3.puddi"; | |
Inicial3 += $2; | |
} | |
} | |
} | |
} | |
} | |
} | |
END { | |
Inicial1 = 0 | |
} |
Para los Throughput's
No hay comentarios:
Publicar un comentario