Stop and Wait
Stop and Wait
0 "$n0 label Sender" $ns at 0.0 "$n1 label Receiver" set $ns set $ns nf [open A1-stop-n-wait.nam w] namtrace-all $nf f [open A1-stop-n-wait.tr w] trace-all $f
$ns duplex-link $n0 $n1 0.2Mb 200ms DropTail $ns duplex-link-op $n0 $n1 orient right $ns queue-limit $n0 $n1 10 Agent/TCP set nam_tracevar_ true set tcp [new Agent/TCP] $tcp set window_ 1 $tcp set maxcwnd_ 1 $ns attach-agent $n0 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n1 $sink $ns connect $tcp $sink set ftp [new Application/FTP] $ftp attach-agent $tcp $ns add-agent-trace $tcp tcp $ns monitor-agent-trace $tcp $tcp tracevar cwnd_ $ns at 0.1 "$ftp start" $ns at 3.0 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n1 $sink" $ns at 3.5 "finish" $ns at 0.0 "$ns trace-annotate \"Stop and Wait with normal operation\"" $ns at 0.05 "$ns trace-annotate \"FTP starts at 0.1\"" $ns $ns $ns $ns $ns $ns $ns $ns $ns $ns $ns $ns $ns $ns at at at at at at at at at at at at at at 0.11 0.35 0.56 0.79 0.99 1.23 1.43 1.67 1.88 2.11 2.32 2.55 2.75 2.99 "$ns "$ns "$ns "$ns "$ns "$ns "$ns "$ns "$ns "$ns "$ns "$ns "$ns "$ns trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate trace-annotate \"Send Packet_0\"" \"Receive Ack_0\"" \"Send Packet_1\"" \"Receive Ack_1\"" \"Send Packet_2\"" \"Receive Ack_2 \"" \"Send Packet_3\"" \"Receive Ack_3\"" \"Send Packet_4\"" \"Receive Ack_4\"" \"Send Packet_5\"" \"Receive Ack_5 \"" \"Send Packet_6\"" \"Receive Ack_6\""
proc finish {} { global ns nf $ns flush-trace close $nf puts "filtering..." exec tclsh ../ns-allinone-2.1b5/nam-1.0a7/bin/namfilter.tcl A1-stop-n-wait.nam puts "running nam..." exec nam A1-stop-n-wait.nam & exit 0 } $ns run