
if {$argc == 3} {
    set qsize  [lindex $argv 0] 
    set int [lindex $argv 1]
    set time [lindex $argv 2]

} else {
    puts ""
    puts "   1Mb, 50ms      0.5Mb, 50ms
    puts "n0 ---------- n1 -------------n2"
    puts "          queue_size      ACK_interval"
    puts ""
    puts "Usage: $argv0 queue_size (integer) ACK_interval simulation_time"
    exit 1
}


# Create the 'Simulator' object
set ns [new Simulator]

# Open a file for writing the nam trace data
set trace_nam [open out.nam w]

$ns namtrace-all $trace_nam

# Add a 'finish' procedure that closes the trace and starts nam
proc finish {} {
    global ns trace_nam
    $ns flush-trace
    exec nam out.nam &
    exit 0
}

# Color Codes
$ns color 1 Red
$ns color 2 Green
$ns color 3 Blue

#############################################################################
####### YOUR CODE GOES BELOW THIS LINE ######################################

# Define the topology
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]

#   object      from  to  bandwith   delay    queue
$ns duplex-link $n0   $n1 1Mb        50ms    DropTail
$ns duplex-link $n1   $n2 0.5Mb      50ms    DropTail 

$ns duplex-link-op $n1 $n2 queuePos 0.5
$ns queue-limit $n1 $n2 $qsize
set qmon [$ns monitor-queue $n1 $n2 1 2]

# Create a traffic source in node n0
set sink [new Agent/TCPSink/DelAck]
set ttcp0 [new Agent/TCP/RFC793edu]
$ns attach-agent $n2 $sink
$ns attach-agent $n0 $ttcp0 
$ns connect $ttcp0 $sink

Agent/TCPSink/DelAck set interval_ int
$ttcp0 set window_ 20
$ttcp0 set fid_ 1
$sink set interval_ $int

set ftp0 [new Application/FTP]
$ftp0 attach-agent $ttcp0


# When to start and to stop sending
$ns at 0.1 "$ftp0 start"
$ns at $time "finish"

####### END OF USER CODE ####################################################
#############################################################################

# Start the simulation
$ns run

