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

📄 example2.tcl

📁 对ns2软件进行UMTS扩展
💻 TCL
字号:
# Define optionsset opt(umtsType)		NodeB				   ;# Umts node UE/NodeBset opt(chan)           Channel/WirelessChannel    ;# channel typeset opt(prop)           Propagation/TwoRayGround   ;# radio-propagation modelset opt(netif)          Phy/WirelessPhy            ;# network interface typeset opt(mac)            Mac/UmtsNodeb		   ;# MAC typeset opt(ifq)            Queue/DropTail/BsFCQueue   ;# interface queue typeset opt(ll)      	      LL/Nodeb                   ;# Link layer typeset opt(rlc)        	Rlc/UmtsNodeB		   ;# RLC layer typeset opt(ant)            Antenna/OmniAntenna        ;# antenna modelset opt(ifqlen)         5000                       ;# max packet in ifqset opt(adhocRouting)   NOAH                       ;# routing protocolset opt(phylayer)       Phy/UmtsNodeB		   ;# nodeBset opt(x)      		550                         ;# x coordinate of topologyset opt(y)     		550                         ;#y coordinate of topologyset opt(seed)		    0.0                        ;#seed for random number gen.set opt(cp)             "ex2-traffic"set opt(sc)             "ex2-scen"set opt(start)     		0.15set num_bs_nodes        2set num_wired_nodes      4set opt(nn)             2                         ;# number of mobilenodesPhy/Umts set verbose_ 0Phy/UmtsNodeB set verbose_ 0Mac/Umts set verbose_ 0Mac/UmtsNodeb set verbose_ 0Rlc/Umts set rlcfragsz_  20Rlc/Umts set rlcverbose_ 0Rlc/Umts set rlctime_ 80msRlc/UmtsNodeB set rlcfragsz_  20Rlc/UmtsNodeB set rlcverbose_ 0Rlc/UmtsNodeB set rlctime_ 80msQueue/DropTail/BsFCQueue set verbose_ 0Queue/DropTail/FCQueue set verbose_ 0LL/UE set verbose_ 1LL/Nodeb set verbose_ 1set opt(ack)            0set opt(frag) 			1set opt(tr)     		"example2.tr"set opt(namtr)       example2.namset opt(stop)   		2.0	 ;# time to stop simulationset opt(rate)           10kset opt(rate2)          64.0kset opt(rate3)          120.2k# ============================================================================# check for boundary parameters and random seedif { $opt(x) == 0 || $opt(y) == 0 } {	puts "No X-Y boundary values given for wireless topology\n"}if {$opt(seed) > 0} {	puts "Seeding Random number generator with $opt(seed)\n"	ns-random $opt(seed)}#remove extrapkt headers else each pkt takes up too much space.remove-packet-header LDP MPLS Snoopremove-packet-header Ping TFRC TFRC_ACKremove-packet-header Diffusion RAP IMEPremove-packet-header AODV SR TORA IPinIPremove-packet-header MIP HttpInvalremove-packet-header MFTP SRMEXT SRM aSRMremove-packet-header mcastCtrl CtrMcast IVSremove-packet-header Resv UMP Flags# create simulator instanceset ns_   [new Simulator]$ns_ set-umts-routing# Create topography objectset topo   [new Topography]$ns_ use-newtraceset tracefd  [open $opt(tr) w]$ns_ trace-all $tracefdset namtracefd [open $opt(namtr) w]$ns_ namtrace-all-wireless $namtracefd $opt(x) $opt(y)set bwfile [open bw1 w]set bwfile2 [open bw2 w]set bwfile3 [open bw3 w]# define topology$topo load_flatgrid $opt(x) $opt(y)# create Godset god_ [create-god [expr $opt(nn) + $num_bs_nodes]]#set chan according to new nsset chan1 [new $opt(chan)]# Color for nam$ns_ color 0 black$ns_ color 1 white$ns_ color 2 red$ns_ color 3 green$ns_ color 4 blue#$ns_ color 5 chocolate#$ns_ color 6 tan#$ns_ color 7 gold$ns_ color 8 magenta$ns_ color 9 orchid$ns_ color 10 SteelBlue$ns_ color 11 orange$ns_ color 12 HotPink$ns_ color 13 brown#$ns_ color 14 cyan$ns_ color 15 purple$ns_ rtproto DVfor {set i 0} {$i < $num_wired_nodes} {incr i} {    set W($i) [$ns_ node]}puts "Configuring NodeB nodes......."# configure for base-station node$ns_ node-config -adhocRouting $opt(adhocRouting) \                 -llType $opt(ll) \                 -rlcType $opt(rlc) \                 -macType $opt(mac) \                 -ifqType $opt(ifq) \                 -ifqLen $opt(ifqlen) \                 -antType $opt(ant) \                 -propType $opt(prop) \                 -phyType $opt(netif) \				 -topoInstance $topo \                 -wiredRouting ON \				 -agentTrace ON \                 -routerTrace OFF  \                 -phyTrace ON  \				 -movementTrace ON \				 -channel $chan1 \			-umtsType $opt(umtsType) \			-phyLayer $opt(phylayer)for {set j 0} {$j < $num_bs_nodes} {incr j} {    set BS($j) [ $ns_ node ]    $BS($j) random-motion 0               ;# disable random motion}#configure for UEsset opt(phylayer)            Phy/Umtsset opt(umtsType)            UEset opt(ll)			     LL/UEset opt(rlc)        	     Rlc/Umtsset opt(mac)                 Mac/Umtsset opt(adhocRouting)        NOAHset opt(ifq)                 Queue/DropTail/FCQueueputs "Configuring UE nodes......."# configure for UE node$ns_ node-config -wiredRouting OFF \			-adhocRouting $opt(adhocRouting) \			-umtsType $opt(umtsType) \			-llType $opt(ll) \			-rlcType $opt(rlc) \			-macType $opt(mac) \			-phyLayer $opt(phylayer) \			-ifqType $opt(ifq)for {set j 0} {$j < $opt(nn)} {incr j} {    set node_($j) [ $ns_ node ]    $node_($j) random-motion 0               ;# disable random motion}## Define node movement model#puts "Loading connection pattern..."source $opt(cp)## Define traffic model#puts "Loading scenario file..."source $opt(sc)# Define node initial position in namfor {set i 0} {$i < $opt(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) 8}for {set i 0} {$i < $num_bs_nodes} {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 $BS($i) 20}puts "Trying to switch on UEs...."for {set j 0} {$j < $opt(nn)} {incr j} {	$node_($j) ON}# Tell all nodes when the simulation endsfor {set i 0} {$i < $opt(nn) } {incr i} {    $ns_ at $opt(stop).0 "$node_($i) reset";}$ns_ at $opt(stop).0 "$BS(0) reset";$ns_ at $opt(stop).0 "$BS(1) reset";$ns_ at $opt(stop).0002 "puts \" \" ; $ns_ halt"$ns_ at $opt(stop).0001 "stop"proc stop {} {    global ns_ tracefd namtracefd bwfile bwfile2 bwfile3    $ns_ flush-trace    close $tracefd    close $namtracefd    close $bwfile    close $bwfile2    close $bwfile3}# informative headers for CMUTracefileputs $tracefd "routing=$opt(adhocRouting)stoptime=$opt(stop) ack=$opt(ack) frag=$opt(frag)"puts $tracefd "num of mobiles=$opt(nn); x $opt(x) y $opt(y) "puts $tracefd "seed $opt(seed) prop $opt(prop) ant $opt(ant)"# Three flowsproc calcBW {} {	global ns_ lm lm2 lm3 bwfile bwfile2 bwfile3	set interval 0.01	set bw [$lm set bytes_]	set bw2 [$lm2 set bytes_]	set bw3 [$lm3 set bytes_]	set justnow [$ns_ now]	puts $bwfile "$justnow [expr $bw/$interval*8]"	puts $bwfile2 "$justnow [expr $bw2/$interval*8]"	puts $bwfile3 "$justnow [expr $bw3/$interval*8]"	$lm set bytes_ 0	$lm2 set bytes_ 0	$lm3 set bytes_ 0	$ns_ at [expr $justnow+$interval] "calcBW"}puts "Starting Simulation..."$ns_ at $opt(start) "calcBW"$ns_ run

⌨️ 快捷键说明

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