#tcp1wtout.tcl
set ns [new Simulator]
set nf [open tcp1wtout.nam w]
$ns namtrace-all $nf
set tr [open tcp1wtout.tr w]
$ns trace-all $tr
proc finish {} {
global ns nf tr
$ns flush-trace
close $nf
close $tr
exec nam tcp1wtout2.nam &
exit 0
}
#Creazione della topologia
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
$ns duplex-link $n0 $n1 2Mb 100ms DropTail
$ns duplex-link $n1 $n2 2Mb 100ms DropTail
#Il livello di Trasporto
#Creo una connessione TCP con la procedura "create-connection"
#tra i nodi n0 e n2
set tcp02 [$ns create-connection TCP $n0 TCPSink $n2 0]
$ns color 0 red
#Pongo la finestra di controllo di flusso a 1 (pacchetto).
#Mi aspetto quindi che n1 mandi un solo pacchetto alla volta
$tcp02 set window_ 1
$tcp02 set ssthresh_ 64
#impostazione di alcuni valori per il calcolo del timeout
$tcp02 set maxrto_ 4
$tcp02 set tcpTick_ 0.1
#Il livello di applicazione
set ftp02 [new Application/FTP]
$ftp02 attach-agent $tcp02
puts "\n\n#### COMMENTI ####\n"
puts "0.1 :ftp02 starts"
puts "0.7 :link 1-2 down"
puts "5 :link 1-2 up"
puts "9 :link 1-2 down"
puts "17 :link 1-2 up\n"
#Temporizzazione della simulazione
$ns at 0.1 "$ftp02 start"
$ns rtmodel-at 0.7 down $n1 $n2
$ns rtmodel-at 5 up $n1 $n2
$ns rtmodel-at 9 down $n1 $n2
$ns rtmodel-at 17 up $n1 $n2
$ns at 20 "finish"
$ns run