
# Criar nossa rede
set ns [ new Simulator ]

# cores para o NAM?

# arquivo de saida 
set nf [ open trace.out w]
$ns trace-all $nf

proc fim {} {

	global ns nf
	$ns flush-trace
	close $nf
	exit 0

}


# criar todos os nos
# 20 emissores
# 20 roteadores um para cada emissor
# 1 roteador cetral
# 2 receptores
# 2 roteadores um para cada receptor

# emissores


# colocando varios for para uma enumeracao melhor
# emissores vao de 0 - 19
for {set i 0} {$i < 20} { incr i } {
    set e($i) [$ns node]
}
# roteadores dos emissores de 20 - 39 mapeados com emissor +20
for {set i 0} {$i < 20} { incr i} {
	set r_e($i) [$ns node]
}

# 40
set r_x [$ns node] 
# 41
set r_d(0) [$ns node]
# 42
set r_d(1) [$ns node]
# 43
set d(0) [$ns node]
# 44
set d(1) [$ns node]


for {set i 0} {$i < 20} {incr i} {
    $ns duplex-link $e($i) $r_e($i) 6Mb 10ms DropTail
    $ns duplex-link $r_e($i) $r_x 6Mb 0.1ms DropTail
}

$ns duplex-link $r_x $r_d(0) 10Mb 1ms DropTail
$ns duplex-link $r_x $r_d(1) 10Mb 1ms DropTail

$ns duplex-link $r_d(0) $d(0) 10Mb 10ms DropTail
$ns duplex-link $r_d(1) $d(1) 10Mb 10ms DropTail

# FILA
$ns queue-limit $r_x $r_d(0) 50
$ns queue-limit $r_x $r_d(1) 50

# abrir conexoes ftp over tcp
for {set i 0} {$i < 20} { incr i } {
    set tcp($i) [ new Agent/TCP ]
    $tcp($i) set class_ 2
    $ns attach-agent $e($i) $tcp($i)
    
    set sink($i) [ new Agent/TCPSink ]
    if { $i < 10 } {
        $ns attach-agent $d(0) $sink($i)
    } else {
        $ns attach-agent $d(1) $sink($i)
    }
    
    $ns connect $tcp($i) $sink($i)
    
    $tcp($i) set fid_ 1
    
    set ftp($i) [ new Application/FTP ]
    $ftp($i) attach-agent $tcp($i)
    $ftp($i) set type_ FTP

    # agendar inicio e fim
    $ns at 0.1 "$ftp($i) start"
    $ns at 9.9 "$ftp($i) stop"
    
}

$ns at 10.0 "fim"

$ns run
