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. 

Reply via email to