martes, 5 de marzo de 2013

Lab: Simulación

Se nos pide para esta entrada de laboratorio diseñar, ejecutar y reportar una simulación de prueba, incluyendo algunas medidas de desempeño y visualización, es por eso que realicé una simulación utilizando NS2, graficando sus valores obtenidos en gnuplot y python.

Lo que hice de simulación es el generar trafico utilizando el protocolo TCP y en capa aplicación utilizando FTP, haciendo una topología de árbol de manera que el nodo padre generara el tráfico y pasara por los demás nodos hijos y ver que si entre más lejos estés de este nodo padre, tenemos menos kbps por segundo, por lo que en los primeros segundos genero el tráfico hacia el nodo 7 y luego genero tráfico para el nodo 8.


Este es el código de la simulación.


set sim [new Simulator]
set archivo_1 [open salida_1.nam w]
$sim namtrace-all $archivo_1
proc termina_1 {} {
global sim archivo_1
$sim flush-trace
close $archivo_1
exec nam salida_1.nam &
exit 0
}
#Nodos suficientes para topologia arbol
set padre [$sim node]
set hijo1 [$sim node]
set hijo2 [$sim node]
set hijo3 [$sim node]
set ter1 [$sim node]
set ter2 [$sim node]
set ter3 [$sim node]
set ter4 [$sim node]
set ter5 [$sim node]
#conexiones para topologia arbol
$sim duplex-link $padre $hijo1 2.5Mb 10ms DropTail
$sim duplex-link $hijo1 $hijo2 2Mb 10ms DropTail
$sim duplex-link $hijo1 $hijo3 2Mb 10ms DropTail
$sim duplex-link $hijo3 $ter1 1.5Mb 10ms DropTail
$sim duplex-link $hijo3 $ter2 1.5Mb 10ms DropTail
$sim duplex-link $hijo3 $ter3 1.5Mb 10ms DropTail
$sim duplex-link $hijo2 $ter4 1.5Mb 10ms DropTail
$sim duplex-link $ter3 $ter5 1.5Mb 10ms DropTail
$sim queue-limit $padre $hijo1 25
$sim queue-limit $hijo1 $hijo2 15
$sim queue-limit $hijo1 $hijo3 15
$sim queue-limit $hijo3 $ter1 10
$sim queue-limit $hijo3 $ter2 10
$sim queue-limit $hijo3 $ter3 10
$sim queue-limit $hijo2 $ter4 10
$sim queue-limit $ter3 $ter5 10
$sim duplex-link-op $padre $hijo1 orient down
$sim duplex-link-op $hijo1 $hijo2 orient down-right
$sim duplex-link-op $hijo1 $hijo3 orient down-left
$sim duplex-link-op $hijo3 $ter1 orient down-left
$sim duplex-link-op $hijo3 $ter2 orient down-right
$sim duplex-link-op $hijo3 $ter3 orient down
$sim duplex-link-op $ter3 $ter5 orient down
$sim duplex-link-op $hijo2 $ter4 orient down-right
set tcp [new Agent/TCP]
$sim attach-agent $padre $tcp
set nulo [new Agent/TCPSink]
$sim attach-agent $ter4 $nulo
$sim connect $tcp $nulo
set tcp2 [new Agent/TCP]
$sim attach-agent $padre $tcp2
set nulo2 [new Agent/TCPSink]
$sim attach-agent $ter5 $nulo2
$sim connect $tcp2 $nulo2
set ftp [new Application/FTP]
$ftp attach-agent $tcp
set ftp2 [new Application/FTP]
$ftp2 attach-agent $tcp2
$sim at 0.01 "$ftp start"
$sim at 0.5 "$ftp stop"
$sim at 0.51 "$ftp2 start"
$sim at 1.0 "$ftp2 stop"
$sim at 1.0 "termina_1"
$sim run
view raw Simulacion.tcl hosted with ❤ by GitHub

En donde pueden ver cómo genero el tráfico y la posición de los nodos, modificando la intensidad de ms y trazos según los nodos y su jerarquía.

Luego, todo esta simulación genera un archivo nam el cual por medio de python saco sus valores interesantes para obtener los kbps que recibe y el tiempo capturado.


#!/usr/bin/python
def obtener_datos():
f = open("salida_1.nam")
dato = f.readline().split(" ")
cont = 0
while dato != "":
dato = f.readline().split(" ")
if dato[0] == "r":
if dato[8] == "tcp":
if dato[6] == "7":
print str(float(dato[10])/float(dato[2])*(0.008)) + " " + str(dato[2])
cont = cont + 1
if dato == "":
break
obtener_datos()
view raw obtener.py hosted with ❤ by GitHub

Luego, grafico el comportamiento en gnuplot.

set grid layerdefault
set term png
set title 'Experimento Nodos'
set ylabel 'kbps'
set xlabel 'Segundos'
set label ""
set key out vert
set key right top
set output "grafica_nodo.png"
plot "datos_nodo7.txt" using 2:1 w l lt 1 title 'Nodo7', "datos_nodo8.txt" using 2:1 w l lt 2 title 'Nodo8'
view raw grafica.gnu hosted with ❤ by GitHub

Obteniendo la siguiente gráfica.


En donde podemos comprobar que el nodo más lejano al padre (nodo 8), no da la misma velocidad que el nodo 7.

Esta sería la entrada de laboratorio para telecomunicaciones, si tienen alguna duda o comentario favor de comentar.

1 comentario: