⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mflood-100nodes.tcl

📁 原先的mflood源程序无法直接在ns2.29里面跑通
💻 TCL
字号:
#Agent/UDP set packetSize_ 6000

# ======================================================================
# Define options
# ======================================================================
set val(ifqlen)         50                         ;# max packet in ifq
set val(nn)             100                          ;# number of mobilenodes
set val(rp)             MFlood                     ;# routing protocol
set val(chan)       Channel/WirelessChannel
set val(prop)       Propagation/TwoRayGround
set val(netif)      Phy/WirelessPhy
set val(mac)        Mac/802_11
set val(ifq)        Queue/DropTail/PriQueue
set val(ll)         LL
set val(ant)        Antenna/OmniAntenna
set val(stop)	    20

# ======================================================================
# Main Program
# ======================================================================

#ns-random 0

# Initialize Global Variables
set ns_ [new Simulator]
set tracefd [open mflood-100nodes.tr w]
$ns_ trace-all $tracefd

set namtrace    [open mflood-100nodes.nam w]
$ns_ namtrace-all-wireless $namtrace 200 200

# set up topography
set topo [new Topography]
$topo load_flatgrid 200 200

# Create God
create-god $val(nn)


# Create the specified number of mobilenodes [$val(nn)] and "attach" them
# to the channel. 
# configure node+
set channel [new Channel/WirelessChannel]
$channel set errorProbability_ 0.0

        $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 $channel \
			 -topoInstance $topo \
			 -agentTrace ON \
			 -routerTrace ON\
			 -macTrace OFF \
			 -movementTrace OFF			
			 
	for {set i 0} {$i < $val(nn) } {incr i} {
		set node_($i) [$ns_ node]	
		$node_($i) random-motion 0;	
	}

# Provide initial (X,Y, for now Z=0) co-ordinates for mobilenodes


$node_(0) set X_ 181
$node_(0) set Y_ 66
$node_(0) set Z_ 0.0

$node_(1) set X_ 66
$node_(1) set Y_ 76
$node_(1) set Z_ 0.0

$node_(2) set X_ 44
$node_(2) set Y_ 150
$node_(2) set Z_ 0.0

$node_(3) set X_ 130
$node_(3) set Y_ 170
$node_(3) set Z_ 0.0

$node_(4) set X_ 128
$node_(4) set Y_ 20
$node_(4) set Z_ 0.0

$node_(5) set X_ 48
$node_(5) set Y_ 33
$node_(5) set Z_ 0.0

$node_(6) set X_ 57
$node_(6) set Y_ 4
$node_(6) set Z_ 0.0

$node_(7) set X_ 147
$node_(7) set Y_ 32
$node_(7) set Z_ 0.0

$node_(8) set X_ 9
$node_(8) set Y_ 95
$node_(8) set Z_ 0.0

$node_(9) set X_ 176
$node_(9) set Y_ 51
$node_(9) set Z_ 0.0

$node_(10) set X_ 42
$node_(10) set Y_ 7
$node_(10) set Z_ 0.0

$node_(11) set X_ 39
$node_(11) set Y_ 175
$node_(11) set Z_ 0.0

$node_(12) set X_ 80
$node_(12) set Y_ 193
$node_(12) set Z_ 0.0

$node_(13) set X_ 118
$node_(13) set Y_ 66
$node_(13) set Z_ 0.0

$node_(14) set X_ 170
$node_(14) set Y_ 176
$node_(14) set Z_ 0.0

$node_(15) set X_ 30
$node_(15) set Y_ 118
$node_(15) set Z_ 0.0

$node_(16) set X_ 94
$node_(16) set Y_ 47
$node_(16) set Z_ 0.0

$node_(17) set X_ 168
$node_(17) set Y_ 184
$node_(17) set Z_ 0.0

$node_(18) set X_ 106
$node_(18) set Y_ 133
$node_(18) set Z_ 0.0

$node_(19) set X_ 4
$node_(19) set Y_ 64
$node_(19) set Z_ 0.0

$node_(20) set X_ 131
$node_(20) set Y_ 155
$node_(20) set Z_ 0.0

$node_(21) set X_ 2
$node_(21) set Y_ 80
$node_(21) set Z_ 0.0

$node_(22) set X_ 1
$node_(22) set Y_ 145
$node_(22) set Z_ 0.0

$node_(23) set X_ 105
$node_(23) set Y_ 31
$node_(23) set Z_ 0.0

$node_(24) set X_ 134
$node_(24) set Y_ 127
$node_(24) set Z_ 0.0

$node_(25) set X_ 133
$node_(25) set Y_ 8
$node_(25) set Z_ 0.0

