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 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 proc conecta_arbol {} { global sim padre hijo1 hijo2 hijo3 ter1 ter2 ter3 ter4 ter5 $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 } #conexiones para topologia estrella proc conecta_estrella {} { global sim padre hijo1 hijo2 hijo3 ter1 ter2 ter3 ter4 ter5 $sim duplex-link $padre $hijo1 2.5Mb 10ms DropTail $sim duplex-link $padre $hijo2 2Mb 10ms DropTail $sim duplex-link $padre $hijo3 2Mb 10ms DropTail $sim duplex-link $padre $ter1 1.5Mb 10ms DropTail $sim duplex-link $padre $ter2 1.5Mb 10ms DropTail $sim duplex-link $padre $ter3 1.5Mb 10ms DropTail $sim duplex-link $padre $ter4 1.5Mb 10ms DropTail $sim duplex-link $padre $ter5 1.5Mb 10ms DropTail $sim queue-limit $padre $hijo1 25 $sim queue-limit $padre $hijo2 15 $sim queue-limit $padre $hijo3 15 $sim queue-limit $padre $ter1 10 $sim queue-limit $padre $ter2 10 $sim queue-limit $padre $ter3 10 $sim queue-limit $padre $ter4 10 $sim queue-limit $padre $ter5 10 $sim duplex-link-op $padre $hijo1 orient down $sim duplex-link-op $padre $hijo2 orient down-right $sim duplex-link-op $padre $hijo3 orient down-left $sim duplex-link-op $padre $ter1 orient up-left $sim duplex-link-op $padre $ter2 orient up-right $sim duplex-link-op $padre $ter3 orient up $sim duplex-link-op $padre $ter5 orient right $sim duplex-link-op $padre $ter4 orient left } #conexiones para topologia anillo proc conecta_anillo {} { global sim padre ter1 ter2 ter3 ter4 ter5 $sim duplex-link $padre $ter1 1.5Mb 10ms DropTail $sim duplex-link $ter1 $ter2 1.5Mb 10ms DropTail $sim duplex-link $ter2 $ter3 1.5Mb 10ms DropTail $sim duplex-link $ter3 $ter4 1.5Mb 10ms DropTail $sim duplex-link $ter4 $ter5 1.5Mb 10ms DropTail $sim duplex-link $ter5 $padre 1.5Mb 10ms DropTail $sim queue-limit $padre $ter1 10 $sim queue-limit $ter1 $ter2 10 $sim queue-limit $ter2 $ter3 10 $sim queue-limit $ter3 $ter4 10 $sim queue-limit $ter4 $ter5 10 $sim queue-limit $ter5 $padre 10 $sim duplex-link-op $padre $ter1 orient down-right $sim duplex-link-op $ter1 $ter2 orient down $sim duplex-link-op $ter2 $ter3 orient down-left $sim duplex-link-op $ter3 $ter4 orient up-left $sim duplex-link-op $ter4 $ter5 orient up $sim duplex-link-op $ter5 $padre orient up-right } #conexiones para topologia mixta proc conecta_mixto {} { global sim padre hijo1 hijo2 hijo3 ter1 ter2 ter3 ter4 ter5 $sim duplex-link $padre $hijo1 2.5Mb 10ms DropTail $sim duplex-link $padre $hijo2 2.5Mb 10ms DropTail $sim duplex-link $hijo1 $hijo2 2Mb 10ms DropTail $sim duplex-link $hijo1 $ter1 2Mb 10ms DropTail $sim duplex-link $hijo2 $ter2 1.5Mb 10ms DropTail $sim duplex-link $ter2 $ter1 1.5Mb 10ms DropTail $sim duplex-link $ter1 $hijo3 1.5Mb 10ms DropTail $sim duplex-link $hijo3 $ter3 1.5Mb 10ms DropTail $sim duplex-link $hijo3 $ter1 1.5Mb 10ms DropTail $sim duplex-link $ter3 $ter4 1.5Mb 10ms DropTail $sim duplex-link $ter4 $ter1 1.5Mb 10ms DropTail $sim duplex-link $ter4 $ter5 1.5Mb 10ms DropTail $sim duplex-link $ter5 $ter2 1.5Mb 10ms DropTail $sim queue-limit $padre $hijo1 25 $sim queue-limit $padre $hijo2 15 $sim queue-limit $hijo1 $hijo2 15 $sim queue-limit $hijo2 $ter2 10 $sim queue-limit $ter2 $ter1 10 $sim queue-limit $ter1 $hijo3 10 $sim queue-limit $hijo3 $ter3 10 $sim queue-limit $hijo3 $ter1 10 $sim queue-limit $ter3 $ter4 10 $sim queue-limit $ter4 $ter1 10 $sim queue-limit $ter4 $ter5 10 $sim queue-limit $ter5 $ter2 10 $sim duplex-link-op $padre $hijo1 queuePos 0.5 $sim duplex-link-op $padre $hijo2 queuePos 0.5 $sim duplex-link-op $hijo1 $hijo2 queuePos 0.5 $sim duplex-link-op $hijo2 $ter2 queuePos 0.5 $sim duplex-link-op $ter2 $ter1 queuePos 0.5 $sim duplex-link-op $ter1 $hijo3 queuePos 0.5 $sim duplex-link-op $hijo3 $ter3 queuePos 0.5 $sim duplex-link-op $hijo3 $ter1 queuePos 0.5 $sim duplex-link-op $ter3 $ter4 queuePos 0.5 $sim duplex-link-op $ter4 $ter1 queuePos 0.5 $sim duplex-link-op $ter4 $ter5 queuePos 0.5 $sim duplex-link-op $ter5 $ter2 queuePos 0.5 } #conexiones para topologia lineal proc conecta_lineal {} { global sim padre hijo1 hijo2 hijo3 ter1 ter2 ter3 ter4 ter5 $sim duplex-link $padre $hijo1 2.5Mb 10ms DropTail $sim duplex-link $hijo1 $hijo2 2Mb 10ms DropTail $sim duplex-link $hijo2 $hijo3 2Mb 10ms DropTail $sim duplex-link $hijo3 $ter1 1.5Mb 10ms DropTail $sim duplex-link $ter1 $ter2 1.5Mb 10ms DropTail $sim duplex-link $ter2 $ter3 1.5Mb 10ms DropTail $sim duplex-link $ter3 $ter4 1.5Mb 10ms DropTail $sim duplex-link $ter4 $ter5 1.5Mb 10ms DropTail $sim queue-limit $padre $hijo1 25 $sim queue-limit $hijo1 $hijo2 15 $sim queue-limit $hijo2 $hijo3 15 $sim queue-limit $hijo3 $ter1 10 $sim queue-limit $ter1 $ter2 10 $sim queue-limit $ter2 $ter3 10 $sim queue-limit $ter3 $ter4 10 $sim queue-limit $ter4 $ter5 10 $sim duplex-link-op $padre $hijo1 orient left $sim duplex-link-op $hijo1 $hijo2 orient left $sim duplex-link-op $hijo2 $hijo3 orient left $sim duplex-link-op $hijo3 $ter1 orient left $sim duplex-link-op $ter1 $ter2 orient left $sim duplex-link-op $ter2 $ter3 orient left $sim duplex-link-op $ter3 $ter4 orient left $sim duplex-link-op $ter4 $ter5 orient left } proc llamada args { foreach arg $args { puts "Comando de entrada: $args" if {$args == "estrella"} { conecta_estrella } elseif {$args == "arbol"} { conecta_arbol } elseif {$args == "anillo"} { conecta_anillo } elseif {$args == "mixto"} { conecta_mixto } elseif {$args == "lineal"} { conecta_lineal } else { puts "Selecciona un comando, prueba arbol" conecta_arbol } } } llamada $argv global sim padre ter4 ter5 set tcp [new Agent/TCP] $sim attach-agent $padre $tcp set sink [new Agent/TCPSink] $sim attach-agent $ter4 $sink $sim connect $tcp $sink set tcp2 [new Agent/TCP] $sim attach-agent $padre $tcp2 set sink2 [new Agent/TCPSink] $sim attach-agent $ter5 $sink2 $sim connect $tcp2 $sink2 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