Você está na página 1de 3

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

Você também pode gostar