hi all, i tend to do the simulation of umts-mac layer performance, such as the ways and how the packet is sending and receiving depends on channels bit rates. Anyone has any idea o source codes as my reference. Thanks. Any method to modify from the code below:
# Define options set opt(umtsType) NodeB ;# Umts node UE/NodeB set opt(chan) Channel/WirelessChannel ;# channel type set opt(prop) Propagation/TwoRayGround ;# radio-propagation model set opt(netif) Phy/WirelessPhy ;# network interface type set opt(mac) Mac/UmtsNodeb ;# MAC type set opt(ifq) Queue/DropTail/BsFCQueue ;# interface queue type set opt(ll) LL/Nodeb ;# Link layer type set opt(rlc) Rlc/UmtsNodeB ;# RLC layer type set opt(ant) Antenna/OmniAntenna ;# antenna model set opt(ifqlen) 5000 ;# max packet in ifq set opt(adhocRouting) NOAH ;# routing protocol set opt(phylayer) Phy/UmtsNodeB ;# nodeB set opt(x) 550 ;# x coordinate of topology set opt(y) 550 ;#y coordinate of topology set opt(seed) 0.0 ;#seed for random number gen. set opt(cp) "ex2-traffic" set opt(sc) "ex2-scen" set opt(start) 0.15 set num_bs_nodes 2 set num_wired_nodes 4 set opt(nn) 2 ;# number of mobilenodes Phy/Umts set verbose_ 0 Phy/UmtsNodeB set verbose_ 0 Mac/Umts set verbose_ 2 Mac/UmtsNodeb set verbose_ 2 Mac/Umts set delay_ 10us Mac/Umts set TTI_ 10ms Mac/Umts set shared_delay_ 3ms Mac/Umts set debug_ false Rlc/Umts set rlcfragsz_ 20 Rlc/Umts set rlcverbose_ 0 Rlc/Umts set rlctime_ 80ms Rlc/UmtsNodeB set rlcfragsz_ 20 Rlc/UmtsNodeB set rlcverbose_ 0 Rlc/UmtsNodeB set rlctime_ 80ms Queue/DropTail/BsFCQueue set verbose_ 0 Queue/DropTail/FCQueue set verbose_ 0 LL/UE set verbose_ 1 LL/Nodeb set verbose_ 1 set opt(ack) 0 set opt(frag) 1 set opt(tr) "example2.tr" set opt(namtr) example2.nam set opt(stop) 2.0 ;# time to stop simulation set opt(rate) 10k set opt(rate2) 64.0k set opt(rate3) 120.2k # ============================================================================ # check for boundary parameters and random seed if { $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 Snoop remove-packet-header Ping TFRC TFRC_ACK remove-packet-header Diffusion RAP IMEP remove-packet-header AODV SR TORA IPinIP remove-packet-header MIP HttpInval remove-packet-header MFTP SRMEXT SRM aSRM remove-packet-header mcastCtrl CtrMcast IVS remove-packet-header Resv UMP Flags # create simulator instance set ns_ [new Simulator] $ns_ set-umts-routing # Create topography object set topo [new Topography] $ns_ use-newtrace set tracefd [open $opt(tr) w] $ns_ trace-all $tracefd set 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 God set god_ [create-god [expr $opt(nn) + $num_bs_nodes]] #set chan according to new ns set 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 DV for {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 \ -macTrace 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 UEs set opt(phylayer) Phy/Umts set opt(umtsType) UE set opt(ll) LL/UE set opt(rlc) Rlc/Umts set opt(mac) Mac/Umts set opt(adhocRouting) NOAH set opt(ifq) Queue/DropTail/FCQueue puts "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 nam for {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 ends for {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 exec nam example2.nam & #although i add in this line, however when compilation, the nam scenario not appear, do u knows what is the problem. } # informative headers for CMUTracefile puts $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 flows proc 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 --------------------------------- Yahoo! Mail Bring photos to life! New PhotoMail makes sharing a breeze.