Tuesday 14 May 2019

ns2 program for wireless data transfer with xgraph

set ns [new Simulator]

set tf [open tf.tr w]
set ntf [open ntf.nam w]

$ns trace-all $tf
$ns namtrace-all-wireless $ntf 600 600

set topo [new Topography]

$topo load_flatgrid 600 600

create-god 500

$ns node-config -adhocRouting AODV
$ns node-config -antType Antenna/OmniAntenna
$ns node-config -propType Propagation/TwoRayGround
$ns node-config -channelType Channel/WirelessChannel
$ns node-config -macType Mac/802_11
$ns node-config -phyType Phy/WirelessPhy
$ns node-config -ifqType Queue/DropTail/PriQueue
$ns node-config -ifqLen 50
$ns node-config -llType LL
$ns node-config -topoInstance $topo
$ns node-config -macTrace ON
$ns node-config -movementTrace ON
$ns node-config -agentTrace ON
$ns node-config -routerTrace ON

set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]

$n0 set X_ 100
$n0 set Y_ 50
$n0 set Z_ 0.0
$ns initial_node_pos $n0 20

$n1 set X_ 50
$n1 set Y_ 150
$n1 set Z_ 0.0
$ns initial_node_pos $n1 20

$n2 set X_ 200
$n2 set Y_ 50
$n2 set Z_ 0.0
$ns initial_node_pos $n2 20

$n3 set X_ 100
$n3 set Y_ 300
$n3 set Z_ 0.0
$ns initial_node_pos $n3 20

$n4 set X_ 150
$n4 set Y_ 100
$n4 set Z_ 0.0
$ns initial_node_pos $n4 20

$n5 set X_ 200
$n5 set Y_ 30
$n5 set Z_ 0.0
$ns initial_node_pos $n5 20


set udp0 [new Agent/UDP]
set sink0 [new Agent/LossMonitor]
set vbr0 [new Application/Traffic/Exponential]
set udp1 [new Agent/UDP]
set sink1 [new Agent/LossMonitor]
set vbr1 [new Application/Traffic/Exponential]


$ns attach-agent $n4 $udp0
$ns attach-agent $n0 $sink0
$vbr0 attach-agent $udp0
$vbr0 set packetSize_ 200
$vbr0 set idle_time_ 12ms
$vbr0 set burst_time_ 20ms
$vbr0 set rate_ 100k
$ns attach-agent $n3 $udp1
$ns attach-agent $n0 $sink1
$vbr1 attach-agent $udp1
$vbr1 set packetSize_ 200
$vbr1 set idle_time_ 12ms
$vbr1 set burst_time_ 20ms
$vbr1 set rate_ 100k

$ns connect $udp0 $sink0
$ns connect $udp1 $sink1


set a1 [open a1.tr w]
set a2 [open a2.tr w]
set a3 [open a3.tr w]
set a4 [open a4.tr w]
set a5 [open a5.tr w]
set a6 [open a6.tr w]


proc record {} {

global ns sink0 sink1
global a1 a2 a3 a4 a5 a6
set time 0.5
set now [$ns now]

set bw1 [$sink0 set bytes_]
set bw2 [$sink0 set npkts_]
set bw3 [$sink0 set lastPktTime_]
set bw4 [$sink1 set bytes_]
set bw5 [$sink1 set npkts_]
set bw6 [$sink1 set lastPktTime_]

puts $a1 "$now [expr $bw1/$time*8/1000]"
puts $a2 "$now $bw2"
puts $a3 "$now $bw3"
puts $a4 "$now [expr $bw4/$time*8/1000]"
puts $a5 "$now $bw5"
puts $a6 "$now $bw6"

$sink0 set bytes_ 0
$sink0 set npkts_ 0
$sink0 set nlost_ 0
$sink1 set bytes_ 0
$sink1 set npkts_ 0
$sink1 set nlost_ 0

$ns at [expr $now+$time] "record"

}


proc finish {} {

global ns tf ntf  a1 a2 a3 a4 a5 a6
$ns flush-trace
close $tf
close $ntf
close $a1
close $a2
close $a3
close $a4
close $a5
close $a6
exec nam ntf.nam &
exec xgraph a1.tr a2.tr a3.tr a4.tr a5.tr a6.tr &
exit 0
}

$ns at 0.0 "$vbr0 start"
$ns at 0.3 "record"

$ns at 20.0 "$vbr0 stop"
$ns at 20.1 "finish"
$ns at 0.0 "$vbr1 start"
$ns at 0.3 "record"

$ns at 20.0 "$vbr1 stop"
$ns at 20.1 "finish"
$ns run

No comments:

Post a Comment