#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 



