Showing posts with label ns2. Show all posts
Showing posts with label ns2. Show all posts

Sunday, 15 May 2016

clustering node ns2

#===================================
#     Simulation parameters setup
#===================================
set val(chan)   Channel/WirelessChannel    ;# channel type
set val(prop)   Propagation/TwoRayGround   ;# radio-propagation model
set val(netif)  Phy/WirelessPhy            ;# network interface type
set val(mac)    Mac/802_11                 ;# MAC type
set val(ifq)    Queue/DropTail/PriQueue    ;# interface queue type
set val(ll)     LL                         ;# link layer type
set val(ant)    Antenna/OmniAntenna        ;# antenna model
set val(ifqlen) 50                         ;# max packet in ifq
set val(nn)     16                         ;# number of mobilenodes
set val(rp)     DSDV                       ;# routing protocol
set val(x)      881                      ;# X dimension of topography
set val(y)      652                      ;# Y dimension of topography
set val(stop)   250.0                        ;# time of simulation end
 
#===================================
#        Initialization       
#===================================
#Create a ns simulator
set ns [new Simulator]
 
#Setup topography object
set topo       [new Topography]
$topo load_flatgrid $val(x) $val(y)
create-god $val(nn)
 
#Open the NS trace file
set tracefile [open out1.tr w]
$ns trace-all $tracefile
 
#Open the NAM trace file
set namfile [open out1.nam w]
$ns namtrace-all $namfile
$ns namtrace-all-wireless $namfile $val(x) $val(y)
set chan [new $val(chan)];#Create wireless channel
 
#===================================
#     Mobile node parameter setup
#===================================
$ns node-config -adhocRouting  $val(rp) \
                -llType        $val(ll) \
                -macType       $val(mac) \
                -ifqType       $val(ifq) \
                -ifqLen        $val(ifqlen) \
                -antType       $val(ant) \
                -propType      $val(prop) \
                -phyType       $val(netif) \
                -channel       $chan \
                -topoInstance  $topo \
                -agentTrace    OFF \
                -routerTrace   ON \
                -macTrace      ON \
                -movementTrace ON
 
#===================================
#        Nodes Definition       
#===================================
#Create 16 nodes
set n0 [$ns node]
$n0 set X_ 437
$n0 set Y_ 301
$n0 set Z_ 0.0
$n0 color orange
$ns at 0.0 "$n0 color orange"
$ns initial_node_pos $n0 20
set n1 [$ns node]
$n1 set X_ 324
$n1 set Y_ 337
$n1 set Z_ 0.0
$n1 color orange
$ns at 0.0 "$n1 color orange"
$ns initial_node_pos $n1 20
set n2 [$ns node]
$n2 set X_ 274
$n2 set Y_ 257
$n2 set Z_ 0.0
$n2 color orange
$ns at 0.0 "$n2 color orange"
$ns initial_node_pos $n2 20
set n3 [$ns node]
$n3 set X_ 291
$n3 set Y_ 456
$n3 set Z_ 0.0
$n3 color orange
$ns at 0.0 "$n3 color orange"
$ns initial_node_pos $n3 20
set n4 [$ns node]
$n4 set X_ 478
$n4 set Y_ 390
$n4 set Z_ 0.0
$n4 color orange
$ns at 0.0 "$n4 color orange"
$ns initial_node_pos $n4 20
set n5 [$ns node]
$n5 set X_ 150
$n5 set Y_ 357
$n5 set Z_ 0.0
$n5 color orange
$ns at 0.0 "$n5 color orange"
$ns initial_node_pos $n5 20
set n6 [$ns node]
$n6 set X_ 436
$n6 set Y_ 153
$n6 set Z_ 0.0
$n6 color orange
$ns at 0.0 "$n6 color orange"
$ns initial_node_pos $n6 20
set n7 [$ns node]
$n7 set X_ 451
$n7 set Y_ 509
$n7 set Z_ 0.0
$n7 color orange
$ns at 0.0 "$n7 color orange"
$ns initial_node_pos $n7 20
set n8 [$ns node]
$n8 set X_ 150
$n8 set Y_ 166
$n8 set Z_ 0.0
$n8 color orange
$ns at 0.0 "$n8 color orange"
$ns initial_node_pos $n8 20
set n9 [$ns node]
$n9 set X_ 566
$n9 set Y_ 305
$n9 set Z_ 0.0
$n9 color orange
$ns at 0.0 "$n9 color orange"
$ns initial_node_pos $n9 20
set n10 [$ns node]
$n10 set X_ 611
$n10 set Y_ 462
$n10 set Z_ 0.0
$n10 color orange
$ns at 0.0 "$n10 color orange"
$ns initial_node_pos $n10 20
set n11 [$ns node]
$n11 set X_ 244
$n11 set Y_ 552
$n11 set Z_ 0.0
$n11 color orange
$ns at 0.0 "$n11 color orange"
$ns initial_node_pos $n11 20
set n12 [$ns node]
$n12 set X_ 298
$n12 set Y_ 76
$n12 set Z_ 0.0
$n12 color orange
$ns at 0.0 "$n12 color orange"
$ns initial_node_pos $n12 20
set n13 [$ns node]
$n13 set X_ 544
$n13 set Y_ 213
$n13 set Z_ 0.0
$n13 color orange
$ns at 0.0 "$n13 color orange"
$ns initial_node_pos $n13 20
set n14 [$ns node]
$n14 set X_ 663
$n14 set Y_ 355
$n14 set Z_ 0.0
$n14 color orange
$ns at 0.0 "$n14 color orange"
$ns initial_node_pos $n14 20
set n15 [$ns node]
$n15 set X_ 503
$n15 set Y_ 119
$n15 set Z_ 0.0
$n15 color red
$ns at 0.0 "$n15 color red"
$ns initial_node_pos $n15 20
 
$ns at 0.5 "$n0 setdest 741.222 219.713 15.0"
$ns at 0.5 "$n1 setdest 661.911 293.578 15.0"
$ns at 0.5 "$n2 setdest 720.195 368.71 15.0"
$ns at 0.5 "$n3 setdest 841.832 311.792 15.0"
$ns at 0.5 "$n4 setdest 846.279 231.381 15.0"
$ns at 0.5 "$n5 setdest 154.962 76.1411 15.0"
$ns at 0.5 "$n6 setdest 277.55 146.965 15.0"
$ns at 0.5 "$n7 setdest 218.432 229.934 15.0"
$ns at 0.5 "$n8 setdest 58.4876 147.719 15.0"
$ns at 0.5 "$n9 setdest 113.938 245.951 15.0"
$ns at 0.5 "$n10 setdest 497.792 404.879 15.0"
$ns at 0.5 "$n11 setdest 356.954 425.859 15.0"
$ns at 0.5 "$n12 setdest 355.962 535.156 15.0"
$ns at 0.5 "$n13 setdest 459.874 558.361 15.0"
$ns at 0.5 "$n14 setdest 546.27 490.731 15.0"
$ns at 70.0 "$n0 setdest 546.22 499.713 15.0"
$ns at 75.0 "$n7 setdest 741.222 219.713 15.0"
$ns at 65.5 "$n12 setdest 845.222 319.713 15.0"
$ns at 80.5 "$n3 setdest 355.222 519.713 15.0"
$ns at 75.0 "$n14 setdest 218.422 229.713 15.0"
$ns at 75.5 "$n4 setdest 720.195 368.71 15.0"
$ns at 75.5 "$n2 setdest 846.279 231.381 15.0"
$ns at 80.5 "$n9 setdest 58.4876 147.719 15.0"
$ns at 80.5 "$n8 setdest 113.938 245.951 15.0"
$ns at 77.5 "$n13 setdest 356.954 425.859 15.0"
$ns at 77.5 "$n11 setdest 459.874 558.361 15.0"


#$ns at 138.0 "$n10 setdest 656.26 181.573 15.0"
#$ns at 162.0 "$n10 add-mark N2 white circle"
#$n10 color darkgreen
#$ns at 162.0 "$n10 color darkgreen"
 
 
$ns at 0.0 "$n15 label Host"
 
#$ns at 39.0 "$n1 label High-Power-Cluster"
 
#$ns at 39.0 "$n6 label High-Power-Cluster"
 
#$ns at 108.0 "$n11 label High-Power-Cluster"
 
#$ns at 39.0 "$n10 label High-Power-Cluster"
 
#$ns at 108.0 "$n10 label  ordinary node"
 
#$ns at 99.1 "$n10 color  orange"
#$ns at 99.1 "$n14 color  darkgreen"
 
#$ns at 118.0 "$n1 color  orange"
#$ns at 118.0 "$n0 color  darkgreen"
 
 
 
$n1 color darkgreen
$ns at 64.1 "$n1 color darkgreen"
 
$n6 color darkgreen
$ns at 47.1 "$n6 color darkgreen"
 
$n10 color darkgreen
$ns at 56.1 "$n10 color darkgreen"

$n1 color darkgreen
$ns at 134.1 "$n1 color darkgreen"
 
$n6 color darkgreen
$ns at 140.1 "$n6 color darkgreen"
 
$n10 color darkgreen
$ns at 146.1 "$n10 color darkgreen"
 
$ns at 64.1 "$n1 add-mark N2 white circle"
 
$ns at 47.1 "$n6 add-mark N2 white circle"
 
$ns at 56.1 "$n10 add-mark N2 white circle"

$ns at 130.1 "$n1 add-mark N2 white circle"
 
$ns at 137.1 "$n6 add-mark N2 white circle"
 
$ns at 142.1 "$n10 add-mark N2 white circle"
 
$ns at 120.1 "$n10 color darkgreen"
 
$ns at 115.1 "$n1 add-mark N2 white circle"
 
$ns at 109.1 "$n6 add-mark N2 white circle"
 
$ns at 190.1 "$n10 add-mark N2 white circle"

$ns at 199.1 "$n1 add-mark N2 white circle"
 
$ns at 210.1 "$n6 add-mark N2 white circle"
 
$ns at 220.1 "$n10 add-mark N2 white circle"


#$ns at 99.1 "$n10 delete-mark N2"
 
#$ns at 99.1 "$n14 add-mark N2 white circle"
 
 
#$ns at 118.0 "$n1 delete-mark N2"
 
#$ns at 118.0 "$n0 add-mark N2 white circle"
 
#$ns at 157.0 "$n0 delete-mark N2"
 
#$ns at 157.0 "$n0 add-mark N2 pink circle"

#$ns at 185.1 "$n10 delete-mark N2"
 
#$ns at 185.1 "$n14 add-mark N2 white circle"
 
 
#$ns at 168.0 "$n1 delete-mark N2"
 
#$ns at 168.0 "$n0 add-mark N2 white circle"
 
#$ns at 177.0 "$n0 delete-mark N2"
 
#$ns at 177.0 "$n0 add-mark N2 pink circle"


 
proc create_cluster_head_node {
 
} {
 
 
global val ns_ node_ topo contador_nodos rng
 
Phy/WirelessPhy set Pt_ $val(pt_cluster_head)
$ns_ node-config -sensorNode ON \
-adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-energyModel $val(en) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
 -agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-rxPower 0.3 \
-txPower 0.6 \
-initialEnergy 100.0 \
-movementTrace OFF
set node_($contador_nodos) [$ns_ node]
$node_($contador_nodos) random-motion 0
set x [$rng uniform 0.0 $val(x)]
set y [$rng uniform 0.0 $val(y)]
$node_($contador_nodos) set X_ $x
$node_($contador_nodos) set Y_ $y
$node_($contador_nodos) set Z_ 0.0
set interval [$rng uniform 0.0 1.0]
Node/MobileNode/SensorNode set processingPower 0.36
Node/MobileNode/SensorNode set instructionsPerSecond_ 150000000
Phy/WirelessPhy set  bandwidth_ 1000000.0
 
set udp_($contador_nodos) [new Agent/UDP]
 
set app_($contador_nodos) [create_cluster_head_app [$node_(1) node-addr] $val(disseminating_type) $val(cluster_head_disseminating_interval)]
$node_($contador_nodos) attach $udp_($contador_nodos) $val(port)
$node_($contador_nodos) add-app $app_($contador_nodos)
set processing_($contador_nodos) [new Processing/AggregateProcessing]
 
$app_($contador_nodos) node $node_($contador_nodos)
$app_($contador_nodos) attach-agent $udp_($contador_nodos)
 
$app_($contador_nodos) attach-processing $processing_($contador_nodos)
$processing_($contador_nodos) node $node_($contador_nodos)
 
$ns_ at [expr $val(start) + 1 + $interval] "$app_($contador_nodos) start"
$ns_ at $val(stop) "$app_($contador_nodos) stop"
 
incr contador_nodos
 
 
}
 
 
 
set tcp [new Agent/TCP]
$tcp set class_ 2
set sink [new Agent/TCPSink]
$ns  attach-agent $n0 $tcp
$ns attach-agent $n1 $sink
$ns  connect $tcp $sink
set ftp [new Application/FTP]
$ftp attach-agent $tcp
#$ftp set rate_ 1.0Mb
#$ftp set random_ null
#$ftp  set interval_ 0.4
$ns  at 64.2 "$ftp start"
$ns  at 68.0 "$ftp stop"
 
set tcp1 [new Agent/TCP]
$tcp1 set class_ 2
set sink1 [new Agent/TCPSink]
$ns  attach-agent $n2 $tcp1
$ns attach-agent $n1 $sink1
$ns  connect $tcp1 $sink1
set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp1
#$ftp1 set rate_ 1.0Mb
#$ftp1 set random_ null
#$ftp1  set interval_ 0.4
$ns  at 68.2 "$ftp1 start"
$ns  at 72.0 "$ftp1 stop"
 
set tcp2 [new Agent/TCP]
$tcp2 set class_ 2
set sink2 [new Agent/TCPSink]
$ns  attach-agent $n3 $tcp2
$ns attach-agent $n1 $sink2
$ns  connect $tcp2 $sink2
set ftp2 [new Application/FTP]
$ftp2 attach-agent $tcp2
#$ftp2 set rate_ 1.0Mb
#$ftp2 set random_ null
#$ftp2  set interval_ 0.4
$ns  at 72.2 "$ftp2 start"
$ns  at 76.0 "$ftp2 stop"
 
set tcp3 [new Agent/TCP]
$tcp3 set class_ 2
set sink3 [new Agent/TCPSink]
$ns  attach-agent $n4 $tcp3
$ns attach-agent $n1 $sink3
$ns  connect $tcp3 $sink3
set ftp3 [new Application/FTP]
$ftp3 attach-agent $tcp3
#$ftp3 set rate_ 1.0Mb
#$ftp3 set random_ null
#$ftp3  set interval_ 0.4
$ns  at 76.2 "$ftp3 start"
$ns  at 80.0 "$ftp3 stop"
 
set tcp4 [new Agent/TCP]
$tcp4 set class_ 2
set sink4 [new Agent/TCPSink]
$ns  attach-agent $n1 $tcp4
$ns attach-agent $n15 $sink4
$ns  connect $tcp4 $sink4
set ftp4 [new Application/FTP]
$ftp4 attach-agent $tcp4
#$ftp4 set rate_ 1.0Mb
#$ftp4 set random_ null
#$ftp4  set interval_ 0.4
$ns  at 80.2 "$ftp4 start"
$ns  at 84.0 "$ftp4 stop"
 
set tcp5 [new Agent/TCP]
$tcp5 set class_ 2
set sink5 [new Agent/TCPSink]
$ns  attach-agent $n5 $tcp5
$ns attach-agent $n6 $sink5
$ns  connect $tcp5 $sink5
set ftp5 [new Application/FTP]
$ftp5 attach-agent $tcp5
#$ftp5 set rate_ 1.0Mb
#$ftp5 set random_ null
#$ftp5  set interval_ 0.4
$ns  at 84.2 "$ftp5 start"
$ns  at 88.0 "$ftp5 stop"
 
set tcp6 [new Agent/TCP]
$tcp6 set class_ 2
set sink6 [new Agent/TCPSink]
$ns  attach-agent $n7 $tcp6
$ns attach-agent $n6 $sink6
$ns  connect $tcp6 $sink6
set ftp6 [new Application/FTP]
$ftp6 attach-agent $tcp6
#$ftp6 set rate_ 1.0Mb
#$ftp6 set random_ null
#$ftp6  set interval_ 0.4
$ns  at 88.2 "$ftp6 start"
$ns  at 92.0 "$ftp6 stop"
 
set tcp7 [new Agent/TCP]
$tcp7 set class_ 2
set sink7 [new Agent/TCPSink]
$ns  attach-agent $n8 $tcp7
$ns attach-agent $n6 $sink7
$ns  connect $tcp7 $sink7
set ftp7 [new Application/FTP]
$ftp7 attach-agent $tcp7
#$ftp7 set rate_ 1.0Mb
#$ftp7 set random_ null
#$ftp7  set interval_ 0.4
$ns  at 92.2 "$ftp7 start"
$ns  at 96.0 "$ftp7 stop"
 
set tcp8 [new Agent/TCP]
$tcp8 set class_ 2
set sink8 [new Agent/TCPSink]
$ns  attach-agent $n9 $tcp8
$ns attach-agent $n6 $sink8
$ns  connect $tcp8 $sink8
set ftp8 [new Application/FTP]
$ftp8 attach-agent $tcp8
#$ftp8 set rate_ 1.0Mb
#$ftp8 set random_ null
#$ftp8  set interval_ 0.4
$ns  at 96.2 "$ftp8 start"
$ns  at 100.0 "$ftp8 stop"
 
set tcp9 [new Agent/TCP]
$tcp9 set class_ 2
set sink9 [new Agent/TCPSink]
$ns  attach-agent $n6 $tcp9
$ns attach-agent $n15 $sink9
$ns  connect $tcp9 $sink9
set ftp9 [new Application/FTP]
$ftp9 attach-agent $tcp9
#$ftp9 set rate_ 1.0Mb
#$ftp9 set random_ null
#$ftp9  set interval_ 0.4
$ns  at 100.2 "$ftp9 start"
$ns  at 104.0 "$ftp9 stop"
 
set tcp10 [new Agent/TCP]
$tcp10 set class_ 2
set sink10 [new Agent/TCPSink]
$ns  attach-agent $n11 $tcp10
$ns attach-agent $n10 $sink10
$ns  connect $tcp10 $sink10
set ftp10 [new Application/FTP]
$ftp10 attach-agent $tcp10
#$ftp10 set rate_ 1.0Mb
#$ftp10 set random_ null
#$ftp10  set interval_ 0.4
$ns  at 104.2 "$ftp10 start"
$ns  at 108.0 "$ftp10 stop"
 
set tcp11 [new Agent/TCP]
$tcp11 set class_ 2
set sink11 [new Agent/TCPSink]
$ns  attach-agent $n12 $tcp11
$ns attach-agent $n10 $sink11
$ns  connect $tcp11 $sink11
set ftp11 [new Application/FTP]
$ftp11 attach-agent $tcp11
#$ftp11 set rate_ 1.0Mb
#$ftp11 set random_ null
#$ftp11  set interval_ 0.4
$ns  at 108.2 "$ftp11 start"
$ns  at 112.0 "$ftp11 stop"
 
set tcp12 [new Agent/TCP]
$tcp12 set class_ 2
set sink12 [new Agent/TCPSink]
$ns  attach-agent $n13 $tcp12
$ns attach-agent $n10 $sink12
$ns  connect $tcp12 $sink12
set ftp12 [new Application/FTP]
$ftp12 attach-agent $tcp12
#$ftp12 set rate_ 1.0Mb
#$ftp12 set random_ null
#$ftp12  set interval_ 0.4
$ns  at 112.2 "$ftp12 start"
$ns  at 116.0 "$ftp12 stop"
 
set tcp13 [new Agent/TCP]
$tcp13 set class_ 2
set sink13 [new Agent/TCPSink]
$ns  attach-agent $n14 $tcp13
$ns attach-agent $n10 $sink13
$ns  connect $tcp13 $sink13
set ftp13 [new Application/FTP]
$ftp13 attach-agent $tcp13
#$ftp13 set rate_ 1.0Mb
#$ftp13 set random_ null
#$ftp13  set interval_ 0.4
$ns  at 116.2 "$ftp13 start"
$ns  at 120.0 "$ftp13 stop"
 
 
set tcp14 [new Agent/TCP]
$tcp14 set class_ 2
set sink14 [new Agent/TCPSink]
$ns  attach-agent $n10 $tcp14
$ns attach-agent $n15 $sink14
$ns  connect $tcp14 $sink14
set ftp14 [new Application/FTP]
$ftp14 attach-agent $tcp14
#$ftp14 set rate_ 1.0Mb
#$ftp14 set random_ null
#$ftp14  set interval_ 0.4
$ns  at 120.2 "$ftp14 start"
$ns  at 124.0 "$ftp14 stop"
 
set tcp15 [new Agent/TCP]
$tcp15 set class_ 2
set sink15 [new Agent/TCPSink]
$ns  attach-agent $n7 $tcp15
$ns attach-agent $n6 $sink15
$ns  connect $tcp15 $sink15
set ftp15 [new Application/FTP]
$ftp15 attach-agent $tcp15
#$ftp15 set rate_ 1.0Mb
#$ftp15 set random_ null
#$ftp15  set interval_ 0.4
$ns  at 39.2 "$ftp15 start"
$ns  at 41.0 "$ftp15 stop"
 
 
 
set tcp16 [new Agent/TCP]
$tcp16 set class_ 2
set sink16 [new Agent/TCPSink]
$ns  attach-agent $n8 $tcp16
$ns attach-agent $n6 $sink16
$ns  connect $tcp16 $sink16
set ftp16 [new Application/FTP]
$ftp16 attach-agent $tcp16
#$ftp16 set rate_ 1.0Mb
#$ftp16 set random_ null
#$ftp16  set interval_ 0.4
$ns  at 41.2 "$ftp16 start"
$ns  at 43.0 "$ftp16 stop"
 
set tcp17 [new Agent/TCP]
$tcp17 set class_ 2
set sink17 [new Agent/TCPSink]
$ns  attach-agent $n9 $tcp17
$ns attach-agent $n6 $sink17
$ns  connect $tcp17 $sink17
set ftp17 [new Application/FTP]
$ftp17 attach-agent $tcp17
#$ftp17 set rate_ 1.0Mb
#$ftp17 set random_ null
#$ftp17  set interval_ 0.4
$ns  at 43.2 "$ftp17 start"
$ns  at 45.0 "$ftp17 stop"
 
set tcp18 [new Agent/TCP]
$tcp18 set class_ 2
set sink18 [new Agent/TCPSink]
$ns  attach-agent $n5 $tcp18
$ns attach-agent $n8 $sink18
$ns  connect $tcp18 $sink18
set ftp18 [new Application/FTP]
$ftp18 attach-agent $tcp18
#$ftp18 set rate_ 1.0Mb
#$ftp18 set random_ null
#$ftp18  set interval_ 0.4
$ns  at 45.2 "$ftp18 start"
$ns  at 47.0 "$ftp18 stop"
 
 
set tcp19 [new Agent/TCP]
$tcp19 set class_ 2
set sink19 [new Agent/TCPSink]
$ns  attach-agent $n11 $tcp19
$ns attach-agent $n10 $sink19
$ns  connect $tcp19 $sink19
set ftp19 [new Application/FTP]
$ftp19 attach-agent $tcp19
#$ftp19 set rate_ 1.0Mb
#$ftp19 set random_ null
#$ftp19  set interval_ 0.4
$ns  at 47.2 "$ftp19 start"
$ns  at 49.0 "$ftp19 stop"
 
set tcp20 [new Agent/TCP]
$tcp20 set class_ 2
set sink20 [new Agent/TCPSink]
$ns  attach-agent $n12 $tcp20
$ns attach-agent $n10 $sink20
$ns  connect $tcp20 $sink20
set ftp20 [new Application/FTP]
$ftp20 attach-agent $tcp20
#$ftp20 set rate_ 1.0Mb
#$ftp20 set random_ null
#$ftp20  set interval_ 0.4
$ns  at 50.2 "$ftp20 start"
$ns  at 52.0 "$ftp20 stop"
 
set tcp21 [new Agent/TCP]
$tcp21 set class_ 2
set sink21 [new Agent/TCPSink]
$ns  attach-agent $n13 $tcp21
$ns attach-agent $n10 $sink21
$ns  connect $tcp21 $sink21
set ftp21 [new Application/FTP]
$ftp21 attach-agent $tcp21
#$ftp21 set rate_ 1.0Mb
#$ftp21 set random_ null
#$ftp21  set interval_ 0.4
$ns  at 52.2 "$ftp21 start"
$ns  at 54.0 "$ftp21 stop"
 
set tcp22 [new Agent/TCP]
$tcp22 set class_ 2
set sink22 [new Agent/TCPSink]
$ns  attach-agent $n14 $tcp22
$ns attach-agent $n11 $sink22
$ns  connect $tcp22 $sink22
set ftp22 [new Application/FTP]
$ftp22 attach-agent $tcp22
#$ftp22 set rate_ 1.0Mb
#$ftp22 set random_ null
#$ftp22  set interval_ 0.4
$ns  at 54.2 "$ftp22 start"
$ns  at 56.0 "$ftp22 stop"
 
set tcp23 [new Agent/TCP]
$tcp23 set class_ 2
set sink23 [new Agent/TCPSink]
$ns  attach-agent $n4 $tcp23
$ns attach-agent $n1 $sink23
$ns  connect $tcp23 $sink23
set ftp23 [new Application/FTP]
$ftp23 attach-agent $tcp23
#$ftp23 set rate_ 1.0Mb
#$ftp23 set random_ null
#$ftp23  set interval_ 0.4
$ns  at 56.2 "$ftp23 start"
$ns  at 58.0 "$ftp23 stop"
 
set tcp24 [new Agent/TCP]
$tcp24 set class_ 2
set sink24 [new Agent/TCPSink]
$ns  attach-agent $n0 $tcp24
$ns attach-agent $n1 $sink24
$ns  connect $tcp24 $sink24
set ftp24 [new Application/FTP]
$ftp24 attach-agent $tcp24
#$ftp24 set rate_ 1.0Mb
#$ftp24 set random_ null
#$ftp24  set interval_ 0.4
$ns  at 59.2 "$ftp24 start"
$ns  at 60.0 "$ftp24 stop"
 
set tcp25 [new Agent/TCP]
$tcp25 set class_ 2
set sink25 [new Agent/TCPSink]
$ns  attach-agent $n2 $tcp25
$ns attach-agent $n1 $sink25
$ns  connect $tcp25 $sink25
set ftp25 [new Application/FTP]
$ftp25 attach-agent $tcp25
#$ftp24 set rate_ 1.0Mb
#$ftp24 set random_ null
#$ftp24  set interval_ 0.4
$ns  at 60.2 "$ftp25 start"
$ns  at 62.0 "$ftp25 stop"
 
set tcp26 [new Agent/TCP]
$tcp26 set class_ 2
set sink26 [new Agent/TCPSink]
$ns  attach-agent $n1 $tcp26
$ns attach-agent $n0 $sink26
$ns  connect $tcp26 $sink26
set ftp26 [new Application/FTP]
$ftp26 attach-agent $tcp26
#$ftp24 set rate_ 1.0Mb
#$ftp24 set random_ null
#$ftp24  set interval_ 0.4
$ns  at 62.2 "$ftp26 start"
$ns  at 64.0 "$ftp26 stop"
 

 
#Define a 'finish' procedure
proc finish {
 
} {
 
    global ns tracefile namfile
    $ns flush-trace
    close $tracefile
    close $namfile
    exec nam out1.nam &
    exit 0
 
}
for {
set i 0
} {
$i < $val(nn)
} {
 incr i
} {
 
    $ns at $val(stop) "\$n$i reset"
 
}
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
$ns at $val(stop) "finish"
$ns at $val(stop) "puts \"done\" ; $ns halt"
$ns run

Thursday, 12 May 2016

wireless communication using NS2

   
# Define options
    set val(chan)        Channel/WirelessChannel;# channel type
    set val(prop)       Propagation/TwoRayGround;# radio-propagation model
    set val(netif)       Phy/WirelessPhy ;# network interface type
    set val(mac)         Mac/802_11 ;# MAC type
    set val(ifq)       Queue/DropTail/PriQueue ;# interface queue type
    set val(ll)        LL ;# link layer type
    set val(ant)        Antenna/OmniAntenna ;# antenna model
    set val(ifqlen)     50 ;# max packet in ifq
    set val(nn)         8 ;# number of mobilenodes
    set val(rp)        AODV ;# routing protocol
    set val(x)        500 ;# X dimension of topography
    set val(y)        400 ;# Y dimension of topography
    set val(stop)      100 ;# time of simulation end


set ns              [new Simulator]
#creating trace file and nam file
set tracefd       [open wireless1.tr w]
set windowVsTime2 [open win.tr w]
set namtrace      [open wirelessf.nam w]  

$ns trace-all $tracefd
$ns namtrace-all-wireless $namtrace $val(x) $val(y)

# set up topography object
set topo       [new Topography]

$topo load_flatgrid $val(x) $val(y)

create-god $val(nn)

# configure the nodes
        $ns node-config -adhocRouting $val(rp) \
                   -llType $val(ll) \
                   -macType $val(mac) \
                   -ifqType $val(ifq) \
                   -ifqLen $val(ifqlen) \
                   -antType $val(ant) \
                   -propType $val(prop) \
                   -phyType $val(netif) \
                   -channelType $val(chan) \
                   -topoInstance $topo \
                   -agentTrace ON \
                   -routerTrace ON \
                   -macTrace OFF \
                   -movementTrace ON
                   
      for {
set i 0
} {
$i < $val(nn)
} {
 incr i
} {

            set node_($i) [$ns node]    
      
}

# Provide initial location of mobilenodes
$node_(0) set X_ 5.0
$node_(0) set Y_ 5.0
$node_(0) set Z_ 0.0

$node_(1) set X_ 290.0
$node_(1) set Y_ 285.0
$node_(1) set Z_ 0.0

$node_(2) set X_ 150.0
$node_(2) set Y_ 240.0
$node_(2) set Z_ 0.0

$node_(3) set X_ 150.0
$node_(3) set Y_ 350.0
$node_(3) set Z_ 0.0

$node_(4) set X_ 10.0
$node_(4) set Y_ 140.0
$node_(4) set Z_ 0.0

$node_(5) set X_ 250.0
$node_(5) set Y_ 140.0
$node_(5) set Z_ 0.0

$node_(6) set X_ 100.0
$node_(6) set Y_ 100.0
$node_(6) set Z_ 0.0

$node_(7) set X_ 70.0
$node_(7) set Y_ 180.0
$node_(7) set Z_ 0.0


#$ns at 15.0 "$node_(1) setdest 45.0 285.0 5.0"
#$ns at 19.0 "$node_(2) setdest 480.0 300.0 5.0"


# Set a TCP connection between node_(1) and node_(4)
set tcp [new Agent/TCP/Newreno]
$tcp set class_ 2
set sink [new Agent/TCPSink]
$ns attach-agent $node_(1) $tcp
$ns attach-agent $node_(4) $sink
$ns connect $tcp $sink
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ns at 10.0 "$ftp start"

#defining heads
$ns at 0.0 "$node_(1) label Sender"
$ns at 0.0 "$node_(4) label Receiver"

# Generation of movements
$ns at 20.0 "$node_(2) setdest 400.0 20.0 5.0"


#set tcp [new Agent/TCP/Newreno]
#$tcp set class_ 2
#set sink [new Agent/TCPSink]
#$ns attach-agent $node_(1) $tcp
#$ns attach-agent $node_(2) $sink
#$ns connect $tcp $sink
#set ftp [new Application/FTP]
#$ftp attach-agent $tcp
#$ns at 10.0 "$ftp start"

# Printing the window size
proc plotWindow {
tcpSource file
} {

global ns
set time 0.01
set now [$ns now]
set cwnd [$tcpSource set cwnd_]
puts $file "$now $cwnd"
$ns at [expr $now+$time] "plotWindow $tcpSource $file"
}
$ns at 10.0 "plotWindow $tcp $windowVsTime2"

# Define node initial position in nam
for {
set i 0
} {
$i < $val(nn)
} {
 incr i
} {

# 30 defines the node size for nam
$ns initial_node_pos $node_($i) 30

}

# Telling nodes when the simulation ends
for {
set i 0
} {
$i < $val(nn)
} {
 incr i
} {

    $ns at $val(stop) "$node_($i) reset";

}

# ending nam and the simulation
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
$ns at $val(stop) "stop"
$ns at 100.01 "puts \"end simulation\" ; $ns halt"
proc stop {

} {

    global ns tracefd namtrace
    $ns flush-trace
    close $tracefd
    close $namtrace
exec nam wirelessf.nam &

#exec xgraph wireless1.tr &
exit 0

}

$ns run

Tcl script for create Multicast network ns2

set ns [new Simulator -multicast on]
#$ns multicast
#Turn on Tracing
set tf [open output.tr w]
$ns trace-all $tf
# Turn on nam Tracing
set fd [open mcast.nam w]
$ns namtrace-all $fd
# Create nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
set n6 [$ns node]
set n7 [$ns node]
# Create links
$ns duplex-link $n0 $n2 1.5Mb 10ms DropTail
$ns duplex-link $n1 $n2 1.5Mb 10ms DropTail
$ns duplex-link $n2 $n3 1.5Mb 10ms DropTail
$ns duplex-link $n3 $n4 1.5Mb 10ms DropTail
$ns duplex-link $n3 $n7 1.5Mb 10ms DropTail
$ns duplex-link $n4 $n5 1.5Mb 10ms DropTail
$ns duplex-link $n4 $n6 1.5Mb 10ms DropTail
# Routing protocol: say distance vector
#Protocols: CtrMcast, DM, ST, BST
set mproto DM
set mrthandle [$ns mrtproto $mproto {}]
# Allocate group addresses
set group1 [Node allocaddr]
set group2 [Node allocaddr]
# UDP Transport agent for the traffic source
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0
$udp0 set dst_addr_ $group1
$udp0 set dst_port_ 0
set cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp0
# Transport agent for the traffic source
set udp1 [new Agent/UDP]
$ns attach-agent $n1 $udp1
$udp1 set dst_addr_ $group2
$udp1 set dst_port_ 0
set cbr2 [new Application/Traffic/CBR]
$cbr2 attach-agent $udp1
# Create receiver
set rcvr1 [new Agent/Null]
$ns attach-agent $n5 $rcvr1
$ns at 1.0 "$n5 join-group $rcvr1 $group1"
set rcvr2 [new Agent/Null]
$ns attach-agent $n6 $rcvr2
$ns at 1.5 "$n6 join-group $rcvr2 $group1"
set rcvr3 [new Agent/Null]
$ns attach-agent $n7 $rcvr3
$ns at 2.0 "$n7 join-group $rcvr3 $group1"
set rcvr4 [new Agent/Null]
$ns attach-agent $n5 $rcvr1
$ns at 2.5 "$n5 join-group $rcvr4 $group2"
set rcvr5 [new Agent/Null]
$ns attach-agent $n6 $rcvr2
$ns at 3.0 "$n6 join-group $rcvr5 $group2"
set rcvr6 [new Agent/Null]
$ns attach-agent $n7 $rcvr3
$ns at 3.5 "$n7 join-group $rcvr6 $group2"
$ns at 4.0 "$n5 leave-group $rcvr1 $group1"
$ns at 4.5 "$n6 leave-group $rcvr2 $group1"
$ns at 5.0 "$n7 leave-group $rcvr3 $group1"
$ns at 5.5 "$n5 leave-group $rcvr4 $group2"
$ns at 6.0 "$n6 leave-group $rcvr5 $group2"
$ns at 6.5 "$n7 leave-group $rcvr6 $group2"
# Schedule events
$ns at 0.5 "$cbr1 start"
$ns at 9.5 "$cbr1 stop"
$ns at 0.5 "$cbr2 start"
$ns at 9.5 "$cbr2 stop"
#post-processing
$ns at 10.0 "finish"
proc finish {} {
global ns tf
$ns flush-trace
close $tf
exec nam mcast.nam &
exit 0
}
# For nam
#Colors for packets from two mcast groups
$ns color 10 red
$ns color 11 green
$ns color 30 purple
$ns color 31 green
# Manual layout: order of the link is significant!
#$ns duplex-link-op $n0 $n1 orient right
#$ns duplex-link-op $n0 $n2 orient right-up
#$ns duplex-link-op $n0 $n3 orient right-down
# Show queue on simplex link n0->n1
#$ns duplex-link-op $n2 $n3 queuePos 0.5
# Group 0 source
$udp0 set fid_ 10
$n0 color red
$n0 label "Source 1"
# Group 1 source
$udp1 set fid_ 11
$n1 color green
$n1 label "Source 2"
$n5 label "Receiver 1"
$n5 color blue
$n6 label "Receiver 2"
$n6 color blue
$n7 label "Receiver 3"
$n7 color blue
#$n2 add-mark m0 red
#$n2 delete-mark m0"
# Animation rate
$ns set-animation-rate 3.0ms
$ns run

TCL script for TCP communication between nodes



