martes, 16 de abril de 2013

Entrada # 7 - Laboratorio

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:

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
view raw Tarea7.tcl hosted with ❤ by GitHub

Código Bash


El bash en el cuál se generan las imágenes.

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
view raw Correr.sh hosted with ❤ by GitHub

Código AWK

Para los Retardos
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
}
view raw Retardo.awk hosted with ❤ by GitHub

Para los Throughput's


Imágenes de las graficas de Latencia







No hay comentarios:

Publicar un comentario