set val(chan) Channel/WirelessChannel; # Tipo do canal
set val(prop) Propagation/TwoRayGround; # Modelo de propagao
set val(ant) Antenna/OmniAntenna; # Tipo da antena set val(ll) LL; # Tipo da camada de link set val(ifq) Queue/DropTail/PriQueue; # Disciplina de escalonamento set val(ifqlen) 50; # Mimo de pacotes na fila set val(netif) Phy/WirelessPhy; # Tipo de interface de rede set val(mac) Mac/802_11; # Tipo da Camada MAC set val(rp) DSDV; # DSR Protocolo de roteamento ad -hoc dos n set nr_no 4 ; # numero de n set top_X 650 ; # valor X da dimens da topologia em metros set top_Y 650 ; # valor y da dimens da topologia em metros set data_interval 0.2 ; # CBR Traffic Interval # Criar instancia do simulador set ns [new Simulator] $ns set color 0 Green $ns set color 1 Red $ns set color 2 Blue # Criar ficheiros trace set tracefile [open out.tr w] $ns use-newtrace $ns trace-all $tracefile set namfile [open out.nam w] $ns namtrace-all-wireless $namfile $top_X $top_Y # Criao de um objecto topologia set topo_area [new Topography] $topo_area load_flatgrid $top_X $top_Y #definio do procedimento finish proc finish {} { global ns tracefile namfile $ns flush-trace close $tracefile close $namfile exec nam out.nam & exit 0 } # Criar o elemento God create-god $nr_no set canal [new $val(chan)] # Configurao dos nos $ns node-config -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen 50 \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -topoInstance $topo_area \ -agentTrace ON \ -routerTrace ON \ -macTrace ON \ -movementTrace ON \ -channel $canal # criao de 4 nos for {set i 0} {$i < $nr_no } {incr i} { set n($i) [$ns node] $n($i) random-motion 0 ;# Desactivao do movimento aleatio } # Provide initial (X,Y, for now Z=0) co-ordinates for mobilenodes # and produce some simple node movements $n(0) set X_ 100 $n(0) set Y_ 100 $n(0) set Z_ 0.0 $n(1) set X_ 400 $n(1) set Y_ 150 $n(1) set Z_ 0.0 $n(2) set X_ 400 $n(2) set Y_ 100 $n(2) set Z_ 0.0 $n(3) set X_ 400 $n(3) set Y_ 400 $n(3) set Z_ 0.0 #definir o movimento dos nos $ns at 0.5 "$n(1) setdest 100.0 300.0 200.0" $ns at 1.0 "$n(2) setdest 300.0 100.0 200.0" $ns at 0.5 "$n(3) setdest 300.0 300.0 150.0" # definir o tamanho dos nos for {set i 0} {$i < $nr_no } {incr i} { $ns initial_node_pos $n($i) 20 } # Agente UDP para enviar pacotes do n1 set udp0 [new Agent/UDP] $ns attach-agent $n(0) $udp0 # Agente UDP para enviar pacotes do n2 set udp1 [new Agent/UDP] $ns attach-agent $n(0) $udp1 # Agente UDP para enviar pacotes do n2 set tcp [new Agent/TCP] # Associar uma cor ao trafego duarante a animacao $tcp set class_ 1 $ns attach-agent $n(1) $tcp # Aplicao de trafego CBR (Constant Bit rate) set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 1024 $cbr0 set random_ 0 $cbr0 set maxpkts_ 10000 $cbr0 attach-agent $udp0 # Aplicao de trafego CBR (Constant Bit rate) set cbr1 [new Application/Traffic/CBR] $cbr1 set packetSize_ 1024 $cbr1 set random_ 0 $cbr1 set maxpkts_ 10000 $cbr1 attach-agent $udp1 # Aplicao de trafego ftp set ftp [new Application/FTP] $ftp set packetSize_ 1024 $ftp set random_ 0 $ftp set maxpkts_ 10000 $ftp attach-agent $tcp # Agente Null para receber pacotes no n0 set null0 [new Agent/Null] $null0 set fid_ 1 $ns attach-agent $n(1) $null0 $ns connect $udp0 $null0 # Agente Null para receber pacotes no n3 set null1 [new Agent/Null] $null1 set fid_ 2 $ns attach-agent $n(3) $null1 $ns connect $udp1 $null1 # Criar uma instncia do objecto agente TCPSink (no destino) set sink [new Agent/TCPSink] $ns attach-agent $n(2) $sink # Associar agente sink (do destino) ao agente tcp (da fonte) $ns connect $tcp $sink # Tell nodes when the simulation ends for {set i 0} {$i < $nr_no } {incr i} { $ns at 3.0 "$n($i) reset"; } $ns at 3.0 "finish" $ns at 0.3 "$cbr0 start" $ns at 0.3 "$cbr1 start" $ns at 0.2 "$ftp start" #$ns at [expr 2.0 + 0.01] "puts \"NS EXITING...\"; $ns halt" puts "Starting Simulation..." $ns run