martes, 16 de abril de 2013

Actividad 7: Simulación de Tráfico con ns-2

Para esta semana se nos encargo hacer una simulación empleando ns-2 y observar el desempeño que se tiene en nuestro sistema.

Desarrollo
[imagen de la simulación realizada]

En mi caso lo que busque simular, era el comportamiento que se tiene entre dos ruters (en dos casas), donde se estan conectando por udp dos nodos al ruter 1 y mandan la información a otro nodo y este se encuentra en el ruter 2. El tipo de tipología que se tiene es estrella, donde se tiene unido ambos ruters.

Código de la Simulación con NS-2:
##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
##Crear archivo
set trace [open trace.tr w]
$ns trace-all $trace
proc finish {} {
global ns nf nt
$ns flush-trace
close $nf
close $nt
exec nam -a a.nam &
exit 0
}
##creamos 6 nodos
for {set i 0} {$i < 6} {incr i} {
set n($i) [$ns node]
}
##dos nodos centrales
set ruter1 [$ns node]
set ruter2 [$ns node]
##unimos los nodos 0 al 3 con el ruter 1 al igual
## del 3 al 6 al ruter 2
for {set i 0} {$i < 3} {incr i} {
$ns duplex-link $ruter1 $n($i) 1Mb 10ms DropTail
}
for {set i 3} {$i < 6} {incr i} {
$ns duplex-link $ruter2 $n($i) 1Mb 10ms DropTail
}
# TOPOLIGIA
##unimos los dos nodos centrales
$ns duplex-link $ruter1 $ruter2 1Mb 10ms DropTail
## unimos nodos
##aqui creamos el tip de mensaje udp
set udp0 [new Agent/UDP]
$ns attach-agent $n(4) $udp0
# set udp0 flowid to 1
$udp0 set fid_ 1
##creamos el tamaño del los paquetes
## el intervalo de envio
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
set sinknode1 [new Agent/LossMonitor]
$ns attach-agent $ruter1 $sinknode1
# Connect the UDP traffic source to Null sink
$ns connect $udp0 $sinknode1
##Creamos otra conexion udp
set udp1 [new Agent/UDP]
$ns attach-agent $n(3) $udp1
##creamos el tamaño del los paqueres
## el intervalo de envio
set cbr1 [new Application/Traffic/CBR]
$cbr1 set packetSize_ 500
$cbr1 set interval_ 0.005
$cbr1 attach-agent $udp1
##aqui decidimos cual sera el destino
##final de nuestros paqueres
set null0 [new Agent/Null]
$ns attach-agent $n(1) $null0
$ns connect $udp0 $null0
$ns connect $udp1 $null0
$ns at 0.5 "$cbr0 start"
$ns at 0.5 "$cbr1 start"
$ns at 4.5 "$cbr0 stop"
$ns at 4.5 "$cbr1 stop"
#finalizamos
$ns at 5.0 "finish"
$ns run
view raw gistfile1.tcl hosted with ❤ by GitHub


Resultado:

La salida fueron cortadas, para no mostrar todo el resultado.
+ 0.00017 0 6 rtProtoLS 100 ------- 0 0.1 6.2 -1 0
- 0.00017 0 6 rtProtoLS 100 ------- 0 0.1 6.2 -1 0
+ 0.007102 2 6 rtProtoLS 100 ------- 0 2.1 6.2 -1 1
- 0.007102 2 6 rtProtoLS 100 ------- 0 2.1 6.2 -1 1
r 0.01097 0 6 rtProtoLS 100 ------- 0 0.1 6.2 -1 0
+ 0.01097 6 0 rtProtoLS 20 ------- 0 6.2 0.1 -1 2
- 0.01097 6 0 rtProtoLS 20 ------- 0 6.2 0.1 -1 2
+ 0.431978 0 6 rtProtoLS 20 ------- 0 0.1 6.2 -1 109
- 0.431978 0 6 rtProtoLS 20 ------- 0 0.1 6.2 -1 109
r 0.431978 6 1 rtProtoLS 100 ------- 0 6.2 1.2 -1 104
+ 0.431978 1 6 rtProtoLS 20 ------- 0 1.2 6.2 -1 110
- 0.431978 1 6 rtProtoLS 20 ------- 0 1.2 6.2 -1 110
r 0.431978 6 2 rtProtoLS 100 ------- 0 6.2 2.1 -1 105
+ 0.431978 2 6 rtProtoLS 20 ------- 0 2.1 6.2 -1 111
- 0.431978 2 6 rtProtoLS 20 ------- 0 2.1 6.2 -1 111
r 0.439998 0 6 rtProtoLS 20 ------- 0 0.1 6.2 -1 106
r 0.439998 1 6 rtProtoLS 20 ------- 0 1.2 6.2 -1 107
r 0.439998 2 6 rtProtoLS 20 ------- 0 2.1 6.2 -1 108
r 0.442138 0 6 rtProtoLS 20 ------- 0 0.1 6.2 -1 109
r 0.442138 1 6 rtProtoLS 20 ------- 0 1.2 6.2 -1 110
r 0.442138 2 6 rtProtoLS 20 ------- 0 2.1 6.2 -1 111
+ 0.5 4 7 cbr 500 ------- 1 4.0 1.0 0 112
- 0.5 4 7 cbr 500 ------- 1 4.0 1.0 0 112
+ 0.5 3 7 cbr 500 ------- 0 3.0 1.0 0 113
- 0.5 3 7 cbr 500 ------- 0 3.0 1.0 0 113
+ 0.505 4 7 cbr 500 ------- 1 4.0 1.0 1 114
- 0.505 4 7 cbr 500 ------- 1 4.0 1.0 1 114
+ 0.505 3 7 cbr 500 ------- 0 3.0 1.0 1 115
- 0.505 3 7 cbr 500 ------- 0 3.0 1.0 1 115
+ 0.51 4 7 cbr 500 ------- 1 4.0 1.0 2 116
- 0.51 4 7 cbr 500 ------- 1 4.0 1.0 2 116
+ 0.51 3 7 cbr 500 ------- 0 3.0 1.0 2 117
- 0.51 3 7 cbr 500 ------- 0 3.0 1.0 2 117
r 0.514 4 7 cbr 500 ------- 1 4.0 1.0 0 112
+ 0.514 7 6 cbr 500 ------- 1 4.0 1.0 0 112
- 0.514 7 6 cbr 500 ------- 1 4.0 1.0 0 112
r 0.514 3 7 cbr 500 ------- 0 3.0 1.0 0 113
+ 0.514 7 6 cbr 500 ------- 0 3.0 1.0 0 113
+ 0.515 4 7 cbr 500 ------- 1 4.0 1.0 3 118
- 0.515 4 7 cbr 500 ------- 1 4.0 1.0 3 118
+ 0.515 3 7 cbr 500 ------- 0 3.0 1.0 3 119
- 0.515 3 7 cbr 500 ------- 0 3.0 1.0 3 119
- 0.518 7 6 cbr 500 ------- 0 3.0 1.0 0 113
view raw gistfile1.txt hosted with ❤ by GitHub


Medidas de desempeño
Para las medidas de desempeño me base en el código de awk de un compañero de clase, aqui la liga, donde se busca obtener la latencia y el rendimiento de lo obtenido de la simulación del archivo trace.tr.

Con lo obtenido, si graficó en gnuplot, donde podemos ver las variaciones de desempeño.

[rendimiento de la simulación]

[latencia]

Conclusiones:
En la latencia podemos observar como no se tienen tantas variaciones y tiende a ser logarítmica, en cambio en el rendimiento de desempeño se puede observar como se tienen diferentes variaciones, que es cuando empieza a tener pérdidas en los paquetes.

1 comentario:

  1. La ortografía requiere mejora. Para la tarea, sería bueno tener parametrizados ambos lo de generación de topología y la generación de tráfico. 6 pts.

    ResponderEliminar