#-------Event scheduler object creation--------#
set ns [ new Simulator
#------------ CREATING NAM OBJECTS -----------------#
     
set nf [open tcpred5.nam w]
$ns namtrace-all $nf
#Open the trace file
set nt [open tcpred5.tr w]
$ns trace-all $nt

set proto rlm
#------------COLOR DESCRIPTION---------------#
$ns color 1 dodgerblue
$ns color 2 red
$ns color 3 cyan
$ns color 4 green
$ns color 5 yellow
$ns color 6 black
$ns color 7 magenta
$ns color 8 gold
$ns color 9 red

# --------- CREATING SENDER - RECEIVER - ROUTER NODES-----------#
set C1 [$ns node]
set C2 [$ns node]
set C3 [$ns node]
set C4 [$ns node]
set R1 [$ns node]
set R2 [$ns node]
set R3 [$ns node]
set R4 [$ns node]
set ROU1 [$ns node]
set ROU2 [$ns node]
set ROU3 [$ns node]

# --------------CREATING DUPLEX LINK -----------------------#
                       
$ns duplex-link $C1 $ROU1 1Mb 10ms DropTail
$ns duplex-link $C2 $ROU1 500Kb 10ms DropTail
$ns duplex-link $C3 $ROU1 750Kb 10ms DropTail
$ns duplex-link $C4 $ROU2 1Mb 10ms DropTail
$ns duplex-link $R1 $ROU1 1Mb 10ms DropTail
$ns duplex-link $R2 $ROU1 1Mb 10ms DropTail
$ns duplex-link $R3 $ROU1 1Mb 10ms DropTail
$ns duplex-link $R4 $ROU3 1Mb 10ms DropTail
$ns duplex-link $ROU2 $ROU1 1Mb 10ms DropTail
$ns duplex-link $ROU2 $ROU3 1Mb 10ms DropTail
$ns duplex-link $ROU1 $ROU3 1Mb 10ms DropTail
#-------------QUEUE SIZE DESCRIPTION---------------#
$ns queue-limit $ROU1 $ROU2 18
$ns queue-limit $ROU1 $ROU3 18
$ns queue-limit $ROU2 $ROU1 20
$ns queue-limit $ROU3 $ROU1 20
#-----------CREATING ORIENTATION -------------------------#
           
$ns duplex-link-op $C1 $ROU1 orient down
$ns duplex-link-op $C2 $ROU1 orient down-right
$ns duplex-link-op $C3 $ROU1 orient down-left
$ns duplex-link-op $C4 $ROU2 orient up
$ns duplex-link-op $R1 $ROU1 orient up
$ns duplex-link-op $R2 $ROU1 orient up-right
$ns duplex-link-op $R3 $ROU1 orient up-left
$ns duplex-link-op $R4 $ROU3 orient down
$ns duplex-link-op $ROU1 $ROU2 orient down-right
$ns duplex-link-op $ROU3 $ROU2 orient down-right
#$ns queue-limit $ $n1 15

# --------------LABELLING -----------------------------#
$ns at 0.0 "$C1 label CL1"
$ns at 0.0 "$C2 label CL2"
$ns at 0.0 "$C3 label CL3"
$ns at 0.0 "$C4 label CL4"
$ns at 0.0 "$R1 label RC1"
$ns at 0.0 "$R2 label RC2"
$ns at 0.0 "$R3 label RC3"
$ns at 0.0 "$R4 label RC4"
$ns at 0.0 "$ROU1 label ROU1"
$ns at 0.0 "$ROU2 label ROU2"
$ns at 0.0 "$ROU3 label ROU3"
# --------------- CONFIGURING NODES -----------------#
$ROU1 shape square
$ROU2 shape square
$ROU3 shape square
# ----------------QUEUES POSITIONING AND ESTABLISHMENT -------------#
$ns duplex-link-op $ROU2 $ROU1 queuePos 0.1
#$ns duplex-link-op $ROU2 $C5 queuePos 0.1
$ns duplex-link-op $ROU3 $ROU1 queuePos 0.1

#--------SETTING IDENTIFICATION COLORS TO ROUTER-LINKS----------#
     
$ns duplex-link-op $ROU1 $ROU2 color cyan
$ns duplex-link-op $ROU1 $ROU3 color cyan
$ns duplex-link-op $ROU2 $ROU3 color cyan

# ----------------ESTABLISHING COMMUNICATION -------------#
           
#--------------TCP CONNECTION BETWEEN NODES---------------#
      #$tcp0 set fid_ 3
      #$Base1 set fid_ 3
      #$tcp0 set window_ 15
      #$ftp0 set packetSize_ 1000
      #$ftp0 set interval_ .05
     
      set tcp1 [$ns create-connection TCP $C1 TCPSink $R4 1]
      $tcp1 set class_ 1
      $tcp1 set maxcwnd_ 16
      $tcp1 set packetsize_ 4000
      $tcp1 set fid_ 1
      set ftp1 [$tcp1 attach-app FTP]
      $ftp1 set interval_ .005
      $ns at 0.2 "$ftp1 start"
      $ns at 4.0 "$ftp1 stop"
           
      set tcp2 [$ns create-connection TCP $C2 TCPSink $R3 1]
      $tcp2 set class_ 1
      $tcp2 set maxcwnd_ 16
      $tcp2 set packetsize_ 4000
      $tcp2 set fid_ 2
      set ftp2 [$tcp2 attach-app FTP]
      $ftp2 set interval_ .005
      $ns at 0.7 "$ftp2 start"
      $ns at 4.0 "$ftp2 stop"
           
      set tcp3 [$ns create-connection TCP $C3 TCPSink $R2 1]
      $tcp3 set class_ 1
      $tcp3 set maxcwnd_ 16
      $tcp3 set packetsize_ 4000
      $tcp3 set fid_ 3
      set ftp3 [$tcp3 attach-app FTP]
      $ftp3 set interval_ .005
      $ns at 1.2 "$ftp3 start"
      $ns at 4.0 "$ftp3 stop"
     
      set tcp4 [$ns create-connection TCP $C4 TCPSink $R1 1]
      $tcp4 set class_ 1
      $tcp4 set maxcwnd_ 16
      $tcp4 set packetsize_ 4000
      $tcp4 set fid_ 4
      set ftp4 [$tcp4 attach-app FTP]
      $ftp1 set interval_ .005
      $ns at 2.5 "$ftp4 start"
      $ns at 4.0 "$ftp4 stop"
     
                             
      # ---------------- FINISH PROCEDURE -------------#
                 
       proc finish {} {
               global ns nf nt nf1
               $ns flush-trace
               close $nf
               puts "running nam..."
               exec nam Tcpred5.nam &
               exit 0
            }
      #Calling finish procedure
$ns at 20.0 "finish"
$ns ru

Energy Model for Mobile Nodes ns2

set val(chan)           Channel/WirelessChannel    ;# channel type
set val(prop)           Propagation/TwoRayGround   ;# radio-propagation model
set val(netif)          Phy/WirelessPhy            ;# network interface type
set val(mac)            Mac/802_11                 ;# MAC type
set val(ifq)            Queue/DropTail/PriQueue    ;# interface queue type
set val(ll)             LL                         ;# link layer type
set val(ant)            Antenna/OmniAntenna        ;# antenna model
set val(ifqlen)         5                          ;# max packet in ifq
set val(nn)             6                           ;# number of mobilenodes
set val(rp)             DSR                        ;# routing protocol
set val(x)              750                        ;# X dimension of topography
set val(y)              550                        ;# Y dimension of topography 
set val(stop)         18.0                       ;# time of simulation end
## Create a simulator object(nothing but, a scheduler's object)..
      set ns [new Simulator]
## Create a trace file and nam file..
      set tracefd [open wireless1.tr w]
      set namtrace [open wireless1.nam w]   
## Trace the nam and trace details from the main simulation..
      $ns trace-all $tracefd
      $ns namtrace-all-wireless $namtrace $val(x) $val(y)
## set up topography object..
      set topo [new Topography]
      $topo load_flatgrid $val(x) $val(y)
      set god_ [create-god $val(nn)]
## Color Descriptions..
      $ns color 1 dodgerblue
      $ns color 2 blue
      $ns color 3 cyan
      $ns color 4 green
      $ns color 5 yellow
      $ns color 6 black
      $ns color 7 magenta
      $ns color 8 gold
      $ns color 9 red
     
# Setting The Distance Variables..
# For model 'TwoRayGround'
      set dist(5m)  7.69113e-06
      set dist(9m)  2.37381e-06
      set dist(10m) 1.92278e-06
      set dist(11m) 1.58908e-06
      set dist(12m) 1.33527e-06
      set dist(13m) 1.13774e-06
      set dist(14m) 9.81011e-07
      set dist(15m) 8.54570e-07
      set dist(16m) 7.51087e-07
      set dist(20m) 4.80696e-07
      set dist(25m) 3.07645e-07
      set dist(30m) 2.13643e-07
      set dist(35m) 1.56962e-07
      set dist(40m) 1.56962e-10
      set dist(45m) 1.56962e-11
      set dist(50m) 1.20174e-13
      #Phy/WirelessPhy set CSThresh_ $dist(50m)
      #Phy/WirelessPhy set RXThresh_ $dist(50m)
## Setting node config event with set of inputs..
      puts "Node Configuration Started here...\n \
                   -channel $val(chan) \n \
                   -adhocRouting $val(rp) \n \
                   -llType $val(ll) \n \
                   -macType $val(mac) \n \
                   -ifqType $val(ifq) \n \
                   -ifqLen $val(ifqlen) \n \
                   -antType $val(ant) \n \
                   -propType $val(prop) \n \
                   -phyType $val(netif) \n"
                      
        $ns node-config -adhocRouting $val(rp) \
                   -llType $val(ll) \
                   -macType $val(mac) \
                   -ifqType $val(ifq) \
                   -ifqLen $val(ifqlen) \
                   -antType $val(ant) \
                   -propType $val(prop) \
                   -phyType $val(netif) \
                   -channelType $val(chan) \
                   -topoInstance $topo \
                   -agentTrace ON \
                   -routerTrace ON \
                   -macTrace OFF \
                   -movementTrace ON
# Energy model
      $ns node-config  -energyModel EnergyModel \
                        -initialEnergy 20 \
                        -txPower 0.9 \
                        -rxPower 0.8 \
                        -idlePower 0.0 \
                        -sensePower 0.0175
## Creating node objects..               
      for {set i 0} {$i < $val(nn) } { incr i } {
            set node_($i) [$ns node]     
      }
for {set i 0} {$i < $val(nn)} {incr i} {
      $node_($i) color darkgreen
      $ns at 0.0 "$node_($i) color darkgreen"
      }
## Provide initial location of mobilenodes..
           
      if {$val(nn) >0} {
            for {set i 1} {$i < $val(nn) } { incr i } {
                  set xx [expr rand()*600]                 
                  set yy [expr rand()*500];
                  $node_($i) set X_ $xx
                  $node_($i) set Y_ $yy
            }
      }
## set god distance..
      $god_ set-dist 0 1 2
      $god_ set-dist 0 2 2
      $god_ set-dist 0 3 2
      $god_ set-dist 0 4 1
      $god_ set-dist 0 5 2
      $god_ set-dist 1 2 3
      $god_ set-dist 1 3 3
     
## Define node initial position in nam..
      for {set i 0} {$i < $val(nn)} { incr i } {
      # 30 defines the node size for nam..
            $ns initial_node_pos $node_($i) 30
      }
## Telling nodes when the simulation ends..
for {set i 0} {$i < $val(nn) } { incr i } {
    $ns at $val(stop) "$node_($i) reset";
}
## Ending nam and the simulation..
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
$ns at $val(stop) "stop"
$ns at 16.01 "puts \"end simulation\" " ;# $ns halt

## Stop procedure..
proc stop {} {
    global ns tracefd namtrace
    $ns flush-trace
    close $tracefd
    close $namtrace
    exec nam wireless1.nam &
    exit 0
}
$ns run

data transfer between nodes using TCP in ns2

# Filename: test2.tcl


#-------Event scheduler object creation--------#

                 
set ns [new Simulator]



#----------creating trace objects----------------#

set nt [open test2.tr w]
$ns trace-all $nt


#----------creating nam objects----------------#

set nf [open test2.nam w]
$ns namtrace-all $nf


#----------Setting color ID----------------#


$ns color 1 darkmagenta
$ns color 2 yellow
$ns color 3 blue
$ns color 4 green
$ns color 5 black

#---------- Creating Network----------------#

set totalNodes 3

for {set i 0} {$i < $totalNodes} {incr i} {
set node_($i) [$ns node]
}

set server 0
set router 1
set client 2

#---------- Creating Duplex Link----------------#


$ns duplex-link $node_($server) $node_($router) 2Mb 50ms DropTail
$ns duplex-link $node_($router) $node_($client) 2Mb 50ms DropTail

$ns duplex-link-op $node_($server) $node_($router) orient right
$ns duplex-link-op $node_($router) $node_($client) orient right

#------------Labelling----------------#

$ns at 0.0 "$node_($server) label Server"
$ns at 0.0 "$node_($router) label Router"
$ns at 0.0 "$node_($client) label Client"

$ns at 0.0 "$node_($server) color blue"
$ns at 0.0 "$node_($client) color blue"

$node_($server) shape hexagon
$node_($client) shape hexagon


#------------Data Transfer between Nodes----------------#

# Defining a transport agent for sending
set tcp [new Agent/TCP]

# Attaching transport agent to sender node
$ns attach-agent $node_($server) $tcp

# Defining a transport agent for receiving
set sink [new Agent/TCPSink]

# Attaching transport agent to receiver node
$ns attach-agent $node_($client) $sink

#Connecting sending and receiving transport agents
$ns connect $tcp $sink

#Defining Application instance
set ftp [new Application/FTP]

# Attaching transport agent to application agent
$ftp attach-agent $tcp

# Setting flow color
$tcp set fid_ 4

# data packet generation starting time
$ns at 1.0 "$ftp start"

# data packet generation ending time
$ns at 6.0 "$ftp stop"



#---------finish procedure--------#

proc finish {} {
       global ns nf nt
       $ns flush-trace
       close $nf   
         close $nt          
       puts "running nam..."
       exec nam test2.nam &
       exit 0
}

#Calling finish procedure
$ns at 10.0 "finish"
$ns run



#--------- Execution --------#

ns test2.tcl





Wired Network in ns2

# Filename: test1.tcl

#-------Event scheduler object creation--------#

                 
set ns [new Simulator]



#----------creating trace objects----------------#

set nt [open test1.tr w]
$ns trace-all $nt


#----------creating nam objects----------------#

set nf [open test1.nam w]
$ns namtrace-all $nf


#----------Setting color ID----------------#


$ns color 1 darkmagenta
$ns color 2 yellow
$ns color 3 blue
$ns color 4 green
$ns color 5 black

#---------- Creating Network----------------#

set totalNodes 3

for {set i 0} {$i < $totalNodes} {incr i} {
set node_($i) [$ns node]
}

set server 0
set router 1
set client 2

#---------- Creating Duplex Link----------------#


$ns duplex-link $node_($server) $node_($router) 2Mb 50ms DropTail
$ns duplex-link $node_($router) $node_($client) 2Mb 50ms DropTail

$ns duplex-link-op $node_($server) $node_($router) orient right
$ns duplex-link-op $node_($router) $node_($client) orient right

#------------Labelling----------------#

$ns at 0.0 "$node_($server) label Server"
$ns at 0.0 "$node_($router) label Router"
$ns at 0.0 "$node_($client) label Client"

$ns at 0.0 "$node_($server) color blue"
$ns at 0.0 "$node_($client) color blue"

$node_($server) shape hexagon
$node_($client) shape hexagon


#---------finish procedure--------#

proc finish {} {
       global ns nf nt
       $ns flush-trace
       close $nf   
         close $nt          
       puts "running nam..."
       exec nam test1.nam &
       exit 0
}

#Calling finish procedure
$ns at 10.0 "finish"
$ns run


#--------- Execution --------#


reno tcl scripts

#Simulation of TCP
set ns [new Simulator]

set f0 [open reno.tr w]
set f1 [open reno1.tr w]
set f2 [open reno2.tr w]

set nr [open cong.tr w]
$ns trace-all $nr

set nf [open cong.nam w]
$ns namtrace-all $nf

        proc finish { } {
        global ns f0 f2 f1 nr nf
        $ns flush-trace
    close $f0
    close $f1
    close $f2
        close $nf

        exec nam cong.nam &
    exec xgraph reno.tr reno1.tr reno2.tr  -geometry 800x400+X+Y &
    #exec xgraph reno1.tr -geometry 800 x 400 &
    #exec xgraph reno2.tr -geometry 800 x 400 &
    exit 0
        }

#Creation of Nodes:
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
set n6 [$ns node]
set n7 [$ns node]

#Creation of Links:
$ns duplex-link $n0 $n2 1Mb 10ms DropTail
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link $n2 $n3 3Mb 10ms DropTail
$ns duplex-link $n3 $n4 2Mb 10ms DropTail
$ns duplex-link $n3 $n5 2Mb 10ms DropTail
$ns duplex-link $n6 $n2 1Mb 10ms DropTail
$ns duplex-link $n3 $n7 2Mb 10ms DropTail

#Orientation of nodes:
$ns duplex-link-op $n0 $n2 orient right-up
$ns duplex-link-op $n2 $n3 orient middle
$ns duplex-link-op $n1 $n2 orient right-down
$ns duplex-link-op $n3 $n4 orient right-up
$ns duplex-link-op $n3 $n5 orient right-down
$ns duplex-link-op $n6 $n2 orient right
$ns duplex-link-op $n7 $n3 orient left

#Connection of node1 with node5
set tcp0 [new Agent/TCP/Reno]
$ns attach-agent $n1 $tcp0
set ftp0 [new Application/FTP]
$ftp0 set packetSize_ 500
$ftp0 set  interval_ 0.005
$ftp0 attach-agent $tcp0
set sink0 [new Agent/TCPSink]
$ns attach-agent $n4 $sink0
$ns connect $tcp0 $sink0

#Connection of node1 with node4
set tcp1 [new Agent/TCP/Reno]
$ns attach-agent $n0 $tcp1
set ftp [new Application/FTP]
$ftp set packetSize_ 500
$ftp set  interval_ 0.005
$ftp attach-agent $tcp1
set sink [new Agent/TCPSink]
$ns attach-agent $n5 $sink
$ns connect $tcp1 $sink

set tcp2 [new Agent/TCP/Reno]
$ns attach-agent $n6 $tcp2
set ftp1 [new Application/FTP]
$ftp1 set packetSize_ 500
$ftp1 set  interval_ 0.005
$ftp1 attach-agent $tcp2
set sink1 [new Agent/TCPSink]
$ns attach-agent $n7 $sink1
$ns connect $tcp2 $sink1
#Setting color for the nodes
$tcp0 set fid_ 1
$tcp1 set fid_ 2
$tcp2 set fid_ 3

proc record {} {

        global tcp2 tcp0 tcp1 f0 f1 f2

        set ns [Simulator instance]

        set time 0.01

        set wnd0 [$tcp0 set cwnd_]
        set wnd1 [$tcp1 set cwnd_]
        set wnd2 [$tcp2 set cwnd_]
        set now [$ns now]

        puts $f0 "$now $wnd0"
        puts $f1 "$now $wnd1"
        puts $f2 "$now $wnd2"

        $tcp0 set bytes_ 0
        $tcp1 set bytes_ 0
        $tcp2 set bytes_ 0

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

$ns color 1 Red
$ns color 2 Green
$ns color 3 Brown

#Schedule events for the CBR and FTP agents

$ns at 0.1 "record"

$ns at 0.5 "$ftp0 start"
$ns at 1.4 "$ftp start"
$ns at 1.9 "$ftp1 start"
$ns at 4.1 "$ftp stop"
$ns at 3.5 "$ftp0 stop"
$ns at 4.4 "$ftp1 stop"
$ns at 5.0 "finish"
$ns run

Energy model scripts ns2


puts "Initializing MannaSim Script..."
 
#Consumo de energia do sensor node - Dados do Mica Motes
set mica(sensing_power) 0.015 ;# i = 5mA, V = 3 --> P = ixV = 15 mW = 0.015 W
set mica(processing_power) 0.024 ;# i = 8mA, V = 3 --> P = ixV = 24 mW = 0.024 W
set mica(instructions_per_second) 8000000 ;# Atmel 128L 8MHZ --> 8MIPS
 
#Consumo de energia do sensor node - Dados do WINS
set wins(sensing_power) 0.064 ;# 64 mW = 0.064 W
set wins(processing_power) 0.360 ;# 360 mW = 0.360 W
set wins(instructions_per_second) 150000000 ;# Intel StrongArm 1100 133 MHZ --> 150 MIPS
 
#Seta valores para consumo de energia com o radio
set mica(consumo_transmissao) 0.036 ;#i = 12mA, V = 3 --> P = ixV = 36mW = 0.036W
set mica(consumo_recepcao) 0.024 ;#i = 8mA, V = 3 --> P = ixV = 24mW = 0.024W
 
set wins(consumo_transmissao)3.75 ;# 3.75 250m, 0.6 600 mW - 100m
set wins(consumo_recepcao) 1.875 ;# 1.875 250m,  0.3 300 mW
 
#seta a taxa de transmissao
#Phy/WirelessPhy set  bandwidth_
set mica(taxa_transmissao) 28.8*10e3 ;#28.8 kbps
set wins(taxa_transmissao) 100*10e3 ;#100 kbps
 
proc setup_mica2 {

 antenna range

}  {

 
 
puts "Setting up mica 2 mote with $antenna and range = $range"
 
#Phy/WirelessPhy set CPThresh_ 10.0
#Phy/WirelessPhy set CSThresh_ 1.559e-11
#Phy/WirelessPhy set RXThresh_ 2.78869e-09; # 100 meters
#Phy/WirelessPhy set RXThresh_ 1.11548e-08; # 50 meters
#Phy/WirelessPhy set Rb_ 2*1e6
 
Phy/WirelessPhy set Pt_ 0.281838
Phy/WirelessPhy set freq_ 2.4e09
Phy/WirelessPhy set L_ 1.0
Phy/WirelessPhy set lambda_ 0.125
Phy/WirelessPhy set RXThresh_ [TwoRay 0.281838 [$antenna set Gt_] [$antenna set Gr_] 0.8 0.8 1.0 $range 0.125]
Phy/WirelessPhy set bandwidth_ 28.8*10e3 ;#28.8 kbps
 
Node/MobileNode/SensorNode set sensingPower_ 0.015
Node/MobileNode/SensorNode set processingPower 0.024
Node/MobileNode/SensorNode set instructionsPerSecond_ 8000000
 
 

}
 
##########################################
# CONSTANTES
#########################################
# Continuo: 0
# Programada: 1
# Sob Demanda: 2
########################################
 
proc create_common_app {

destination_id disseminating_type disseminating_interval

} {

 
  global val
  if {

 $val(commonApp) == "Application/SensorBaseApp/CommonNodeApp/LeachApp"

} {

 
    if {

 $val(n_ch) == 0

} {

 
       puts "NO CLUSTER HEADS HAS BEEN DEFINED! Assuming 20% of common nodes."
       set val(n_ch) [expr int($val(n_common) * 2 / 10)]
     

}
    set app_ [new $val(commonApp) $val(nn) $val(n_ch) [expr sqrt($val(x) * $val(x) + $val(y) * $val(y))]]
   

} else {

 
  set app_ [new $val(commonApp)]
  $app_ set destination_id_ $destination_id
   

}
  $app_ set disseminating_type_ $disseminating_type
  $app_ set disseminating_interval_ $disseminating_interval
  return $app_
 

}
 
set val(commonApp) "Application/SensorBaseApp/CommonNodeApp"
set val(chApp)     "Application/SensorBaseApp/ClusterHeadApp"
set val(apApp)   "Application/AccessPointApp"
 
proc create_cluster_head_app {

destination_id disseminating_type disseminating_interval

} {

 
  global val
  set app_ [new $val(chApp)]
  $app_ set destination_id_ $destination_id
  $app_ set disseminating_type_ $disseminating_type
  $app_ set disseminating_interval_ $disseminating_interval
  return $app_
 

}
 
proc create_access_point_app {

outside_network

} {

 
  global val
  set app_ [new $val(apApp)]
  $app_ set outside_network_ $outside_network
  return $app_
 

}
 
proc create_temp_data_generator {

sensing_interval sensing_type avg_measure std_deviation maximumTemperatureAllowedValue

} {

 
  set temp_gen_ [new DataGenerator/TemperatureDataGenerator]
  $temp_gen_ set sensing_interval_ $sensing_interval
  $temp_gen_ set sensing_type_ $sensing_type
  $temp_gen_ set avg_measure $avg_measure
  $temp_gen_ set std_deviation $std_deviation
  $temp_gen_ set maximumTemperatureAllowedValue_ $maximumTemperatureAllowedValue
  return $temp_gen_
 

}
 
proc create_data_generator {

generator sensing_interval sensing_type avg_measure std_deviation maximumTemperatureAllowedValue

} {

 
  set temp_gen_ [new DataGenerator/$generator]
  $temp_gen_ set sensing_interval_ $sensing_interval
   
  if {

$sensing_type=="continuous"

} {

 
  $temp_gen_ set sensing_type_ 0
   

} elseif {

$sensing_type=="programmed"

} {

 
  $temp_gen_ set sensing_type_ 1
   

} elseif {

$sensing_type=="on demand"

} {

 
  $temp_gen_ set sensing_type_ 2
   

} else {

   
  $temp_gen_ set sensing_type_ $sensing_type
   

}
  $temp_gen_ set avg_measure $avg_measure
  $temp_gen_ set std_deviation $std_deviation
  $temp_gen_ set maximumTemperatureAllowedValue_ $maximumTemperatureAllowedValue
  return $temp_gen_
 

}
 
proc create_common_node {

 iniEnergy x y z father_addr start stop

} {

 
global val ns_ node_ topo udp_ app_ gen_ contador_nodos rng trace
 
if {

 [llength $start] == 0

}  {

 
set start [expr $val(start) + [$rng uniform 0 1]]
set stop $val(stop)
 

}
 
$ns_ node-config -sensorNode ON \
-adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(antenna) \
-propType $val(prop) \
-energyModel $val(en) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace $trace(agent) \
-routerTrace $trace(router) \
-macTrace $trace(mac) \
-rxPower 0.024 \
-txPower 0.036 \
-initialEnergy $iniEnergy \
-movementTrace $trace(movement)
 
set node_($contador_nodos) [$ns_ node]
$node_($contador_nodos) random-motion 0
 
#set x [$rng uniform 0.0 $val(x)]
#set y [$rng uniform 0.0 $val(y)]
 
#set bla [expr int(sqrt($val(nn)))]
#set x [expr (($contador_nodos) % $bla) * $val(x) / ($bla - 1)]
#set y [expr (($contador_nodos) / $bla) * $val(y) / ($bla - 1)]
 
$node_($contador_nodos) set X_ $x
$node_($contador_nodos) set Y_ $y
$node_($contador_nodos) set Z_ $z
 
puts "* Node [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)"
 
set app_($contador_nodos) [create_common_app $father_addr $val(disseminating_type) $val(disseminating_interval)]
 
if {

 $val(leach) == 1

} {

 
  set agent [new Agent/RCAgent]
   
  $agent set sport_ 0
  $agent set dport_ 0
 
  $node_($contador_nodos) attach $agent 0
  $app_($contador_nodos) attach-agent $agent
  
  $agent add-ll [$node_($contador_nodos) set ll_(0)] [$node_($contador_nodos) set mac_(0)]
 

} else {

 
set udp_($contador_nodos) [new Agent/UDP]
$node_($contador_nodos) attach $udp_($contador_nodos) $val(port)
 

}
$node_($contador_nodos) add-app $app_($contador_nodos)
 
set processing_($contador_nodos) [new $val(processing)]
 
$app_($contador_nodos) node $node_($contador_nodos)
 
if {

 $val(leach) != 1

} {

 
$app_($contador_nodos) attach-agent $udp_($contador_nodos)
 

}
 
$app_($contador_nodos) attach-processing $processing_($contador_nodos)
$processing_($contador_nodos) node $node_($contador_nodos)
 
for {

 set i 0

} {

 $i < [llength $start]

} {

 incr i

} {

 
$ns_ at $start "$app_($contador_nodos) start"
 

}
 
for {

 set i 0

} {

 $i < [llength $stop]

} {

 incr i

} {

 
$ns_ at $stop "$app_($contador_nodos) stop"
 

}
 
#[create_temp_data_generator  5.0 0 27.0 10.0 50]
set gen_($contador_nodos) $val(data_generator)
 
$app_($contador_nodos) attach_data_generator $gen_($contador_nodos)
 
incr contador_nodos
 
 

}
 
proc create_cluster_head_node {

 iniEnergy x y z father_addr start stop

} {

 
 
global val ns_ node_ topo udp_ app_ gen_ contador_nodos rng trace
 
if {

 [llength $start] == 0

}  {

 
set start [expr $val(start) + [$rng uniform 0 1]]
set stop $val(stop)
 

}
 
$ns_ node-config -sensorNode ON \
-adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(antenna) \
-propType $val(prop) \
-energyModel $val(en) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
 -agentTrace $trace(agent) \
-routerTrace $trace(router) \
-macTrace $trace(mac) \
-rxPower 0.024 \
-txPower 0.036 \
-initialEnergy $iniEnergy \
-movementTrace $trace(movement)
 
set node_($contador_nodos) [$ns_ node]
$node_($contador_nodos) random-motion 0
 
#set x [$rng uniform 0.0 $val(x)]
#set y [$rng uniform 0.0 $val(y)]
 
#set bla [expr int(sqrt($val(nn)))]
#set x [expr (($contador_nodos) % $bla) * $val(x) / ($bla - 1)]
#set y [expr (($contador_nodos) / $bla) * $val(y) / ($bla - 1)]
 
$node_($contador_nodos) set X_ $x
$node_($contador_nodos) set Y_ $y
$node_($contador_nodos) set Z_ $z
 
puts "* Cluster head [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)"
 
set udp_($contador_nodos) [new Agent/UDP]
 
set app_($contador_nodos) [create_cluster_head_app $father_addr $val(disseminating_type) $val(disseminating_interval)]
 
$node_($contador_nodos) attach $udp_($contador_nodos) $val(port)
$node_($contador_nodos) add-app $app_($contador_nodos)
 
#CN#set processing_($contador_nodos) [new $val(processing)]
 
$app_($contador_nodos) node $node_($contador_nodos)
$app_($contador_nodos) attach-agent $udp_($contador_nodos)
 
#CN#$app_($contador_nodos) attach-processing $processing_($contador_nodos)
$processing_($contador_nodos) node $node_($contador_nodos)
 
for {

 set i 0

} {

 $i < [llength $start]

} {

 incr i

} {

 
$ns_ at $start "$app_($contador_nodos) start"
 

}
 
for {

 set i 0

} {

 $i < [llength $stop]

} {

 incr i

} {

 
$ns_ at $stop "$app_($contador_nodos) stop"
 

}
 
#CN#set gen_($contador_nodos) $val(data_generator)
#CN#$app_($contador_nodos) attach_data_generator $gen_($contador_nodos)
 
incr contador_nodos
 
 

}
 
proc create_access_point {

 iniEnergy x y z start stop

} {

 
global ns_ val node_ app_ udp_ contador_nodos topo trace rng
 
if {

 [llength $start] == 0

}  {

 
set start [expr $val(start) + [$rng uniform 0 1]]
set stop $val(stop)
 

}
 
$ns_ node-config -sensorNode ON \
-adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(antenna) \
-propType $val(prop) \
-energyModel $val(en) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
 -agentTrace $trace(agent) \
-routerTrace $trace(router) \
-macTrace $trace(mac) \
-rxPower 0.5 \
-txPower 0.5 \
-initialEnergy $iniEnergy \
-movementTrace $trace(movement)
 
set node_($contador_nodos) [$ns_ node]
$node_($contador_nodos) random-motion 0
set app_($contador_nodos) [create_access_point_app [$node_(0) node-addr]]
 
if {

 $val(leach) == 1

} {

 
  set agent [new Agent/RCAgent/LeachAgent]
   
  $agent set sport_ 0
  $agent set dport_ 0
 
  $node_($contador_nodos) attach $agent 0
  $app_($contador_nodos) attach-agent $agent
  
  $agent add-ll [$node_($contador_nodos) set ll_(0)] [$node_($contador_nodos) set mac_(0)]
 

} else {

 
  set  udp_($contador_nodos) [new Agent/UDP]
  $node_($contador_nodos) attach $udp_($contador_nodos) $val(port)
  $app_($contador_nodos) attach-agent $udp_($contador_nodos)
 

}
$node_($contador_nodos) set X_ $x
$node_($contador_nodos) set Y_ $y
$node_($contador_nodos) set Z_ $z
 
puts "* Access point [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)"
 
for {

 set i 0

} {

 $i < [llength $start]

} {

 incr i

} {

 
$ns_ at $start "$app_($contador_nodos) start"
 

}
 
for {

 set i 0

} {

 $i < [llength $stop]

} {

 incr i

} {

 
$ns_ at $stop "$app_($contador_nodos) stop"
 

}
 
incr contador_nodos
 
 

}
 
###
# Grid distribution.
 
proc get_next_x {

 

} {

 
 
global val
 
set aux [expr int(sqrt($val(nn)))]
 
return [expr (($contador_nodos) % $aux) * $val(x) / ($aux - 1)]
 
 

}
 
proc get_next_y {

 

} {

 
 
global val
 
set aux [expr int(sqrt($val(nn)))]
 
return [expr (($contador_nodos) / $aux) * $val(y) / ($aux - 1)]
 
 

}
 
####
# Calculating the receiving threshold (RXThresh_ for Phy/Wireless)
# Wei Ye, weiye@isi.edu, 2000
 
proc Friis {

 Pt Gt Gr lambda L d

} {

 
  set M [expr $lambda / (4 * 3.14159265359 * $d)]
  return [expr ($Pt * $Gt * $Gr * ($M * $M)) / $L]
 

}
 
proc TwoRay {

 Pt Gt Gr ht hr L d lambda

} {

 
        set crossover_dist [expr (4 * 3.14159265359 * $ht * $hr) / $lambda]
 
        if {

 $d < $crossover_dist

} {

 
                return [Friis $Pt $Gt $Gr $lambda $L $d]
         

} else {

 
                return [expr $Pt * $Gt * $Gr * ($hr * $hr * $ht * $ht) / ($d * $d * $d * $d * $L)]
        

}
 

}
 
###
 
proc set_default_settings {

 

} {

 
 
global val
 
 
####
# Default network settings
 
 
set val(antenna) "Antenna/OmniAntenna"
Antenna/OmniAntenna set X_ 0 ;
Antenna/OmniAntenna set Y_ 0 ;
Antenna/OmniAntenna set Z_ 1.5 ;
Antenna/OmniAntenna set Gt_ 1.0 ;
Antenna/OmniAntenna set Gr_ 1.0 ;
  
###
 
  
 
 
 
# Using Mica 2 Mote settings
 
 
set val(range) 100
 
 
setup_mica2 $val(antenna) $val(range)
 
 
set val(bandwidth) [Phy/WirelessPhy set bandwidth_]
 
 
set val(mac)Mac/802_11
 
set val(ifq)Queue/DropTail
set val(ifqlen)200
 
set val(ll)LL
set val(rp)"LEACH"
 
 
# Configuration adjustment
 
if {

 $val(rp) == "LEACH"

} {

 
 
set val(rp) DumbAgent
set val(leach) 1
 
if {

 $val(ll) != "RCALinkLayer"

} {

 
puts "LEACH requires RCALinkLayer! Forcing it!!!"
set val(ll)RCALinkLayer
 

}
 
if {

 $val(netif) != "Phy/WirelessPhy/LeachWirelessPhy"

} {

 
puts "LEACH requires LeachWirelessPhy! Forcing it!!!"
set val(netif) Phy/WirelessPhy/LeachWirelessPhy
 

}
 
if {

 $val(mac) != "Mac/Sensor"

} {

 
puts "LEACH requires Mac/Sensor! Forcing it!!!"
set val(mac) Mac/Sensor
 

}
 
set val(port) 0
 
Agent/RCAgent set sport_           $val(port)
Agent/RCAgent set dport_           $val(port)
Agent/RCAgent set packetMsg_       0
Agent/RCAgent set distEst_         0
Agent/RCAgent set packetSize_      0
                                                                                                                  
RCALinkLayer set delay_            25us
RCALinkLayer set bandwidth_        [Phy/WirelessPhy set bandwidth_]
RCALinkLayer set off_prune_        0
RCALinkLayer set off_CtrMcast_     0
RCALinkLayer set macDA_            0
RCALinkLayer set debug_            0
 

} else {

 
set val(leach) 0
 

}
if {

 $val(rp) == "DIRECTED DIFFUSION"

} {

 
set val(rp) "Directed_Diffusion"
 

}
 

}
 
set val(father_addr) 0
set val(port)2020
 
set val(netif)Phy/WirelessPhy
 
set_default_settings
 
# Global network settings
 
set contador_nodos 0
 
set val(chan)Channel/WirelessChannel
 
# Propagation
 
set val(prop)Propagation/TwoRayGround
 
# Energy model
 
set val(en)EnergyModel/Battery
 
# Nodes
set val(n_pas)1
set val(n_common) 10
set val(n_ch) 0
set val(nn)[expr $val(n_pas) + $val(n_common) + $val(n_ch)]
 
puts "\nNodes count:"
puts " - $val(n_pas) access points"
puts " - $val(n_common) common nodes"
puts " - $val(n_ch) cluster heads"
puts " - $val(nn) nodes"
puts " - $val(rp) routing protocol"
puts " - $val(ll) link layer"
puts " - $val(netif) network interface"
 
# Scenario size
set val(x)100.0
set val(y)100.0
 
puts "\nScenario size: $val(x) x $val(y)"
 
set val(start)0.0
set val(stop)[expr $val(start) + 100.0]
 
set ns_[new Simulator]
 
 
# Trace
puts "\nUsing trace.tr as trace file"
set traceFile[open trace.tr w]
$ns_ trace-all $traceFile
$ns_ use-newtrace
 
 
set trace(mac) ON
 
set trace(router) ON
 
set trace(agent) ON
 
set trace(movement) ON
 
 
set topo[new Topography]
$topo load_flatgrid $val(x) $val(y)
create-god $val(nn)
set rng [new RNG]
$rng seed [clock seconds]
 
#-------------------------------------------------------------------------------------------
 
 
 
# Creating an access point
puts "Creating an access point..."
 
set_default_settings
 
 
# Using Mica 2 Mote settings
 
puts "Using mica 2 mote settings"
 
 
set val(range) 100
 
 
setup_mica2 $val(antenna) $val(range)
 
set local(x) 50.0
set local(y) 50.0
set local(z) 0.0
 
set local(start) ""
set local(stop) ""
 
 
set local(energy) 100.0
 
set val(apApp) Application/AccessPointApp/AccessPointLeachApp
 
create_access_point $local(energy) $local(x) $local(y) $local(z) $local(start) $local(stop)
 
 
 
# Creating common node
puts "Creating common node..."
 
set_default_settings
 
 
# Using Mica 2 Mote settings
 
puts "Using mica 2 mote settings"
 
 
set val(range) 100
 
 
setup_mica2 $val(antenna) $val(range)
 
# Disseminating settings
 
set val(disseminating_type) 1;# Programmed
puts "Setting disseminating type to programmed"
 
set val(disseminating_interval)20.0
puts "Setting disseminating interval: $val(disseminating_interval)"
 
 
set local(start) ""
set local(stop) ""
 
 
set local(energy) 10.0
set local(father_addr) $val(father_addr)
 
set val(processing) Processing/AggregateProcessing
set val(data_generator) "[create_data_generator {

TemperatureDataGenerator

} {

5.0

} {

programmed

} {

25.0

} {

5.0

} {

30.0

}]"
 
for {

 set common_node_i 0

} {

 $common_node_i < 10

} {

 incr common_node_i

} {

 
 
set local(x) [$rng uniform 0.0 $val(x)]
set local(y) [$rng uniform 0.0 $val(y)]
set local(z) 0.0
 
 
set val(commonApp) Application/SensorBaseApp/CommonNodeApp/LeachApp
 
create_common_node $local(energy) $local(x) $local(y) $local(z) $local(father_addr) $local(start) $local(stop)
 
 
 

}
 
   
$ns_ at [expr $val(stop)] "flush stdout"
$ns_ at [expr $val(stop)+0.0001] "finish"
 
proc finish {

 

} {

 
    global ns_ traceFile namtrace tempoInicio val
 
    $ns_ flush-trace
#    close $namtrace
 
    $ns_ halt
    $ns_ flush-trace
    $ns_ nam-end-wireless $val(stop)
 
    close $traceFile
 
    flush stdout
 
    exit 0
 

}
 
puts "Starting Simulation..."
$ns_ run
puts "Initializing MannaSim Script..."
 
#Consumo de energia do sensor node - Dados do Mica Motes
set mica(sensing_power) 0.015 ;# i = 5mA, V = 3 --> P = ixV = 15 mW = 0.015 W
set mica(processing_power) 0.024 ;# i = 8mA, V = 3 --> P = ixV = 24 mW = 0.024 W
set mica(instructions_per_second) 8000000 ;# Atmel 128L 8MHZ --> 8MIPS
 
#Consumo de energia do sensor node - Dados do WINS
set wins(sensing_power) 0.064 ;# 64 mW = 0.064 W
set wins(processing_power) 0.360 ;# 360 mW = 0.360 W
set wins(instructions_per_second) 150000000 ;# Intel StrongArm 1100 133 MHZ --> 150 MIPS
 
#Seta valores para consumo de energia com o radio
set mica(consumo_transmissao) 0.036 ;#i = 12mA, V = 3 --> P = ixV = 36mW = 0.036W
set mica(consumo_recepcao) 0.024 ;#i = 8mA, V = 3 --> P = ixV = 24mW = 0.024W
 
set wins(consumo_transmissao)3.75 ;# 3.75 250m, 0.6 600 mW - 100m
set wins(consumo_recepcao) 1.875 ;# 1.875 250m,  0.3 300 mW
 
#seta a taxa de transmissao
#Phy/WirelessPhy set  bandwidth_
set mica(taxa_transmissao) 28.8*10e3 ;#28.8 kbps
set wins(taxa_transmissao) 100*10e3 ;#100 kbps
 
proc setup_mica2 {

 antenna range

}  {

 
 
puts "Setting up mica 2 mote with $antenna and range = $range"
 
#Phy/WirelessPhy set CPThresh_ 10.0
#Phy/WirelessPhy set CSThresh_ 1.559e-11
#Phy/WirelessPhy set RXThresh_ 2.78869e-09; # 100 meters
#Phy/WirelessPhy set RXThresh_ 1.11548e-08; # 50 meters
#Phy/WirelessPhy set Rb_ 2*1e6
 
Phy/WirelessPhy set Pt_ 0.281838
Phy/WirelessPhy set freq_ 2.4e09
Phy/WirelessPhy set L_ 1.0
Phy/WirelessPhy set lambda_ 0.125
Phy/WirelessPhy set RXThresh_ [TwoRay 0.281838 [$antenna set Gt_] [$antenna set Gr_] 0.8 0.8 1.0 $range 0.125]
Phy/WirelessPhy set bandwidth_ 28.8*10e3 ;#28.8 kbps
 
Node/MobileNode/SensorNode set sensingPower_ 0.015
Node/MobileNode/SensorNode set processingPower 0.024
Node/MobileNode/SensorNode set instructionsPerSecond_ 8000000
 
 

}
 
##########################################
# CONSTANTES
#########################################
# Continuo: 0
# Programada: 1
# Sob Demanda: 2
########################################
 
proc create_common_app {

destination_id disseminating_type disseminating_interval

} {

 
  global val
  if {

 $val(commonApp) == "Application/SensorBaseApp/CommonNodeApp/LeachApp"

} {

 
    if {

 $val(n_ch) == 0

} {

 
       puts "NO CLUSTER HEADS HAS BEEN DEFINED! Assuming 20% of common nodes."
       set val(n_ch) [expr int($val(n_common) * 2 / 10)]
     

}
    set app_ [new $val(commonApp) $val(nn) $val(n_ch) [expr sqrt($val(x) * $val(x) + $val(y) * $val(y))]]
   

} else {

 
  set app_ [new $val(commonApp)]
  $app_ set destination_id_ $destination_id
   

}
  $app_ set disseminating_type_ $disseminating_type
  $app_ set disseminating_interval_ $disseminating_interval
  return $app_
 

}
 
set val(commonApp) "Application/SensorBaseApp/CommonNodeApp"
set val(chApp)     "Application/SensorBaseApp/ClusterHeadApp"
set val(apApp)   "Application/AccessPointApp"
 
proc create_cluster_head_app {

destination_id disseminating_type disseminating_interval

} {

 
  global val
  set app_ [new $val(chApp)]
  $app_ set destination_id_ $destination_id
  $app_ set disseminating_type_ $disseminating_type
  $app_ set disseminating_interval_ $disseminating_interval
  return $app_
 

}
 
proc create_access_point_app {

outside_network

} {

 
  global val
  set app_ [new $val(apApp)]
  $app_ set outside_network_ $outside_network
  return $app_
 

}
 
proc create_temp_data_generator {

sensing_interval sensing_type avg_measure std_deviation maximumTemperatureAllowedValue

} {

 
  set temp_gen_ [new DataGenerator/TemperatureDataGenerator]
  $temp_gen_ set sensing_interval_ $sensing_interval
  $temp_gen_ set sensing_type_ $sensing_type
  $temp_gen_ set avg_measure $avg_measure
  $temp_gen_ set std_deviation $std_deviation
  $temp_gen_ set maximumTemperatureAllowedValue_ $maximumTemperatureAllowedValue
  return $temp_gen_
 

}
 
proc create_data_generator {

generator sensing_interval sensing_type avg_measure std_deviation maximumTemperatureAllowedValue

} {

 
  set temp_gen_ [new DataGenerator/$generator]
  $temp_gen_ set sensing_interval_ $sensing_interval
   
  if {

$sensing_type=="continuous"

} {

 
  $temp_gen_ set sensing_type_ 0
   

} elseif {

$sensing_type=="programmed"

} {

 
  $temp_gen_ set sensing_type_ 1
   

} elseif {

$sensing_type=="on demand"

} {

 
  $temp_gen_ set sensing_type_ 2
   

} else {

   
  $temp_gen_ set sensing_type_ $sensing_type
   

}
  $temp_gen_ set avg_measure $avg_measure
  $temp_gen_ set std_deviation $std_deviation
  $temp_gen_ set maximumTemperatureAllowedValue_ $maximumTemperatureAllowedValue
  return $temp_gen_
 

}
 
proc create_common_node {

 iniEnergy x y z father_addr start stop

} {

 
global val ns_ node_ topo udp_ app_ gen_ contador_nodos rng trace
 
if {

 [llength $start] == 0

}  {

 
set start [expr $val(start) + [$rng uniform 0 1]]
set stop $val(stop)
 

}
 
$ns_ node-config -sensorNode ON \
-adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(antenna) \
-propType $val(prop) \
-energyModel $val(en) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
-agentTrace $trace(agent) \
-routerTrace $trace(router) \
-macTrace $trace(mac) \
-rxPower 0.024 \
-txPower 0.036 \
-initialEnergy $iniEnergy \
-movementTrace $trace(movement)
 
set node_($contador_nodos) [$ns_ node]
$node_($contador_nodos) random-motion 0
 
#set x [$rng uniform 0.0 $val(x)]
#set y [$rng uniform 0.0 $val(y)]
 
#set bla [expr int(sqrt($val(nn)))]
#set x [expr (($contador_nodos) % $bla) * $val(x) / ($bla - 1)]
#set y [expr (($contador_nodos) / $bla) * $val(y) / ($bla - 1)]
 
$node_($contador_nodos) set X_ $x
$node_($contador_nodos) set Y_ $y
$node_($contador_nodos) set Z_ $z
 
puts "* Node [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)"
 
set app_($contador_nodos) [create_common_app $father_addr $val(disseminating_type) $val(disseminating_interval)]
 
if {

 $val(leach) == 1

} {

 
  set agent [new Agent/RCAgent]
   
  $agent set sport_ 0
  $agent set dport_ 0
 
  $node_($contador_nodos) attach $agent 0
  $app_($contador_nodos) attach-agent $agent
  
  $agent add-ll [$node_($contador_nodos) set ll_(0)] [$node_($contador_nodos) set mac_(0)]
 

} else {

 
set udp_($contador_nodos) [new Agent/UDP]
$node_($contador_nodos) attach $udp_($contador_nodos) $val(port)
 

}
$node_($contador_nodos) add-app $app_($contador_nodos)
 
set processing_($contador_nodos) [new $val(processing)]
 
$app_($contador_nodos) node $node_($contador_nodos)
 
if {

 $val(leach) != 1

} {

 
$app_($contador_nodos) attach-agent $udp_($contador_nodos)
 

}
 
$app_($contador_nodos) attach-processing $processing_($contador_nodos)
$processing_($contador_nodos) node $node_($contador_nodos)
 
for {

 set i 0

} {

 $i < [llength $start]

} {

 incr i

} {

 
$ns_ at $start "$app_($contador_nodos) start"
 

}
 
for {

 set i 0

} {

 $i < [llength $stop]

} {

 incr i

} {

 
$ns_ at $stop "$app_($contador_nodos) stop"
 

}
 
#[create_temp_data_generator  5.0 0 27.0 10.0 50]
set gen_($contador_nodos) $val(data_generator)
 
$app_($contador_nodos) attach_data_generator $gen_($contador_nodos)
 
incr contador_nodos
 
 

}
 
proc create_cluster_head_node {

 iniEnergy x y z father_addr start stop

} {

 
 
global val ns_ node_ topo udp_ app_ gen_ contador_nodos rng trace
 
if {

 [llength $start] == 0

}  {

 
set start [expr $val(start) + [$rng uniform 0 1]]
set stop $val(stop)
 

}
 
$ns_ node-config -sensorNode ON \
-adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(antenna) \
-propType $val(prop) \
-energyModel $val(en) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
 -agentTrace $trace(agent) \
-routerTrace $trace(router) \
-macTrace $trace(mac) \
-rxPower 0.024 \
-txPower 0.036 \
-initialEnergy $iniEnergy \
-movementTrace $trace(movement)
 
set node_($contador_nodos) [$ns_ node]
$node_($contador_nodos) random-motion 0
 
#set x [$rng uniform 0.0 $val(x)]
#set y [$rng uniform 0.0 $val(y)]
 
#set bla [expr int(sqrt($val(nn)))]
#set x [expr (($contador_nodos) % $bla) * $val(x) / ($bla - 1)]
#set y [expr (($contador_nodos) / $bla) * $val(y) / ($bla - 1)]
 
$node_($contador_nodos) set X_ $x
$node_($contador_nodos) set Y_ $y
$node_($contador_nodos) set Z_ $z
 
puts "* Cluster head [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)"
 
set udp_($contador_nodos) [new Agent/UDP]
 
set app_($contador_nodos) [create_cluster_head_app $father_addr $val(disseminating_type) $val(disseminating_interval)]
 
$node_($contador_nodos) attach $udp_($contador_nodos) $val(port)
$node_($contador_nodos) add-app $app_($contador_nodos)
 
#CN#set processing_($contador_nodos) [new $val(processing)]
 
$app_($contador_nodos) node $node_($contador_nodos)
$app_($contador_nodos) attach-agent $udp_($contador_nodos)
 
#CN#$app_($contador_nodos) attach-processing $processing_($contador_nodos)
$processing_($contador_nodos) node $node_($contador_nodos)
 
for {

 set i 0

} {

 $i < [llength $start]

} {

 incr i

} {

 
$ns_ at $start "$app_($contador_nodos) start"
 

}
 
for {

 set i 0

} {

 $i < [llength $stop]

} {

 incr i

} {

 
$ns_ at $stop "$app_($contador_nodos) stop"
 

}
 
#CN#set gen_($contador_nodos) $val(data_generator)
#CN#$app_($contador_nodos) attach_data_generator $gen_($contador_nodos)
 
incr contador_nodos
 
 

}
 
proc create_access_point {

 iniEnergy x y z start stop

} {

 
global ns_ val node_ app_ udp_ contador_nodos topo trace rng
 
if {

 [llength $start] == 0

}  {

 
set start [expr $val(start) + [$rng uniform 0 1]]
set stop $val(stop)
 

}
 
$ns_ node-config -sensorNode ON \
-adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(antenna) \
-propType $val(prop) \
-energyModel $val(en) \
-phyType $val(netif) \
-channelType $val(chan) \
-topoInstance $topo \
 -agentTrace $trace(agent) \
-routerTrace $trace(router) \
-macTrace $trace(mac) \
-rxPower 0.5 \
-txPower 0.5 \
-initialEnergy $iniEnergy \
-movementTrace $trace(movement)
 
set node_($contador_nodos) [$ns_ node]
$node_($contador_nodos) random-motion 0
set app_($contador_nodos) [create_access_point_app [$node_(0) node-addr]]
 
if {

 $val(leach) == 1

} {

 
  set agent [new Agent/RCAgent/LeachAgent]
   
  $agent set sport_ 0
  $agent set dport_ 0
 
  $node_($contador_nodos) attach $agent 0
  $app_($contador_nodos) attach-agent $agent
  
  $agent add-ll [$node_($contador_nodos) set ll_(0)] [$node_($contador_nodos) set mac_(0)]
 

} else {

 
  set  udp_($contador_nodos) [new Agent/UDP]
  $node_($contador_nodos) attach $udp_($contador_nodos) $val(port)
  $app_($contador_nodos) attach-agent $udp_($contador_nodos)
 

}
$node_($contador_nodos) set X_ $x
$node_($contador_nodos) set Y_ $y
$node_($contador_nodos) set Z_ $z
 
puts "* Access point [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)"
 
for {

 set i 0

} {

 $i < [llength $start]

} {

 incr i

} {

 
$ns_ at $start "$app_($contador_nodos) start"
 

}
 
for {

 set i 0

} {

 $i < [llength $stop]

} {

 incr i

} {

 
$ns_ at $stop "$app_($contador_nodos) stop"
 

}
 
incr contador_nodos
 
 

}
 
###
# Grid distribution.
 
proc get_next_x {

 

} {

 
 
global val
 
set aux [expr int(sqrt($val(nn)))]
 
return [expr (($contador_nodos) % $aux) * $val(x) / ($aux - 1)]
 
 

}
 
proc get_next_y {

 

} {

 
 
global val
 
set aux [expr int(sqrt($val(nn)))]
 
return [expr (($contador_nodos) / $aux) * $val(y) / ($aux - 1)]
 
 

}
 
####
# Calculating the receiving threshold (RXThresh_ for Phy/Wireless)
# Wei Ye, weiye@isi.edu, 2000
 
proc Friis {

 Pt Gt Gr lambda L d

} {

 
  set M [expr $lambda / (4 * 3.14159265359 * $d)]
  return [expr ($Pt * $Gt * $Gr * ($M * $M)) / $L]
 

}
 
proc TwoRay {

 Pt Gt Gr ht hr L d lambda

} {

 
        set crossover_dist [expr (4 * 3.14159265359 * $ht * $hr) / $lambda]
 
        if {

 $d < $crossover_dist

} {

 
                return [Friis $Pt $Gt $Gr $lambda $L $d]
         

} else {

 
                return [expr $Pt * $Gt * $Gr * ($hr * $hr * $ht * $ht) / ($d * $d * $d * $d * $L)]
        

}
 

}
 
###
 
proc set_default_settings {

 

} {

 
 
global val
 
 
####
# Default network settings
 
 
set val(antenna) "Antenna/OmniAntenna"
Antenna/OmniAntenna set X_ 0 ;
Antenna/OmniAntenna set Y_ 0 ;
Antenna/OmniAntenna set Z_ 1.5 ;
Antenna/OmniAntenna set Gt_ 1.0 ;
Antenna/OmniAntenna set Gr_ 1.0 ;
  
###
 
  
 
 
 
# Using Mica 2 Mote settings
 
 
set val(range) 100
 
 
setup_mica2 $val(antenna) $val(range)
 
 
set val(bandwidth) [Phy/WirelessPhy set bandwidth_]
 
 
set val(mac)Mac/802_11
 
set val(ifq)Queue/DropTail
set val(ifqlen)200
 
set val(ll)LL
set val(rp)"LEACH"
 
 
# Configuration adjustment
 
if {

 $val(rp) == "LEACH"

} {

 
 
set val(rp) DumbAgent
set val(leach) 1
 
if {

 $val(ll) != "RCALinkLayer"

} {

 
puts "LEACH requires RCALinkLayer! Forcing it!!!"
set val(ll)RCALinkLayer
 

}
 
if {

 $val(netif) != "Phy/WirelessPhy/LeachWirelessPhy"

} {

 
puts "LEACH requires LeachWirelessPhy! Forcing it!!!"
set val(netif) Phy/WirelessPhy/LeachWirelessPhy
 

}
 
if {

 $val(mac) != "Mac/Sensor"

} {

 
puts "LEACH requires Mac/Sensor! Forcing it!!!"
set val(mac) Mac/Sensor
 

}
 
set val(port) 0
 
Agent/RCAgent set sport_           $val(port)
Agent/RCAgent set dport_           $val(port)
Agent/RCAgent set packetMsg_       0
Agent/RCAgent set distEst_         0
Agent/RCAgent set packetSize_      0
                                                                                                                  
RCALinkLayer set delay_            25us
RCALinkLayer set bandwidth_        [Phy/WirelessPhy set bandwidth_]
RCALinkLayer set off_prune_        0
RCALinkLayer set off_CtrMcast_     0
RCALinkLayer set macDA_            0
RCALinkLayer set debug_            0
 

} else {

 
set val(leach) 0
 

}
if {

 $val(rp) == "DIRECTED DIFFUSION"

} {

 
set val(rp) "Directed_Diffusion"
 

}
 

}
 
set val(father_addr) 0
set val(port)2020
 
set val(netif)Phy/WirelessPhy
 
set_default_settings
 
# Global network settings
 
set contador_nodos 0
 
set val(chan)Channel/WirelessChannel
 
# Propagation
 
set val(prop)Propagation/TwoRayGround
 
# Energy model
 
set val(en)EnergyModel/Battery
 
# Nodes
set val(n_pas)1
set val(n_common) 10
set val(n_ch) 0
set val(nn)[expr $val(n_pas) + $val(n_common) + $val(n_ch)]
 
puts "\nNodes count:"
puts " - $val(n_pas) access points"
puts " - $val(n_common) common nodes"
puts " - $val(n_ch) cluster heads"
puts " - $val(nn) nodes"
puts " - $val(rp) routing protocol"
puts " - $val(ll) link layer"
puts " - $val(netif) network interface"
 
# Scenario size
set val(x)100.0
set val(y)100.0
 
puts "\nScenario size: $val(x) x $val(y)"
 
set val(start)0.0
set val(stop)[expr $val(start) + 100.0]
 
set ns_[new Simulator]
 
 
# Trace
puts "\nUsing trace.tr as trace file"
set traceFile[open trace.tr w]
$ns_ trace-all $traceFile
$ns_ use-newtrace
 
 
set trace(mac) ON
 
set trace(router) ON
 
set trace(agent) ON
 
set trace(movement) ON
 
 
set topo[new Topography]
$topo load_flatgrid $val(x) $val(y)
create-god $val(nn)
set rng [new RNG]
$rng seed [clock seconds]
 
#-------------------------------------------------------------------------------------------
 
 
 
# Creating an access point
puts "Creating an access point..."
 
set_default_settings
 
 
# Using Mica 2 Mote settings
 
puts "Using mica 2 mote settings"
 
 
set val(range) 100
 
 
setup_mica2 $val(antenna) $val(range)
 
set local(x) 50.0
set local(y) 50.0
set local(z) 0.0
 
set local(start) ""
set local(stop) ""
 
 
set local(energy) 100.0
 
set val(apApp) Application/AccessPointApp/AccessPointLeachApp
 
create_access_point $local(energy) $local(x) $local(y) $local(z) $local(start) $local(stop)
 
 
 
# Creating common node
puts "Creating common node..."
 
set_default_settings
 
 
# Using Mica 2 Mote settings
 
puts "Using mica 2 mote settings"
 
 
set val(range) 100
 
 
setup_mica2 $val(antenna) $val(range)
 
# Disseminating settings
 
set val(disseminating_type) 1;# Programmed
puts "Setting disseminating type to programmed"
 
set val(disseminating_interval)20.0
puts "Setting disseminating interval: $val(disseminating_interval)"
 
 
set local(start) ""
set local(stop) ""
 
 
set local(energy) 10.0
set local(father_addr) $val(father_addr)
 
set val(processing) Processing/AggregateProcessing
set val(data_generator) "[create_data_generator {

TemperatureDataGenerator

} {

5.0

} {

programmed

} {

25.0

} {

5.0

} {

30.0

}]"
 
for {

 set common_node_i 0

} {

 $common_node_i < 10

} {

 incr common_node_i

} {

 
 
set local(x) [$rng uniform 0.0 $val(x)]
set local(y) [$rng uniform 0.0 $val(y)]
set local(z) 0.0
 
 
set val(commonApp) Application/SensorBaseApp/CommonNodeApp/LeachApp
 
create_common_node $local(energy) $local(x) $local(y) $local(z) $local(father_addr) $local(start) $local(stop)
 
 
 

}
 
   
$ns_ at [expr $val(stop)] "flush stdout"
$ns_ at [expr $val(stop)+0.0001] "finish"
 
proc finish {

 

} {

 
    global ns_ traceFile namtrace tempoInicio val
 
    $ns_ flush-trace
#    close $namtrace
 
    $ns_ halt
    $ns_ flush-trace
    $ns_ nam-end-wireless $val(stop)
 
    close $traceFile
 
    flush stdout
 
    exit 0
 

}
 
puts "Starting Simulation..."
$ns_ run