$node_(26) set X_ 57
$node_(26) set Y_ 129
$node_(26) set Z_ 0.0

$node_(27) set X_ 77
$node_(27) set Y_ 123
$node_(27) set Z_ 0.0

$node_(28) set X_ 91
$node_(28) set Y_ 41
$node_(28) set Z_ 0.0

$node_(29) set X_ 147
$node_(29) set Y_ 185
$node_(29) set Z_ 0.0

$node_(30) set X_ 27
$node_(30) set Y_ 9
$node_(30) set Z_ 0.0

$node_(31) set X_ 7
$node_(31) set Y_ 153
$node_(31) set Z_ 0.0

$node_(32) set X_ 62
$node_(32) set Y_ 12
$node_(32) set Z_ 0.0

$node_(33) set X_ 197
$node_(33) set Y_ 11
$node_(33) set Z_ 0.0

$node_(34) set X_ 76
$node_(34) set Y_ 70
$node_(34) set Z_ 0.0

$node_(35) set X_ 27
$node_(35) set Y_ 74
$node_(35) set Z_ 0.0

$node_(36) set X_ 92
$node_(36) set Y_ 67
$node_(36) set Z_ 0.0

$node_(37) set X_ 146
$node_(37) set Y_ 198
$node_(37) set Z_ 0.0

$node_(38) set X_ 74
$node_(38) set Y_ 33
$node_(38) set Z_ 0.0

$node_(39) set X_ 133
$node_(39) set Y_ 138
$node_(39) set Z_ 0.0

$node_(40) set X_ 108
$node_(40) set Y_ 44
$node_(40) set Z_ 0.0

$node_(41) set X_ 131
$node_(41) set Y_ 152
$node_(41) set Z_ 0.0

$node_(42) set X_ 27
$node_(42) set Y_ 174
$node_(42) set Z_ 0.0

$node_(43) set X_ 172
$node_(43) set Y_ 153
$node_(43) set Z_ 0.0

$node_(44) set X_ 137
$node_(44) set Y_ 88
$node_(44) set Z_ 0.0

$node_(45) set X_ 39
$node_(45) set Y_ 194
$node_(45) set Z_ 0.0

$node_(46) set X_ 39
$node_(46) set Y_ 107
$node_(46) set Z_ 0.0

$node_(47) set X_ 68
$node_(47) set Y_ 30
$node_(47) set Z_ 0.0

$node_(48) set X_ 54
$node_(48) set Y_ 186
$node_(48) set Z_ 0.0

$node_(49) set X_ 168
$node_(49) set Y_ 62
$node_(49) set Z_ 0.0

$node_(50) set X_ 198
$node_(50) set Y_ 76
$node_(50) set Z_ 0.0

$node_(51) set X_ 26
$node_(51) set Y_ 104
$node_(51) set Z_ 0.0

$node_(52) set X_ 83
$node_(52) set Y_ 184
$node_(52) set Z_ 0.0

$node_(53) set X_ 64
$node_(53) set Y_ 180
$node_(53) set Z_ 0.0

$node_(54) set X_ 75
$node_(54) set Y_ 51
$node_(54) set Z_ 0.0

$node_(55) set X_ 89
$node_(55) set Y_ 140
$node_(55) set Z_ 0.0

$node_(56) set X_ 173
$node_(56) set Y_ 57
$node_(56) set Z_ 0.0

$node_(57) set X_ 113
$node_(57) set Y_ 30
$node_(57) set Z_ 0.0

$node_(58) set X_ 152
$node_(58) set Y_ 189
$node_(58) set Z_ 0.0

$node_(59) set X_ 87
$node_(59) set Y_ 167
$node_(59) set Z_ 0.0

$node_(60) set X_ 162
$node_(60) set Y_ 161
$node_(60) set Z_ 0.0

$node_(61) set X_ 160
$node_(61) set Y_ 15
$node_(61) set Z_ 0.0

$node_(62) set X_ 135
$node_(62) set Y_ 56
$node_(62) set Z_ 0.0

$node_(63) set X_ 50
$node_(63) set Y_ 186
$node_(63) set Z_ 0.0

$node_(64) set X_ 155
$node_(64) set Y_ 129
$node_(64) set Z_ 0.0

$node_(65) set X_ 61
$node_(65) set Y_ 64
$node_(65) set Z_ 0.0

$node_(66) set X_ 195
$node_(66) set Y_ 59
$node_(66) set Z_ 0.0

$node_(67) set X_ 35
$node_(67) set Y_ 182
$node_(67) set Z_ 0.0

$node_(68) set X_ 138
$node_(68) set Y_ 71
$node_(68) set Z_ 0.0

$node_(69) set X_ 119
$node_(69) set Y_ 45
$node_(69) set Z_ 0.0

$node_(70) set X_ 183
$node_(70) set Y_ 187
$node_(70) set Z_ 0.0

$node_(71) set X_ 130
$node_(71) set Y_ 181
$node_(71) set Z_ 0.0

$node_(72) set X_ 128
$node_(72) set Y_ 197
$node_(72) set Z_ 0.0

$node_(73) set X_ 14
$node_(73) set Y_ 144
$node_(73) set Z_ 0.0

$node_(74) set X_ 154
$node_(74) set Y_ 22
$node_(74) set Z_ 0.0

$node_(75) set X_ 72
$node_(75) set Y_ 97
$node_(75) set Z_ 0.0

$node_(76) set X_ 12
$node_(76) set Y_ 58
$node_(76) set Z_ 0.0

$node_(77) set X_ 90
$node_(77) set Y_ 185
$node_(77) set Z_ 0.0

$node_(78) set X_ 167
$node_(78) set Y_ 9
$node_(78) set Z_ 0.0

$node_(79) set X_ 174
$node_(79) set Y_ 186
$node_(79) set Z_ 0.0

$node_(80) set X_ 57
$node_(80) set Y_ 15
$node_(80) set Z_ 0.0

$node_(81) set X_ 93
$node_(81) set Y_ 144
$node_(81) set Z_ 0.0

$node_(82) set X_ 169
$node_(82) set Y_ 45
$node_(82) set Z_ 0.0

$node_(83) set X_ 73
$node_(83) set Y_ 183
$node_(83) set Z_ 0.0

$node_(84) set X_ 150
$node_(84) set Y_ 16
$node_(84) set Z_ 0.0

$node_(85) set X_ 132
$node_(85) set Y_ 123
$node_(85) set Z_ 0.0

$node_(86) set X_ 55
$node_(86) set Y_ 76
$node_(86) set Z_ 0.0

$node_(87) set X_ 96
$node_(87) set Y_ 13
$node_(87) set Z_ 0.0

$node_(88) set X_ 42
$node_(88) set Y_ 8
$node_(88) set Z_ 0.0

$node_(89) set X_ 59
$node_(89) set Y_ 150
$node_(89) set Z_ 0.0

$node_(90) set X_ 199
$node_(90) set Y_ 72
$node_(90) set Z_ 0.0

$node_(91) set X_ 71
$node_(91) set Y_ 59
$node_(91) set Z_ 0.0

$node_(92) set X_ 164
$node_(92) set Y_ 166
$node_(92) set Z_ 0.0

$node_(93) set X_ 124
$node_(93) set Y_ 163
$node_(93) set Z_ 0.0

$node_(94) set X_ 39
$node_(94) set Y_ 154
$node_(94) set Z_ 0.0

$node_(95) set X_ 61
$node_(95) set Y_ 191
$node_(95) set Z_ 0.0

$node_(96) set X_ 194
$node_(96) set Y_ 147
$node_(96) set Z_ 0.0

$node_(97) set X_ 29
$node_(97) set Y_ 50
$node_(97) set Z_ 0.0

$node_(98) set X_ 141
$node_(98) set Y_ 157
$node_(98) set Z_ 0.0

$node_(99) set X_ 166
$node_(99) set Y_ 18
$node_(99) set Z_ 0.0




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

    # 20 defines the node size in nam, must adjust it according to your scenario
    # The function must be called after mobility model is defined

    $ns_ initial_node_pos $node_($i) 5
}

set udp_(0) [new Agent/UDP]
$ns_ attach-agent $node_(0) $udp_(0) 

set null_(0) [new Agent/Null]
$ns_ attach-agent $node_(2) $null_(0)

$ns_ connect $udp_(0) $null_(0)

set cbr_(0) [new Application/Traffic/CBR]
$cbr_(0) set packetSize_ 512
$cbr_(0) set interval_ 0.5
$cbr_(0) set random_ 1
$cbr_(0) set maxpkts_ 10
$cbr_(0) attach-agent $udp_(0)
$ns_ at 2.0 "$cbr_(0) start"

# Tell nodes when the simulation ends
for {set i 0} {$i < $val(nn) } {incr i} {
    $ns_ at $val(stop).0 "$node_($i) reset";
}
$ns_ at $val(stop).0 "stop"
$ns_ at $val(stop).01 "puts \"NS EXITING...\" ; $ns_ halt"
proc stop {} {
    global ns_ tracefd
    $ns_ flush-trace
    close $tracefd
}

puts "Starting Simulation..."
$ns_ run






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -