Sunteți pe pagina 1din 50

CODING

#------------------------Environmental Settings-----------------

set val(nn) 51 ;# number of


mobilenodes

#--------------------- Simulator Object Creation----------------


set ns_ [new Simulator]

#------------------ Trace File to record all the Events---------


set f [open Trace.tr w]
$ns_ trace-all $f
$ns_ use-newtrace

#------------------------ NAM Window creation-------------------


set namtrace [open Nam.nam w]
$ns_ namtrace-all-wireless $namtrace 1250 1200

#------------------------- Topology Creation--------------------


set topo [new Topography]
$topo load_flatgrid 1250 1200

#------------------- General Operational Director---------------


create-god $val(nn)

#----------------------- Node Configuration---------------------

$ns_ node-config -adhocRouting AODV \


-llType LL \
-macType Mac/802_11 \
-ifqType Queue/DropTail/PriQueue \
-ifqLen 500 \
-antType Antenna/OmniAntenna \
-propType Propagation/TwoRayGround \
-phyType Phy/WirelessPhy \
-channelType Channel/WirelessChannel \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-idlePower 1.2 \
-rxPower 1.0 \
-txPower 1.5 \
-sleepPower 0.000015

#-------------------- Node Creation-----------------------------


set god_ [create-god $val(nn)]
for {set i 0} {$i < $val(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) set X_ 565.0
$node_($i) set Y_ 565.0
$node_($i) set Z_ 0.0
$god_ new_node $node_($i)
$node_($i) color black
$ns_ initial_node_pos $node_($i) 60
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Node
Deploy~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$ns_ at 0.05 "$node_(0) setdest 565.632 565.686


857.087846001208"

$ns_ at 0.05 "$node_(1) setdest 020.889 1055.421


853.536858138551"
$ns_ at 0.05 "$node_(2) setdest 230.526 1055.723
781.916013625108"
$ns_ at 0.05 "$node_(3) setdest 450.681 1055.145
784.006901824250"
$ns_ at 0.05 "$node_(4) setdest 680.131 1055.195
865.177118325802"
$ns_ at 0.05 "$node_(5) setdest 920.770 1055.176
823.805777461175"
$ns_ at 0.05 "$node_(6) setdest 1170.252 1055.490
845.823522711008"

$ns_ at 0.05 "$node_(7) setdest 020.112 915.439


883.699226800687"
$ns_ at 0.05 "$node_(8) setdest 230.387 915.714
899.418309791714"
$ns_ at 0.05 "$node_(9) setdest 450.864 915.312
797.790163438850"
$ns_ at 0.05 "$node_(10) setdest 680.249 915.778
853.892083351862"
$ns_ at 0.05 "$node_(11) setdest 920.595 915.345
805.616848955002"
$ns_ at 0.05 "$node_(12) setdest 1170.030 915.895
923.259384636290"

$ns_ at 0.05 "$node_(13) setdest 020.024 775.853


827.732936564938"
$ns_ at 0.05 "$node_(14) setdest 230.162 775.741
860.638413301853"
$ns_ at 0.05 "$node_(15) setdest 450.493 775.160
812.376658263231"
$ns_ at 0.05 "$node_(16) setdest 680.486 775.724
891.391357409163"
$ns_ at 0.05 "$node_(17) setdest 920.068 775.543
799.258497833686"
$ns_ at 0.05 "$node_(18) setdest 1170.509 775.092
905.993927886416"

$ns_ at 0.05 "$node_(19) setdest 020.137 635.425


963.415284382733"
$ns_ at 0.05 "$node_(20) setdest 230.025 635.032
840.969312009778"
$ns_ at 0.05 "$node_(21) setdest 450.372 635.229
768.457420994328"
$ns_ at 0.05 "$node_(22) setdest 680.236 635.806
799.407665263115"
$ns_ at 0.05 "$node_(23) setdest 920.173 635.223
864.881161552687"
$ns_ at 0.05 "$node_(24) setdest 1170.394 635.157
794.871615207125"

$ns_ at 0.05 "$node_(25) setdest 020.729 495.913


740.482887164792"
$ns_ at 0.05 "$node_(26) setdest 230.299 495.954
838.978061524089"
$ns_ at 0.05 "$node_(27) setdest 450.457 495.250
843.464551689249"
$ns_ at 0.05 "$node_(28) setdest 680.978 495.736
883.978247518529"
$ns_ at 0.05 "$node_(29) setdest 920.954 495.334
982.953469141927"
$ns_ at 0.05 "$node_(30) setdest 1170.254 495.374
857.600761712752"

$ns_ at 0.05 "$node_(31) setdest 020.106 355.062


841.228727874247"
$ns_ at 0.05 "$node_(32) setdest 230.068 355.333
904.334546998512"
$ns_ at 0.05 "$node_(33) setdest 450.951 355.829
935.010925490007"
$ns_ at 0.05 "$node_(34) setdest 680.363 355.535
848.095716443823"
$ns_ at 0.05 "$node_(35) setdest 920.363 355.643
839.723544046864"
$ns_ at 0.05 "$node_(36) setdest 1170.508 355.758
886.721341413921"

$ns_ at 0.05 "$node_(37) setdest 020.749 215.714


780.864266334047"
$ns_ at 0.05 "$node_(38) setdest 230.270 215.805
786.013557480373"
$ns_ at 0.05 "$node_(39) setdest 450.215 215.426
820.974570201410"
$ns_ at 0.05 "$node_(40) setdest 680.061 215.428
882.945528196327"
$ns_ at 0.05 "$node_(41) setdest 920.290 215.416
672.441072172425"
$ns_ at 0.05 "$node_(42) setdest 1170.135 215.104
817.767261270338"

$ns_ at 0.05 "$node_(43) setdest 020.267 075.847


936.069713510224"
$ns_ at 0.05 "$node_(44) setdest 230.230 075.316
905.864588478542"
$ns_ at 0.05 "$node_(45) setdest 450.417 075.810
810.208082949575"
$ns_ at 0.05 "$node_(46) setdest 680.312 075.640
862.973308842268"
$ns_ at 0.05 "$node_(47) setdest 920.589 075.339
796.961861003206"
$ns_ at 0.05 "$node_(48) setdest 1170.699 075.018
804.852890202170"

$ns_ at 0.05 "$node_(49) setdest 584.965 992.805


805.852890202170"
$ns_ at 0.05 "$node_(50) setdest 1047.64 141.098
810.961861003206"

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node Random Mobility


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

proc mobility { tm } {
global node_ ns_
$ns_ at $tm "$node_(1) setdest [expr (rand()*50)+020.889 ] [expr
(rand()*50)+1055.421] [expr rand()*10]"
$ns_ at $tm "$node_(2) setdest [expr (rand()*50)+230.526 ] [expr
(rand()*50)+1055.723] [expr rand()*10]"
$ns_ at $tm "$node_(3) setdest [expr (rand()*50)+450.681 ] [expr
(rand()*50)+1055.145] [expr rand()*10]"
$ns_ at $tm "$node_(4) setdest [expr (rand()*50)+680.131 ] [expr
(rand()*50)+1055.195] [expr rand()*10]"
$ns_ at $tm "$node_(5) setdest [expr (rand()*50)+920.770 ] [expr
(rand()*50)+1055.176] [expr rand()*10]"
$ns_ at $tm "$node_(6) setdest [expr (rand()*50)+1170.252] [expr
(rand()*50)+1055.490] [expr rand()*10]"

$ns_ at $tm "$node_(7) setdest [expr (rand()*50)+020.112 ] [expr


(rand()*50)+915.439 ] [expr rand()*10]"
$ns_ at $tm "$node_(8) setdest [expr (rand()*50)+230.387 ] [expr
(rand()*50)+915.714 ] [expr rand()*10]"
$ns_ at $tm "$node_(9) setdest [expr (rand()*50)+450.864 ] [expr
(rand()*50)+915.312 ] [expr rand()*10]"
$ns_ at $tm "$node_(10) setdest [expr (rand()*50)+680.249 ] [expr
(rand()*50)+915.778 ] [expr rand()*10]"
$ns_ at $tm "$node_(11) setdest [expr (rand()*50)+920.595 ] [expr
(rand()*50)+915.345 ] [expr rand()*10]"
$ns_ at $tm "$node_(12) setdest [expr (rand()*50)+1170.030] [expr
(rand()*50)+915.895 ] [expr rand()*10]"

$ns_ at $tm "$node_(13) setdest [expr (rand()*50)+020.024 ] [expr


(rand()*50)+775.853 ] [expr rand()*10]"
$ns_ at $tm "$node_(14) setdest [expr (rand()*50)+230.162 ] [expr
(rand()*50)+775.741 ] [expr rand()*10]"
$ns_ at $tm "$node_(15) setdest [expr (rand()*50)+450.493 ] [expr
(rand()*50)+775.160 ] [expr rand()*10]"
$ns_ at $tm "$node_(16) setdest [expr (rand()*50)+680.486 ] [expr
(rand()*50)+775.724 ] [expr rand()*10]"
$ns_ at $tm "$node_(17) setdest [expr (rand()*50)+920.068 ] [expr
(rand()*50)+775.543 ] [expr rand()*10]"
$ns_ at $tm "$node_(18) setdest [expr (rand()*50)+1170.509] [expr
(rand()*50)+775.092 ] [expr rand()*10]"

$ns_ at $tm "$node_(19) setdest [expr (rand()*50)+020.137 ] [expr


(rand()*50)+635.425 ] [expr rand()*10]"
$ns_ at $tm "$node_(20) setdest [expr (rand()*50)+230.025 ] [expr
(rand()*50)+635.032 ] [expr rand()*10]"
$ns_ at $tm "$node_(21) setdest [expr (rand()*50)+450.372 ] [expr
(rand()*50)+635.229 ] [expr rand()*10]"
$ns_ at $tm "$node_(22) setdest [expr (rand()*50)+680.236 ] [expr
(rand()*50)+635.806 ] [expr rand()*10]"
$ns_ at $tm "$node_(23) setdest [expr (rand()*50)+920.173 ] [expr
(rand()*50)+635.223 ] [expr rand()*10]"
$ns_ at $tm "$node_(24) setdest [expr (rand()*50)+1170.394] [expr
(rand()*50)+635.157 ] [expr rand()*10]"

$ns_ at $tm "$node_(25) setdest [expr (rand()*50)+020.729 ] [expr


(rand()*50)+495.913 ] [expr rand()*10]"
$ns_ at $tm "$node_(26) setdest [expr (rand()*50)+230.299 ] [expr
(rand()*50)+495.954 ] [expr rand()*10]"
$ns_ at $tm "$node_(27) setdest [expr (rand()*50)+450.457 ] [expr
(rand()*50)+495.250 ] [expr rand()*10]"
$ns_ at $tm "$node_(28) setdest [expr (rand()*50)+680.978 ] [expr
(rand()*50)+495.736 ] [expr rand()*10]"
$ns_ at $tm "$node_(29) setdest [expr (rand()*50)+920.954 ] [expr
(rand()*50)+495.334 ] [expr rand()*10]"
$ns_ at $tm "$node_(30) setdest [expr (rand()*50)+1170.254] [expr
(rand()*50)+495.374 ] [expr rand()*10]"

$ns_ at $tm "$node_(31) setdest [expr (rand()*50)+020.106 ] [expr


(rand()*50)+355.062 ] [expr rand()*10]"
$ns_ at $tm "$node_(32) setdest [expr (rand()*50)+230.068 ] [expr
(rand()*50)+355.333 ] [expr rand()*10]"
$ns_ at $tm "$node_(33) setdest [expr (rand()*50)+450.951 ] [expr
(rand()*50)+355.829 ] [expr rand()*10]"
$ns_ at $tm "$node_(34) setdest [expr (rand()*50)+680.363 ] [expr
(rand()*50)+355.535 ] [expr rand()*10]"
$ns_ at $tm "$node_(35) setdest [expr (rand()*50)+920.363 ] [expr
(rand()*50)+355.643 ] [expr rand()*10]"
$ns_ at $tm "$node_(36) setdest [expr (rand()*50)+1170.508] [expr
(rand()*50)+355.758 ] [expr rand()*10]"

$ns_ at $tm "$node_(37) setdest [expr (rand()*50)+020.749 ] [expr


(rand()*50)+215.714 ] [expr rand()*10]"
$ns_ at $tm "$node_(38) setdest [expr (rand()*50)+230.270 ] [expr
(rand()*50)+215.805 ] [expr rand()*10]"
$ns_ at $tm "$node_(39) setdest [expr (rand()*50)+450.215 ] [expr
(rand()*50)+215.426 ] [expr rand()*10]"
$ns_ at $tm "$node_(40) setdest [expr (rand()*50)+680.061 ] [expr
(rand()*50)+215.428 ] [expr rand()*10]"
$ns_ at $tm "$node_(41) setdest [expr (rand()*50)+920.290 ] [expr
(rand()*50)+215.416 ] [expr rand()*10]"
$ns_ at $tm "$node_(42) setdest [expr (rand()*50)+1170.135] [expr
(rand()*50)+215.104 ] [expr rand()*10]"

$ns_ at $tm "$node_(43) setdest [expr (rand()*50)+020.267 ] [expr


(rand()*50)+075.847 ] [expr rand()*10]"
$ns_ at $tm "$node_(44) setdest [expr (rand()*50)+230.230 ] [expr
(rand()*50)+075.316 ] [expr rand()*10]"
$ns_ at $tm "$node_(45) setdest [expr (rand()*50)+450.417 ] [expr
(rand()*50)+075.810 ] [expr rand()*10]"
$ns_ at $tm "$node_(46) setdest [expr (rand()*50)+680.312 ] [expr
(rand()*50)+075.640 ] [expr rand()*10]"
$ns_ at $tm "$node_(47) setdest [expr (rand()*50)+920.589 ] [expr
(rand()*50)+075.339 ] [expr rand()*10]"
$ns_ at $tm "$node_(48) setdest [expr (rand()*50)+1170.699] [expr
(rand()*50)+075.018 ] [expr rand()*10]"

$ns_ at $tm "$node_(49) setdest [expr rand()*950] [expr


rand()*950] [expr rand()*50]"
$ns_ at $tm "$node_(50) setdest [expr rand()*950] [expr
rand()*950] [expr rand()*50]"
}

#---------------- Calling Mobility Function


-------------------------

for {set zz 0 } { $zz<50 } { incr zz } {


$ns_ at $zz "mobility [expr $zz +5]"
}

#------------------ Create sink for All Nodes


----------------------------
for {set i 0} {$i<$val(nn)} {incr i} {
set sink($i) [new Agent/LossMonitor]
$ns_ attach-agent $node_($i) $sink($i)
}
#------------------ CBR Traffic Function
----------------------------

proc attach-CBR-traffic { node sink pk int} {


#Get an instance of the simulator
global node_ ns_
set udp [new Agent/UDP]
$ns_ attach-agent $node $udp
#Create a CBR agent and attach it to the node
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set packetSize_ $pk ;#set packet size
$cbr set interval_ $int ;#set Intervel
#Attach CBR source to sink;
$ns_ connect $udp $sink
return $cbr
}

#---------------------- Neighbors Calculation


--------------------------

proc nnode { } {
global node_ ns_
set r [open "NNode.tr" w]
puts $r
"----------------------------------------------------------"
puts $r "Node\t\tNeighbors\tx-cor\ty-cor \tDistance"
puts $r
"----------------------------------------------------------"
for { set i 0 } { $i <51 } { incr i } {
set x1 [$node_($i) set X_]
set y1 [$node_($i) set Y_]
for { set j 0 } { $j <51 }
{ incr j } {
set x2 [$node_($j) set X_]
set y2 [$node_($j) set Y_]
set dis [expr sqrt(pow([expr $x2 -
$x1],2)+pow([expr $y2 - $y1],2))]
if { $dis <251 && $i!= $j } {
set x2 [expr int($x1)] ; set y2
[expr int($y1)]
puts $r "$i\t\t
$j\t\t$x2\t$y2\t$dis" } }
}
close $r
}
#--------------- Input File for Broadcast ----------------

set y [open "btemp" w]


puts $y "0 48 1.6 0.01 0 0"
close $y

#--------------- Input File for Hop Count ----------------

set y [open "temp" w]


puts $y "0 48 4.7 0.1"
close $y

set inf0_1 [attach-CBR-traffic $node_(5) $sink(20) 512 0.05]


$ns_ at 1.2 "$inf0_1 start"
$ns_ at 1.2000001 "$inf0_1 stop"

$ns_ at 1.3 "$node_(0) label Base_Station" ;# set a label


$ns_ at 1.3 "$node_(0) add-mark c3 black hexagon" ;# set a
Additional Shape
$ns_ at 1.4 "nnode " ;# CalLing Neighbors function
$ns_ at 1.5 "exec awk -f S_broadcast.awk btemp NNode.tr"
$ns_ at 1.6 "source S_broadcast.tcl"

#----------------- Display Hop Count And Details ---------------

$ns_ at 4.0 "puts \"\n\""


$ns_ at 4.0
"puts \"\\-------------------------------------------------------
--------------------------\""
$ns_ at 4.0 "puts \"\\\tSource\tInternediate-Nodes\tDstn\tH-
Count\""
$ns_ at 4.0
"puts \"\\-------------------------------------------------------
--------------------------\""

set fle [open Paths w]


close $fle ;# Write shortest Path For All
Destination
set tm 4.6 ;# Set a Time

#------------------ Hop Count Function ---------------

proc hop { src snk tm int } {


set fle [open Paths a]
set tp [open Route w]
close $tp
set tmp [open temp w]
puts $tmp " $src $snk $tm $int"
close $tmp
exec awk -f Hop.awk temp NNode.tr
set tp [open Route r]
set ln [read $tp]
puts $fle "$ln"
puts "\t$ln"
close $fle
}

#----------------- Hop Count For All Nodes ---------------

for {set i 1} {$i<49} { incr i} {


$ns_ at [expr $tm-0.20] "hop $i 0 [expr $tm+0.24]
0.05"
$ns_ at [expr $tm-0.19] "source Hop_count.tcl"
set tm [expr $tm+0.5]
}

#------------------ Finish Procedure to exec NAM Window


---------------------

proc finish {} {
global ns_ namtrace
$ns_ flush-trace
close $namtrace
exec nam -r 8m Nam.nam &
exit 0
}

$ns_ at 50.0 "finish"

puts "Start of simulation.."


$ns_ run

#------------------------Environmental Settings-----------------

set val(nn) 51 ;# number of


mobilenodes

#--------------------- Simulator Object Creation----------------


set ns_ [new Simulator]

#------------------ Trace File to record all the Events---------


set f [open Trace.tr w]
$ns_ trace-all $f
$ns_ use-newtrace

#------------------------ NAM Window creation-------------------


set namtrace [open Nam.nam w]
$ns_ namtrace-all-wireless $namtrace 1250 1200

#------------------------- Topology Creation--------------------


set topo [new Topography]
$topo load_flatgrid 1250 1200

#------------------- General Operational Director---------------


create-god $val(nn)

#----------------------- Node Configuration---------------------

$ns_ node-config -adhocRouting AODV \


-llType LL \
-macType Mac/802_11 \
-ifqType Queue/DropTail/PriQueue \
-ifqLen 500 \
-antType Antenna/OmniAntenna \
-propType Propagation/TwoRayGround \
-phyType Phy/WirelessPhy \
-channelType Channel/WirelessChannel \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-idlePower 1.2 \
-rxPower 1.0 \
-txPower 1.5 \
-sleepPower 0.000015

#----------------------------- Node
Creation---------------------------

set god_ [create-god $val(nn)]

#------ Replica Node Attack Functionality ----------

for {set i 0} {$i < $val(nn) } {incr i} {


if {$i==49 } { $ns_ node-config -ifqLen 2
} else { $ns_ node-config
-ifqLen 500 }
set node_($i) [$ns_ node]
$node_($i) set X_ 565.0
$node_($i) set Y_ 565.0
$node_($i) set Z_ 0.0
$god_ new_node $node_($i)
$node_($i) color purple
$ns_ initial_node_pos $node_($i) 60
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node Deploy


~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$ns_ at 0.05 "$node_(0) setdest 565.632 565.686


857.087846001208"

$ns_ at 0.05 "$node_(1) setdest 020.889 1055.421


853.536858138551"
$ns_ at 0.05 "$node_(2) setdest 230.526 1055.723
781.916013625108"
$ns_ at 0.05 "$node_(3) setdest 450.681 1055.145
784.006901824250"
$ns_ at 0.05 "$node_(4) setdest 680.131 1055.195
865.177118325802"
$ns_ at 0.05 "$node_(5) setdest 920.770 1055.176
823.805777461175"
$ns_ at 0.05 "$node_(6) setdest 1170.252 1055.490
845.823522711008"

$ns_ at 0.05 "$node_(7) setdest 020.112 915.439


883.699226800687"
$ns_ at 0.05 "$node_(8) setdest 230.387 915.714
899.418309791714"
$ns_ at 0.05 "$node_(9) setdest 450.864 915.312
797.790163438850"
$ns_ at 0.05 "$node_(10) setdest 680.249 915.778
853.892083351862"
$ns_ at 0.05 "$node_(11) setdest 920.595 915.345
805.616848955002"
$ns_ at 0.05 "$node_(12) setdest 1170.030 915.895
923.259384636290"

$ns_ at 0.05 "$node_(13) setdest 020.024 775.853


827.732936564938"
$ns_ at 0.05 "$node_(14) setdest 230.162 775.741
860.638413301853"
$ns_ at 0.05 "$node_(15) setdest 450.493 775.160
812.376658263231"
$ns_ at 0.05 "$node_(16) setdest 680.486 775.724
891.391357409163"
$ns_ at 0.05 "$node_(17) setdest 920.068 775.543
799.258497833686"
$ns_ at 0.05 "$node_(18) setdest 1170.509 775.092
905.993927886416"

$ns_ at 0.05 "$node_(19) setdest 020.137 635.425


963.415284382733"
$ns_ at 0.05 "$node_(20) setdest 230.025 635.032
840.969312009778"
$ns_ at 0.05 "$node_(21) setdest 450.372 635.229
768.457420994328"
$ns_ at 0.05 "$node_(22) setdest 680.236 635.806
799.407665263115"
$ns_ at 0.05 "$node_(23) setdest 920.173 635.223
864.881161552687"
$ns_ at 0.05 "$node_(24) setdest 1170.394 635.157
794.871615207125"

$ns_ at 0.05 "$node_(25) setdest 020.729 495.913


740.482887164792"
$ns_ at 0.05 "$node_(26) setdest 230.299 495.954
838.978061524089"
$ns_ at 0.05 "$node_(27) setdest 450.457 495.250
843.464551689249"
$ns_ at 0.05 "$node_(28) setdest 680.978 495.736
883.978247518529"
$ns_ at 0.05 "$node_(29) setdest 920.954 495.334
982.953469141927"
$ns_ at 0.05 "$node_(30) setdest 1170.254 495.374
857.600761712752"

$ns_ at 0.05 "$node_(31) setdest 020.106 355.062


841.228727874247"
$ns_ at 0.05 "$node_(32) setdest 230.068 355.333
904.334546998512"
$ns_ at 0.05 "$node_(33) setdest 450.951 355.829
935.010925490007"
$ns_ at 0.05 "$node_(34) setdest 680.363 355.535
848.095716443823"
$ns_ at 0.05 "$node_(35) setdest 920.363 355.643
839.723544046864"
$ns_ at 0.05 "$node_(36) setdest 1170.508 355.758
886.721341413921"

$ns_ at 0.05 "$node_(37) setdest 020.749 215.714


780.864266334047"
$ns_ at 0.05 "$node_(38) setdest 230.270 215.805
786.013557480373"
$ns_ at 0.05 "$node_(39) setdest 450.215 215.426
820.974570201410"
$ns_ at 0.05 "$node_(40) setdest 680.061 215.428
882.945528196327"
$ns_ at 0.05 "$node_(41) setdest 920.290 215.416
672.441072172425"
$ns_ at 0.05 "$node_(42) setdest 1170.135 215.104
817.767261270338"
$ns_ at 0.05 "$node_(43) setdest 020.267 075.847
936.069713510224"
$ns_ at 0.05 "$node_(44) setdest 230.230 075.316
905.864588478542"
$ns_ at 0.05 "$node_(45) setdest 450.417 075.810
810.208082949575"
$ns_ at 0.05 "$node_(46) setdest 680.312 075.640
862.973308842268"
$ns_ at 0.05 "$node_(47) setdest 920.589 075.339
796.961861003206"
$ns_ at 0.05 "$node_(48) setdest 1170.699 075.018
804.852890202170"

$ns_ at 0.05 "$node_(49) setdest 850.15 1000.805


805.852890202170"
$ns_ at 0.05 "$node_(50) setdest 650.15 1000.098
810.961861003206"

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mobility Function


~~~~~~~~~~~~~~~~~~~~~~~~~~

proc mobility { tm } {
global node_ ns_ sink dp
set min49 250
set min50 250
set x49 [$node_(49) set X_]
set y49 [$node_(49) set Y_]

set x50 [$node_(50) set X_]


set y50 [$node_(50) set Y_]

for { set j 0 } { $j <49 } { incr j } {


set x2 [$node_($j) set X_]
set y2 [$node_($j) set Y_]
set dis49 [expr
sqrt(pow([expr $x2 - $x49],2)+pow([expr $y2 - $y49],2))]
if { $dis49 <$min49 } { set min49 $dis49 ;
set nnod49 $j }
set dis50 [expr sqrt(pow([expr $x2 -
$x50],2)+pow([expr $y2 - $y50],2))]
if { $dis50 <$min50 } { set min50 $dis50 ;
set nnod50 $j }
}
set inf0_1 [attach-CBR-traffic $node_($nnod50) $sink(49) 512
0.05]
$ns_ at [expr $tm+0.0001] "$inf0_1 start"
$ns_ at [expr $tm+3.0001] "$inf0_1 stop"
set inf0_2 [attach-CBR-traffic $node_($nnod49) $sink(0) 512
0.05]
$ns_ at [expr $tm+0.0001] "$inf0_2 start"
$ns_ at [expr $tm+3.0001] "$inf0_2 stop"

set inf_1 [attach-CBR-traffic $node_(49) $sink(0) 512 0.05]


$ns_ at $tm "$inf_1 start"
$ns_ at [expr $tm+5] "$inf_1 stop"

$ns_ at $tm "$node_(49) setdest 850.15 500.805 5"


$ns_ at $tm "$node_(50) setdest 650.15 500.098 5"
}

#------------------ Create sink for All Nodes


----------------------------

for {set i 0} {$i<$val(nn)} {incr i} {


$ns_ at 0.0000001 "$node_($i) color purple"
set sink($i) [new Agent/LossMonitor]
$ns_ attach-agent $node_($i) $sink($i)
}
#------------------ CBR Traffic Function
----------------------------

proc attach-CBR-traffic { node sink pk int} {


#Get an instance of the simulator
global node_ ns_
set udp [new Agent/UDP]
$ns_ attach-agent $node $udp
#Create a CBR agent and attach it to the
node
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set packetSize_ $pk ;#set packet size
$cbr set interval_ $int ;#set Intervel
#Attach CBR source to sink;
$ns_ connect $udp $sink
return $cbr
}

#---------------- Calling Mobility Function


-------------------------

for {set zz 0 } { $zz<10 } { incr zz } {


$ns_ at [expr $zz +5.0] "mobility [expr $zz +5]"
}

#--------------- Input File for Hop Count


--------------------------

set inf0_1 [attach-CBR-traffic $node_(5) $sink(20) 512 0.05]


$ns_ at 1.2 "$inf0_1 start"
$ns_ at 1.2000001 "$inf0_1 stop"

$ns_ at 1.3 "$node_(0) label Base_Station" ;# set a label


$ns_ at 2.0 "$node_(50) label Obj" ;# set a label

set tm 2.0

#-------------------------------------- For Graph


----------------------------------------

set pr [open Ex_PDR.xg w]


puts $pr "Markers: true"
puts $pr "BoundBox: true"
puts $pr "Background: grey\n"
puts $pr "0 0"

set tp [open Ex_Throughput.xg w]


puts $tp "Markers: true"
puts $tp "BoundBox: true"
puts $tp "Background: grey"
puts $tp "0 0"

set dp [open Ex_Drop.xg w]


puts $dp "Markers: true"
puts $dp "BoundBox: true"
puts $dp "Background: grey"
puts $dp "0 0"

proc record {sin} {


global ns_ pr tp dp sink
set itval 5.0
set nw [$ns_ now]
set rec [$sin set npkts_]
set los [$sin set nlost_]
set byt [$sin set bytes_]
set kb [expr double(($byt*8.0)/(2*$itval*1000))]
set pd [expr $rec/($rec+$los+0.0)]
set los1 [$sink(49) set nlost_]

puts $pr "$nw $pd"


puts $tp "$nw $kb"
#set we [expr int(rand()*10)]
puts $dp "$nw $los"
$sin set nlost_ 0
$ns_ at [expr $nw+$itval] "record $sin"
}

$ns_ at 6.0 "record $sink(0)"

#--------------- Finish Procedure to exec NAM Window


--------------

proc finish {} {
global ns_ namtrace
$ns_ flush-trace
close $namtrace
global pr tp dp
close $pr ; close $tp ; close $dp
exec nam -r 8m Nam.nam &
exec xgraph Ex_PDR.xg -t "Packet delivary Ratio" -x "Time"
-y "PDR" &
exec xgraph Ex_Throughput.xg -t "Throughput" -x "Time"
-y "Throughput" &
exec xgraph Ex_Drop.xg -t "Drop" -x "Time" -y "Drop" &
exit 0
}

$ns_ at 20.0 "finish"

puts "Start of simulation.."


$ns_ run
#------------------------Environmental Settings-----------------

set val(nn) 51 ;# number of


mobilenodes

#--------------------- Simulator Object Creation----------------


set ns_ [new Simulator]

#------------------ Trace File to record all the Events---------


set f [open Trace.tr w]
$ns_ trace-all $f
$ns_ use-newtrace

#------------------------ NAM Window creation-------------------


set namtrace [open Nam.nam w]
$ns_ namtrace-all-wireless $namtrace 1250 1250

#------------------------- Topology Creation--------------------


set topo [new Topography]
$topo load_flatgrid 1250 1200
#------------------- General Operational Director---------------
create-god $val(nn)

#----------------------- Node Configuration---------------------

$ns_ node-config -adhocRouting AODV \


-llType LL \
-macType Mac/802_11 \
-ifqType Queue/DropTail/PriQueue \
-ifqLen 500 \
-antType Antenna/OmniAntenna \
-propType Propagation/TwoRayGround \
-phyType Phy/WirelessPhy \
-channelType Channel/WirelessChannel \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-idlePower 1.2 \
-rxPower 1.0 \
-txPower 1.5 \
-sleepPower 0.000015

#------- Random Value Generate----------

set sv [expr int(rand()*10)]


set sv [expr $sv % 2]

#----------------------------- Node
Creation---------------------------

set god_ [create-god $val(nn)]

#------ Replica Node Attack Functionality ----------


if { $sv==0 } {
for {set i 0} {$i < $val(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) set X_ 565.0
$node_($i) set Y_ 565.0
$node_($i) set Z_ 0.0
$god_ new_node $node_($i)
$node_($i) color black
$ns_ initial_node_pos $node_($i) 60
}
}
if { $sv==1 } {
for {set i 0} {$i < $val(nn) } {incr i} {
if {$i==49 } { $ns_ node-config -ifqLen 1
} else { $ns_ node-config
-ifqLen 500 }
set node_($i) [$ns_ node]
$node_($i) set X_ 565.0
$node_($i) set Y_ 565.0
$node_($i) set Z_ 0.0
$god_ new_node $node_($i)
$node_($i) color black
$ns_ initial_node_pos $node_($i) 60
}
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node Deploy


~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$ns_ at 0.05 "$node_(0) setdest 565.632 565.686


857.087846001208"

$ns_ at 0.05 "$node_(1) setdest 020.889 1055.421


853.536858138551"
$ns_ at 0.05 "$node_(2) setdest 230.526 1055.723
781.916013625108"
$ns_ at 0.05 "$node_(3) setdest 450.681 1055.145
784.006901824250"
$ns_ at 0.05 "$node_(4) setdest 680.131 1055.195
865.177118325802"
$ns_ at 0.05 "$node_(5) setdest 920.770 1055.176
823.805777461175"
$ns_ at 0.05 "$node_(6) setdest 1170.252 1055.490
845.823522711008"

$ns_ at 0.05 "$node_(7) setdest 020.112 915.439


883.699226800687"
$ns_ at 0.05 "$node_(8) setdest 230.387 915.714
899.418309791714"
$ns_ at 0.05 "$node_(9) setdest 450.864 915.312
797.790163438850"
$ns_ at 0.05 "$node_(10) setdest 680.249 915.778
853.892083351862"
$ns_ at 0.05 "$node_(11) setdest 920.595 915.345
805.616848955002"
$ns_ at 0.05 "$node_(12) setdest 1170.030 915.895
923.259384636290"

$ns_ at 0.05 "$node_(13) setdest 020.024 775.853


827.732936564938"
$ns_ at 0.05 "$node_(14) setdest 230.162 775.741
860.638413301853"
$ns_ at 0.05 "$node_(15) setdest 450.493 775.160
812.376658263231"
$ns_ at 0.05 "$node_(16) setdest 680.486 775.724
891.391357409163"
$ns_ at 0.05 "$node_(17) setdest 920.068 775.543
799.258497833686"
$ns_ at 0.05 "$node_(18) setdest 1170.509 775.092
905.993927886416"

$ns_ at 0.05 "$node_(19) setdest 020.137 635.425


963.415284382733"
$ns_ at 0.05 "$node_(20) setdest 230.025 635.032
840.969312009778"
$ns_ at 0.05 "$node_(21) setdest 450.372 635.229
768.457420994328"
$ns_ at 0.05 "$node_(22) setdest 680.236 635.806
799.407665263115"
$ns_ at 0.05 "$node_(23) setdest 920.173 635.223
864.881161552687"
$ns_ at 0.05 "$node_(24) setdest 1170.394 635.157
794.871615207125"

$ns_ at 0.05 "$node_(25) setdest 020.729 495.913


740.482887164792"
$ns_ at 0.05 "$node_(26) setdest 230.299 495.954
838.978061524089"
$ns_ at 0.05 "$node_(27) setdest 450.457 495.250
843.464551689249"
$ns_ at 0.05 "$node_(28) setdest 680.978 495.736
883.978247518529"
$ns_ at 0.05 "$node_(29) setdest 920.954 495.334
982.953469141927"
$ns_ at 0.05 "$node_(30) setdest 1170.254 495.374
857.600761712752"

$ns_ at 0.05 "$node_(31) setdest 020.106 355.062


841.228727874247"
$ns_ at 0.05 "$node_(32) setdest 230.068 355.333
904.334546998512"
$ns_ at 0.05 "$node_(33) setdest 450.951 355.829
935.010925490007"
$ns_ at 0.05 "$node_(34) setdest 680.363 355.535
848.095716443823"
$ns_ at 0.05 "$node_(35) setdest 920.363 355.643
839.723544046864"
$ns_ at 0.05 "$node_(36) setdest 1170.508 355.758
886.721341413921"

$ns_ at 0.05 "$node_(37) setdest 020.749 215.714


780.864266334047"
$ns_ at 0.05 "$node_(38) setdest 230.270 215.805
786.013557480373"
$ns_ at 0.05 "$node_(39) setdest 450.215 215.426
820.974570201410"
$ns_ at 0.05 "$node_(40) setdest 680.061 215.428
882.945528196327"
$ns_ at 0.05 "$node_(41) setdest 920.290 215.416
672.441072172425"
$ns_ at 0.05 "$node_(42) setdest 1170.135 215.104
817.767261270338"

$ns_ at 0.05 "$node_(43) setdest 020.267 075.847


936.069713510224"
$ns_ at 0.05 "$node_(44) setdest 230.230 075.316
905.864588478542"
$ns_ at 0.05 "$node_(45) setdest 450.417 075.810
810.208082949575"
$ns_ at 0.05 "$node_(46) setdest 680.312 075.640
862.973308842268"
$ns_ at 0.05 "$node_(47) setdest 920.589 075.339
796.961861003206"
$ns_ at 0.05 "$node_(48) setdest 1170.699 075.018
804.852890202170"

#------ Random Node Deploy ---------

if { $sv==0} {
$ns_ at 0.05 "$node_(49) setdest [expr rand()*500] 142.805
805.852890202170"
$ns_ at 0.05 "$node_(50) setdest [expr rand()*950] 141.098
810.961861003206"
}

if { $sv==1 } {
set x1 837
$ns_ at 0.05 "$node_(49) setdest $x1 1000.805
805.852890202170"
$ns_ at 0.05 "$node_(50) setdest [expr $x1+225] 1000.098
810.961861003206"
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mobility Function


~~~~~~~~~~~~~~~~~~~~~~~~~~

set avs 0
set posb 0

proc mobility { tm } {

global node_ ns_ sink sv avs posb dp


set min49 250
set min50 250
set vs 0
if { $avs==0 } {

set x49 [$node_(49) set X_]


set y49 [$node_(49) set Y_]

set x50 [$node_(50) set X_]


set y50 [$node_(50) set Y_]
#----------- Speed Measure ----
if { $tm >10 && $posb==0 } { set ct [expr int(rand()*11)] }
if { $tm <11 } { set ct [expr int(rand()*10)] }

for { set j 0 } { $j <49 } { incr j } {


set x2 [$node_($j) set X_]
set y2 [$node_($j) set Y_]
set dis49 [expr
sqrt(pow([expr $x2 - $x49],2)+pow([expr $y2 - $y49],2))]
set dis50 [expr sqrt(pow([expr $x2 -
$x50],2)+pow([expr $y2 - $y50],2))]
if { $dis49 <$min49 } { set min49 $dis49 ;
set nnod49 $j ; incr vs }
if { $dis50 <$min50 } { set min50 $dis50 ;
set nnod50 $j }
}

$ns_ at $tm "$node_($nnod49) color red"


$ns_ at $tm "$node_($nnod50) color red"
$ns_ at [expr $tm + 0.5] "$node_($nnod50) color purple"
$ns_ at [expr $tm + 0.5] "$node_($nnod49) color purple"
set dist [expr sqrt(pow([expr $x50 - $x49],2)+pow([expr $y50 -
$y49],2))]

#----------- Sensor Node Send sence Data to base station


---------
$ns_ at [expr $tm+0.0001] "hop $nnod49 0 [expr $tm+0.0024]
0.5"
$ns_ at [expr $tm+0.00015] "$ns_ trace-annotate \"Node -
$nnod49 Sends the Sensed data about 49th node Arraival & It's
Speed is $ct to the Base station - 0 \""
$ns_ at [expr $tm+0.0002] "source Hop_count.tcl"

if { $dist>300 } {

$ns_ at [expr $tm+0.0003] "hop $nnod50 0 [expr $tm+0.0024]


0.5"
$ns_ at [expr $tm+0.00035] "$ns_ trace-annotate \"Node -
$nnod50 Sends the Sensed data about 50th node(OBJECT) Arraival to
the Base station - 0 \""
$ns_ at [expr $tm+0.0004] "source Hop_count.tcl"
}
#------------ Replica Node Functionality ---------
if { $dist <301 } {

$ns_ at [expr $tm+0.0003] "hop $nnod50 49 [expr $tm+0.0024]


0.5"
$ns_ at $tm "$node_(49) color green"
$ns_ at [expr $tm + 0.5] "$node_(49) color purple"

if { $sv==0 } {
set gp [expr $tm % 5]
if { $gp == 0 } { puts $dp "$tm 0" }
$ns_ at [expr $tm+0.00035] "$ns_ trace-annotate \"Node -
$nnod50 Sends the Sensed data about 50th node(OBJECT) Arraival to
the Base station - 0 but the Replica is recevied data and inject
false data to Base station-0 \""
}

if { $sv==1 } {
set gp [expr $tm % 5] ; set we [expr int(rand()*5)]
if { $gp == 0 } { puts $dp "$tm $we" }
$ns_ at [expr $tm+0.00035] "$ns_ trace-annotate \"Node -
$nnod50 Sends the Sensed data about 50th node(OBJECT) Arraival to
the Base station - 0 but the Replica is recevied data and Droped
All datas \""
}

$ns_ at [expr $tm+0.0004] "source Hop_count.tcl"


$ns_ at [expr $tm+0.0005] "hop 49 0 [expr $tm+0.0024] 0.5"
$ns_ at [expr $tm+0.0006] "source Hop_count.tcl"
}

if { $vs >5 || $ct>9 } { incr avs ; puts "\n\nMaximum Speed -


10 \t Maximum Neighbor - 5\n"
puts "\nTime -> $tm -- Speed -> $ct -- No. of
Neighbor -> $vs\n\n" ; incr posb }
} else {

set x50 [$node_(50) set X_]


set y50 [$node_(50) set Y_]

for { set j 0 } { $j <49 } { incr j } {


set x2 [$node_($j) set X_]
set y2 [$node_($j) set Y_]
set dis50 [expr
sqrt(pow([expr $x2 - $x50],2)+pow([expr $y2 - $y50],2))]
if { $dis50 <$min50 } { set min50 $dis50 ;
set nnod50 $j }
}
set gp [expr $tm % 5]
if { $gp == 0 } { puts $dp "$tm 0" }
$ns_ at $tm "$node_($nnod50) color red"
$ns_ at [expr $tm + 0.5] "$node_($nnod50) color tan4"

set y [open "btemp" w]


puts $y "0 48 [expr $tm+0.0002] 0.01 0 tan4 1"
close $y
if { $avs==1} {
$ns_ at $tm "$ns_ trace-annotate \"Base station - 0
Sends the 49 is Replica node to all nodes \""
$ns_ at [expr $tm+0.00001] "nnode 49"
$ns_ at [expr $tm+0.0001] "exec awk -f S_broadcast.awk
btemp NNode.tr"
$ns_ at [expr $tm+0.0002] "source S_broadcast.tcl"
$ns_ at $tm "$node_(49) color blue"
$ns_ at $tm "$node_(49) label Replica"
}
$ns_ at [expr $tm+0.0003] "hop $nnod50 0 [expr $tm+0.0024]
0.5"
$ns_ at [expr $tm+0.00035] "$ns_ trace-annotate \"Node -
$nnod50 Sends the Sensed data about 50th node(OBJECT) Arraival to
the Base station - 0 \""
$ns_ at [expr $tm+0.0004] "source Hop_count.tcl"
incr avs
}

#------------------------- Random mobility to Sensor Node


---------------------------

$ns_ at $tm "$node_(1) setdest [expr (rand()*20)+020.889 ] [expr


(rand()*20)+1055.421] [expr rand()*10]"
$ns_ at $tm "$node_(2) setdest [expr (rand()*20)+230.526 ] [expr
(rand()*20)+1055.723] [expr rand()*10]"
$ns_ at $tm "$node_(3) setdest [expr (rand()*20)+450.681 ] [expr
(rand()*20)+1055.145] [expr rand()*10]"
$ns_ at $tm "$node_(4) setdest [expr (rand()*20)+680.131 ] [expr
(rand()*20)+1055.195] [expr rand()*10]"
$ns_ at $tm "$node_(5) setdest [expr (rand()*20)+920.770 ] [expr
(rand()*20)+1055.176] [expr rand()*10]"
$ns_ at $tm "$node_(6) setdest [expr (rand()*20)+1170.252] [expr
(rand()*20)+1055.490] [expr rand()*10]"

$ns_ at $tm "$node_(7) setdest [expr (rand()*20)+020.112 ] [expr


(rand()*20)+915.439 ] [expr rand()*10]"
$ns_ at $tm "$node_(8) setdest [expr (rand()*20)+230.387 ] [expr
(rand()*20)+915.714 ] [expr rand()*10]"
$ns_ at $tm "$node_(9) setdest [expr (rand()*20)+450.864 ] [expr
(rand()*20)+915.312 ] [expr rand()*10]"
$ns_ at $tm "$node_(10) setdest [expr (rand()*20)+680.249 ] [expr
(rand()*20)+915.778 ] [expr rand()*10]"
$ns_ at $tm "$node_(11) setdest [expr (rand()*20)+920.595 ] [expr
(rand()*20)+915.345 ] [expr rand()*10]"
$ns_ at $tm "$node_(12) setdest [expr (rand()*20)+1170.030] [expr
(rand()*20)+915.895 ] [expr rand()*10]"

$ns_ at $tm "$node_(13) setdest [expr (rand()*20)+020.024 ] [expr


(rand()*20)+775.853 ] [expr rand()*10]"
$ns_ at $tm "$node_(14) setdest [expr (rand()*20)+230.162 ] [expr
(rand()*20)+775.741 ] [expr rand()*10]"
$ns_ at $tm "$node_(15) setdest [expr (rand()*20)+450.493 ] [expr
(rand()*20)+775.160 ] [expr rand()*10]"
$ns_ at $tm "$node_(16) setdest [expr (rand()*20)+680.486 ] [expr
(rand()*20)+775.724 ] [expr rand()*10]"
$ns_ at $tm "$node_(17) setdest [expr (rand()*20)+920.068 ] [expr
(rand()*20)+775.543 ] [expr rand()*10]"
$ns_ at $tm "$node_(18) setdest [expr (rand()*20)+1170.509] [expr
(rand()*20)+775.092 ] [expr rand()*10]"

$ns_ at $tm "$node_(19) setdest [expr (rand()*20)+020.137 ] [expr


(rand()*20)+635.425 ] [expr rand()*10]"
$ns_ at $tm "$node_(20) setdest [expr (rand()*20)+230.025 ] [expr
(rand()*20)+635.032 ] [expr rand()*10]"
$ns_ at $tm "$node_(21) setdest [expr (rand()*20)+450.372 ] [expr
(rand()*20)+635.229 ] [expr rand()*10]"
$ns_ at $tm "$node_(22) setdest [expr (rand()*20)+680.236 ] [expr
(rand()*20)+635.806 ] [expr rand()*10]"
$ns_ at $tm "$node_(23) setdest [expr (rand()*20)+920.173 ] [expr
(rand()*20)+635.223 ] [expr rand()*10]"
$ns_ at $tm "$node_(24) setdest [expr (rand()*20)+1170.394] [expr
(rand()*20)+635.157 ] [expr rand()*10]"

$ns_ at $tm "$node_(25) setdest [expr (rand()*20)+020.729 ] [expr


(rand()*20)+495.913 ] [expr rand()*10]"
$ns_ at $tm "$node_(26) setdest [expr (rand()*20)+230.299 ] [expr
(rand()*20)+495.954 ] [expr rand()*10]"
$ns_ at $tm "$node_(27) setdest [expr (rand()*20)+450.457 ] [expr
(rand()*20)+495.250 ] [expr rand()*10]"
$ns_ at $tm "$node_(28) setdest [expr (rand()*20)+680.978 ] [expr
(rand()*20)+495.736 ] [expr rand()*10]"
$ns_ at $tm "$node_(29) setdest [expr (rand()*20)+920.954 ] [expr
(rand()*20)+495.334 ] [expr rand()*10]"
$ns_ at $tm "$node_(30) setdest [expr (rand()*20)+1170.254] [expr
(rand()*20)+495.374 ] [expr rand()*10]"

$ns_ at $tm "$node_(31) setdest [expr (rand()*20)+020.106 ] [expr


(rand()*20)+355.062 ] [expr rand()*10]"
$ns_ at $tm "$node_(32) setdest [expr (rand()*20)+230.068 ] [expr
(rand()*20)+355.333 ] [expr rand()*10]"
$ns_ at $tm "$node_(33) setdest [expr (rand()*20)+450.951 ] [expr
(rand()*20)+355.829 ] [expr rand()*10]"
$ns_ at $tm "$node_(34) setdest [expr (rand()*20)+680.363 ] [expr
(rand()*20)+355.535 ] [expr rand()*10]"
$ns_ at $tm "$node_(35) setdest [expr (rand()*20)+920.363 ] [expr
(rand()*20)+355.643 ] [expr rand()*10]"
$ns_ at $tm "$node_(36) setdest [expr (rand()*20)+1170.508] [expr
(rand()*20)+355.758 ] [expr rand()*10]"

$ns_ at $tm "$node_(37) setdest [expr (rand()*20)+020.749 ] [expr


(rand()*20)+215.714 ] [expr rand()*10]"
$ns_ at $tm "$node_(38) setdest [expr (rand()*20)+230.270 ] [expr
(rand()*20)+215.805 ] [expr rand()*10]"
$ns_ at $tm "$node_(39) setdest [expr (rand()*20)+450.215 ] [expr
(rand()*20)+215.426 ] [expr rand()*10]"
$ns_ at $tm "$node_(40) setdest [expr (rand()*20)+680.061 ] [expr
(rand()*20)+215.428 ] [expr rand()*10]"
$ns_ at $tm "$node_(41) setdest [expr (rand()*20)+920.290 ] [expr
(rand()*20)+215.416 ] [expr rand()*10]"
$ns_ at $tm "$node_(42) setdest [expr (rand()*20)+1170.135] [expr
(rand()*20)+215.104 ] [expr rand()*10]"

$ns_ at $tm "$node_(43) setdest [expr (rand()*20)+020.267 ] [expr


(rand()*20)+075.847 ] [expr rand()*10]"
$ns_ at $tm "$node_(44) setdest [expr (rand()*20)+230.230 ] [expr
(rand()*20)+075.316 ] [expr rand()*10]"
$ns_ at $tm "$node_(45) setdest [expr (rand()*20)+450.417 ] [expr
(rand()*20)+075.810 ] [expr rand()*10]"
$ns_ at $tm "$node_(46) setdest [expr (rand()*20)+680.312 ] [expr
(rand()*20)+075.640 ] [expr rand()*10]"
$ns_ at $tm "$node_(47) setdest [expr (rand()*20)+920.589 ] [expr
(rand()*20)+075.339 ] [expr rand()*10]"
$ns_ at $tm "$node_(48) setdest [expr (rand()*20)+1170.699] [expr
(rand()*20)+075.018 ] [expr rand()*10]"

set x1 [expr rand()*900]


set y1 [expr rand()*900]
set x2 [expr $x1 + 225]
set y2 [expr $y1 + 1]

$ns_ at $tm "$node_(50) setdest $x1 $y1 [expr rand()*30]"


$ns_ at $tm "$node_(49) setdest $x2 $y2 [expr rand()*30]"

#------------------ Create sink for All Nodes


----------------------------

for {set i 0} {$i<$val(nn)} {incr i} {


set sink($i) [new Agent/LossMonitor]
$ns_ attach-agent $node_($i) $sink($i)
}
#------------------ CBR Traffic Function
----------------------------

proc attach-CBR-traffic { node sink pk int} {


#Get an instance of the simulator
global node_ ns_
set udp [new Agent/UDP]
$ns_ attach-agent $node $udp
#Create a CBR agent and attach it to the
node
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set packetSize_ $pk ;#set packet size
$cbr set interval_ $int ;#set Intervel
#Attach CBR source to sink;
$ns_ connect $udp $sink
return $cbr
}

#---------------------- Neighbors Calculation


--------------------------

proc nnode { nm } {
global node_ ns_
set r [open "NNode.tr" w]
puts $r
"----------------------------------------------------------"
puts $r "Node\t\tNeighbors\tx-cor\ty-cor \tDistance"
puts $r
"----------------------------------------------------------"
for { set i 0 } { $i <$nm } { incr i } {
set x1 [$node_($i) set X_]
set y1 [$node_($i) set Y_]
for { set j 0 } { $j <$nm }
{ incr j } {
set x2 [$node_($j) set X_]
set y2 [$node_($j) set Y_]
set dis [expr sqrt(pow([expr $x2 -
$x1],2)+pow([expr $y2 - $y1],2))]
if { $dis <251 && $i!= $j } {
set x2 [expr int($x1)] ; set y2
[expr int($y1)]
puts $r "$i\t\t
$j\t\t$x2\t$y2\t$dis" } }
}
close $r
}

#---------------- Calling Mobility Function


-------------------------

for {set zz 0 } { $zz<75 } { incr zz } {


$ns_ at [expr $zz +5.0] "mobility [expr $zz +5]"
}

#--------------- Input File for Broadcast


--------------------------

set y [open "btemp" w]


puts $y "0 48 1.6 0.01 0 purple 0"
close $y

#--------------- Input File for Hop Count


--------------------------

set y [open "temp" w]


puts $y "0 48 4.7 0.1"
close $y

set inf0_1 [attach-CBR-traffic $node_(5) $sink(20) 512 0.05]


$ns_ at 1.2 "$inf0_1 start"
$ns_ at 1.2000001 "$inf0_1 stop"

$ns_ at 1.3 "$node_(0) label Base_Station" ;# set a label


$ns_ at 2.0 "$node_(50) label Obj" ;# set a label

$ns_ at 1.3 "$node_(0) add-mark c3 black hexagon" ;# set a


Additional Shape
$ns_ at 1.4 "nnode 50" ;# CalLing Neighbors function
$ns_ at 1.5 "exec awk -f S_broadcast.awk btemp NNode.tr"
$ns_ at 1.6 "source S_broadcast.tcl"

set fle [open Paths w]


close $fle ;# Write shortest Path For All
Destination
set tm 4.6 ;# Set a Time

#------------------ Hop Count Function


----------------------------

proc hop { src snk tm int } {


set fle [open Paths a]
set tp [open Route w]
close $tp
set tmp [open temp w]
puts $tmp " $src $snk $tm $int"
close $tmp
exec awk -f Hop.awk temp NNode.tr
set tp [open Route r]
set ln [read $tp]
puts $fle "$ln"
#puts "\t$ln"
close $fle
}

#-------------------------------------- For Graph


----------------------------------------

set pr [open PDR.xg w]


puts $pr "Markers: true"
puts $pr "BoundBox: true"
puts $pr "Background: grey\n"
puts $pr "0 0"

set tp [open Throughput.xg w]


puts $tp "Markers: true"
puts $tp "BoundBox: true"
puts $tp "Background: grey"
puts $tp "0 0"

set dp [open Drop.xg w]


puts $dp "Markers: true"
puts $dp "BoundBox: true"
puts $dp "Background: grey"
puts $dp "0 0"

proc record {sin} {


global ns_ pr tp dp sink
set itval 5.0
set nw [$ns_ now]
set rec [$sin set npkts_]
set los [$sin set nlost_]
set byt [$sin set bytes_]
set kb [expr double(($byt*8.0)/(2*$itval*1000))]
set pd [expr $rec/($rec+$los+0.0)]
set los1 [$sink(49) set nlost_]

puts $pr "$nw $pd"


puts $tp "$nw $kb"
$sin set nlost_ 0

$ns_ at [expr $nw+$itval] "record $sin"


}

$ns_ at 6.0 "record $sink(0)"


#--------------- Finish Procedure to exec NAM Window
--------------

proc finish {} {
global ns_ namtrace posb
global pr tp dp
close $pr ; close $tp ; close $dp
if { $posb==0 } { puts "\n\n Goto Terminate !!!\n
Run Again \n\n" ; exit 0 }
$ns_ flush-trace
close $namtrace
exec nam -r 8m Nam.nam &
exec xgraph PDR.xg -t "Packet delivary Ratio" -x "Time" -y
"PDR" &
exec xgraph Throughput.xg -t "Throughput" -x "Time" -y
"Throughput" &
exec xgraph Ex_Drop.xg Drop.xg -t "Drop" -x "Time" -ly 0,15
-y "Drop" &
exit 0
}

$ns_ at 80.0 "finish"

puts "Start of simulation.."


$ns_ run

S-ar putea să vă placă și