📄 shaolin.tcl
字号:
### This simulation is an example of combination of wired and wireless
### topologies.
global opt
set opt(chan) Channel/WirelessChannel
set opt(err) UniformErr
set opt(prop) Propagation/TwoRayGround
set opt(netif) Phy/WirelessPhy
set opt(mac) Mac/802_11
set opt(ifq) Queue/DropTail/PriQueue
set opt(ll) LL
set opt(ant) Antenna/OmniAntenna
set opt(x) 670
set opt(y) 670
set opt(ifqlen) 50
set opt(tr) shaolin.tr
set opt(namtr) shaolin.nam
set opt(nn) 1
#set opt(adhocRouting) DSDV
set opt(adhocRouting) NOAH
set opt(cp) ""
set opt(sc) "../mobility/scene/scen-3-test"
set opt(stop) 500
set num_wired_nodes 1
set num_bs_nodes 1
set ns_ [new Simulator]
$ns_ color 1 Red
$opt(mac) set dataRate_ 11Mb
# set up for hierarchical routing
$ns_ node-config -addressType hierarchical
AddrParams set domain_num_ 2
lappend cluster_num 1 1
AddrParams set cluster_num_ $cluster_num
lappend eilastlevel 1 2
AddrParams set nodes_num_ $eilastlevel
set tracefd [open $opt(tr) w]
$ns_ trace-all $tracefd
set namtracefd [open $opt(namtr) w]
$ns_ namtrace-all $namtracefd
#
# Add Error Model
#
proc UniformErr {} {
set em [new ErrorModel]
$em unit packet
$em set rate_ 0.1
# $em FECstrength 1
# $em datapktsize 1000
# $em cntrlpktsize 80
# $em ranvar [new RandomVariable/Uniform]
return $em
}
# Initialize the Errormodel
#ErrorModule set debug_ false
#ErrorModel set enable_ 1
#ErrorModel set markecn_ false
#ErrorModel set bandwidth_ 1Mb
#ErrorModel set rate_ 0.005
#ErrorModel/Trace set good_ 123456789
#ErrorModel/Trace set loss_ 0
#ErrorModel/Periodic set period_ 3.0
#ErrorModel/Periodic set offset_ 0.0
#ErrorModel/Periodic set burstlen_ 0.0
#ErrorModel/MultiState set curperiod_ 0.0
#ErrorModel/MultiState set sttype_ pkt
#ErrorModel/MultiState set texpired_ 0
set topo [new Topography]
$topo load_flatgrid $opt(x) $opt(y)
# god needs to know the number of all wireless interfaces
create-god [expr $opt(nn) + $num_bs_nodes]
#create wired nodes
set temp {0.0.0 0.1.0}
for {set i 0} {$i < $num_wired_nodes} {incr i} {
set W($i) [$ns_ node [lindex $temp $i]]
}
$ns_ node-config -adhocRouting $opt(adhocRouting) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propInstance [new $opt(prop)] \
-phyType $opt(netif) \
-channel [new $opt(chan)] \
-topoInstance $topo \
-wiredRouting ON \
-agentTrace OFF \
-routerTrace OFF \
-movementTrace OFF \
-macTrace OFF \
-IncomingErrProc $opt(err)
#-OutgoingErrProc $opt(err)
set temp {1.0.0 1.0.1 1.0.2 1.0.3}
set BS(0) [$ns_ node [lindex $temp 0]]
$BS(0) random-motion 0
$BS(0) set X_ 1.0
$BS(0) set Y_ 2.0
$BS(0) set Z_ 0.0
#configure for mobilenodes
$ns_ node-config -wiredRouting OFF
for {set j 0} {$j < $opt(nn)} {incr j} {
set node_($j) [ $ns_ node [lindex $temp \
[expr $j+1]] ]
$node_($j) base-station [AddrParams addr2id [$BS(0) node-addr]]
}
#create links between wired and BS nodes
$ns_ duplex-link $W(0) $BS(0) 1Mb 100ms DropTail
# $ns_ duplex-link $W(0) $BS(0) 50Kb 2ms DropTail
$ns_ duplex-link-op $W(0) $BS(0) orient up
# setup TCP connections
set tcp1 [new Agent/TCP/Reno]
$tcp1 set class_ 0
# $tcp1 set mtu_ 1500
$tcp1 set packetSize_ 1000
set trace_ch [open trace.tcp w]
$tcp1 set trace_all_ 0
$tcp1 trace cwnd_
$tcp1 attach $trace_ch
set sink1 [new Agent/TCPSink]
$ns_ attach-agent $node_(0) $tcp1
$ns_ attach-agent $W(0) $sink1
$ns_ connect $tcp1 $sink1
$tcp1 set fid_ 1
set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp1
$ns_ at 1 "$ftp1 start"
for {set i 0} {$i < $opt(nn)} {incr i} {
$ns_ initial_node_pos $node_($i) 20
}
for {set i } {$i < $opt(nn) } {incr i} {
$ns_ at $opt(stop).0000010 "$node_($i) reset";
}
$ns_ at $opt(stop).0000010 "$BS(0) reset";
$ns_ at $opt(stop).1 "puts \"NS EXITING...\" ; $ns_ halt"
$ns_ at $opt(stop).2 "finish"
puts "Starting Simulation..."
proc finish {} {
global ns_ tracefd namtrace
$ns_ flush-trace
close $tracefd
close $namtrace
# puts "running nam..."
# exec nam sctp_error_report.nam &
exit 0
}
$ns_ run
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -