Last active
December 15, 2015 22:35
-
-
Save edigreat/1e6cc1d85a290d1747a4 to your computer and use it in GitHub Desktop.
Simulacion de un Router como un buffer
This file contains hidden or 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] | |
| set numeroNodos 5 | |
| #Creamos un archivo de trace | |
| set mytrace [open out.tr w] | |
| $ns trace-all $mytrace | |
| #Creamos un trace de nam | |
| set myNam [open out.nam w] | |
| $ns namtrace-all $myNam | |
| #Procedimiento de finalizacion | |
| proc finish {} { | |
| global ns mytrace myNam | |
| $ns flush-trace | |
| close $mytrace | |
| close $myNam | |
| exec nam out.nam & | |
| exit 0 | |
| } | |
| $ns color 1 red ; | |
| $ns color 2 SeaGreen ; | |
| $ns color 3 blue ; | |
| #Creamos nodos fuente | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Creando el nodo fuente n$i" | |
| set n($i) [$ns node] | |
| } | |
| #Creamos nodos "Gateway" | |
| set g1 [$ns node] | |
| set g2 [$ns node] | |
| #Creamos nodos destino | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Creando el nodo destino r$i" | |
| set r($i) [$ns node] | |
| } | |
| # Conectamos los nodos fuentes con g1 | |
| # duplex-link src dst bw delay qtype(tipo de cola entre los nodos) | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Conectado el nodo fuente n$i con g1 " | |
| $ns duplex-link $n($i) $g1 1Mb 10ms DropTail | |
| } | |
| #conectados los "Gateway" | |
| $ns duplex-link $g1 $g2 1Mb 10ms DropTail | |
| # Conectamos g2 con los nodos destinos | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Conectado el g2 con nodo destino r($i)" | |
| $ns duplex-link $r($i) $g2 1Mb 10ms DropTail | |
| } | |
| #Posicionamiento para grafico nam | |
| #$ns duplex-link-op $n0 $g1 orient right | |
| #$ns duplex-link-op $n1 $g1 orient right | |
| #$ns duplex-link-op $g1 $g2 orient left | |
| #tamanio de la cola entre g1 y g2 en paquetes | |
| $ns queue-limit $g1 $g2 10 | |
| #Verificador de trafico | |
| #$ns duplex-link-op $n0 $g1 queuePos 0.5 | |
| #$ns duplex-link-op $n1 $g1 queuePos 0.5 | |
| $ns duplex-link-op $g1 $g2 queuePos 0.5 | |
| #Creamos los agentes TCP fuente | |
| #Agent/TCP/Reno - a Reno TCP sender | |
| #Agent/TCP/Newreno - Reno with a modification | |
| #Agent/TCP/Sack1 - TCP with selective repeat (follows RFC2018) | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Creando tcp fuente tcp$i" | |
| set tcp($i) [new Agent/TCP/Newreno] | |
| } | |
| #Relacionamos los agentes TCP FUENTE | |
| #con los nodos fuentes | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "relacionando n$i con tcp$i " | |
| $ns attach-agent $n($i) $tcp($i) | |
| } | |
| #Creamos los agentes TCP Destino | |
| # | |
| # Agent/TCPSink - TCP sink with one ACK per packet | |
| # Agent/TCPSink/DelAck - TCP sink with configurable delay per ACK | |
| # Agent/TCPSink/Sack1 - selective ACK sink (follows RFC2018) | |
| # Agent/TCPSink/Sack1/DelAck - Sack1 with DelAck | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Creando tcp Destino sink$i" | |
| set sink($i) [new Agent/TCPSink] | |
| } | |
| #Relacionamos los agentes TCP Destino | |
| #con los nodos Destino | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Relacionamos nodo r$i y con agente sink$i" | |
| $ns attach-agent $r($i) $sink($i) | |
| } | |
| #conectamos tcp fuente y sink (destino) | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Conectamos agentes tcp$i y sink$i" | |
| $ns connect $tcp($i) $sink($i) | |
| } | |
| #asignamos id a tcp fuente | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Asignando id a tcp$i" | |
| $tcp($i) set fid_ $i | |
| } | |
| #Creamos agentes FTP | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Creando ftp ftp$i" | |
| set ftp($i) [new Application/FTP] | |
| } | |
| #Relaciones sesiones ftp a tcp fuente | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| puts "Relacionando ftp$i con tcp$i" | |
| $ftp($i) attach-agent $tcp($i) | |
| } | |
| #Eventos | |
| #$ns at 0.0 "$n0 label $numeroNodos " | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| $ns at 0.0($i) "$ftp($i) start" | |
| } | |
| #$ns at 0.07 "$ftp(1) start" | |
| #$ns at 0.07 "$ftp(2) start" | |
| #$ns at 1.0 "$ftp(0) stop" | |
| #$ns at 1.0 "$ftp(1) stop" | |
| for {set i 0} {$i < $numeroNodos } {incr i} { | |
| $ns at 1.0($i) "$ftp($i) stop" | |
| } | |
| $ns at 1.5 "finish" | |
| #inicia la simulacion | |
| $ns run | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment