[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] FTP Frustration



LossMonitor does NOT send any ACKs. You have to use  "Agent/TCPSink" for
TCP applications...

On Thu, 20 Dec 2001, Stanley M Bielski wrote:

> Hmmm... should it take over 40 seconds to send 4 packets of default size
> over 3.0 ms of link delay?
>
> My networking knowledge is a little rusty, but if I tell FTP to send 40
> packets, shouldn't TCP send out the whole window? This is clearly not the
> case in my results. TCP sends out a packet, waits an geometrically
> increasing amount of time, and then sends out another.
>
> Any explanation for this behavior? Is LossMonitor not sending ACKs?
>
> My xgraph of [$source set ack_] stays at -1 during the course of my
> simulation.
>
> Here is my *VERY SIMPLE* sample code. Any ideas?
>
> -------------------------------------------------------
> #Create a simulator object
> set ns [new Simulator]
> set nf [open out.nam w]
> $ns namtrace-all $nf
>
> global source
>
> #Open the output files
> set f0 [open out0.tr w]
> set f1 [open out1.tr w]
> set f2 [open out2.tr w]
>
> #Create 3 nodes
> set n0 [$ns node]
> set n3 [$ns node]
> set n4 [$ns node]
>
> #Connect the nodes
> $ns duplex-link $n0 $n3 100Mb 1.5ms DropTail
> $ns duplex-link $n3 $n4 100Mb 1.5ms DropTail
>
> #Define a 'finish' procedure
> proc finish {} {
> 	global f0 f1 f2 ns nf
> 	#Close the output files
> 	close $f0
> 	close $f1
> 	close $f2
> 	#Call xgraph to display the results
> 	exec xgraph out0.tr -geometry 800x400 &
>         exec xgraph out1.tr -geometry 800x400 &
>         exec xgraph out2.tr -geometry 800x400 &
>         $ns flush-trace
> 	#Close the trace file
>         close $nf
> 	#Execute nam on the trace file
>         exec nam out.nam &
>         exit 0
> }
>
> proc attach-traffic { node sink} {
>     global source
> 	#Get an instance of the simulator
> 	set ns [Simulator instance]
>
> 	#Create a TCP agent and attach it to the node
> 	set source [new Agent/TCP]
> 	$ns attach-agent $node $source
>
> 	#Create FTP
> 	set traffic [new Application/FTP]
> 	$traffic set type_ FTP
>
>         # Attach traffic source to the traffic generator
>         $traffic attach-agent $source
> 	#Connect the source and the sink
> 	$ns connect $source $sink
> 	return $traffic
> }
>
> proc record {} {
>         global sink0 f0 f1 f2 source
> 	#Get an instance of the simulator
> 	set ns [Simulator instance]
> 	#Set the time after which the procedure should be called again
>         set time 0.01
> 	#How many packets have been received by the traffic sinks?
>         set packs [$sink0 set npkts_]
> 	#Get the current time
>         set now [$ns now]
> 	#show packets received
>         puts $f0 "$now $packs"
>         #show sequence number of sender
>         puts $f1 "$now [$source set t_seqno_]"
>         #show highest ack_ received
>         puts $f2 "$now [$source set ack_]"
> 	#Re-schedule the procedure
>         $ns at [expr $now+$time] "record"
> }
>
>
> set sink0 [new Agent/LossMonitor]
> $ns attach-agent $n4 $sink0
>
> set ftpapp [attach-traffic $n0 $sink0]
>
> #Start logging the received bandwidth
> $ns at 0.0 "record"
> #Start the traffic sources
> $ns at 0.2 "$ftpapp produce 40"
>
> #Call the finish procedure after 60 seconds simulation time
> $ns at 60 "finish"
>
> #Run the simulation
> $ns run
>
> -----------------------------------------------------
>
> Gracias,
> -Stan
>
>
>