multicast.tcl
#   Video              
  MyUdpSink
#   W(0) ------ HA------MH(0)
# 
  sorce -----> HA------MH
set opt(num_FA)
  1
  
#loss_model: 0
  for uniform distribution, 1 for GE model
set loss_model  0
#comm_type: 0
  for broacdcast, 1 for unicast
set comm_type 0
set ns_ [new Simulator]
$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 bsc_multicast.tr w]
$ns_ trace-all $tracefd
set opt(nnn) 1
set topo [new
  Topography]
$topo load_flatgrid 100 100
#create god
set god_ [create-god [expr
  $opt(nnn)+$opt(num_FA)]]
# wired nodes
set W(0) [$ns_ node 0.0.0]
# create channel 
set chan_ [new
  Channel/WirelessChannel]
$ns_ node-config
      -mobileIP ON \
                 
      -adhocRouting NOAH \
                 
  -llType LL \
                 
  -macType Mac/802_11 \
                 
  -ifqType Queue/DropTail/PriQueue
  \
                 
  -ifqLen 2000 \
                 
  -antType Antenna/OmniAntenna
  \
                          -propType Propagation/TwoRayGround
  \
                          -phyType
  Phy/WirelessPhy \
                  -channel
  $chan_ \
                         -topoInstance
  $topo \
                 
  -wiredRouting ON\
                          -agentTrace
  OFF \
                 
  -routerTrace OFF \
                 
  -macTrace OFF
set HA [$ns_ node 1.0.0]
set HAnetif_
  [$HA set netif_(0)]
$HAnetif_
  set-error-level 0 0 0 0 $loss_model
$ns_ node-config
  -wiredRouting OFF
set MH(0) [$ns_ node 1.0.1]
set MHnetif_(0)
  [$MH(0) set netif_(0)]
#Initially, set the
  error rate to 0
$MHnetif_(0)
  set-error-level 0 0 0 0 $loss_model
#At 10.0 second, set
  the error rate to 0.5
$ns_ at 10.0 "$MHnetif_(0) set-error-level 0 0
  0.5 0 $loss_model"
#At 40.0 second, set
  the error rate to 0
$ns_ at 40.0 "$MHnetif_(0) set-error-level 0 0
  0 0 $loss_model"
[$MH(0)  set regagent_]
  set home_agent_ [AddrParams
  addr2id [$HA node-addr]]
$HA set X_ 100.0
$HA set Y_ 100.0
$HA set Z_ 0.0
$MH(0) set X_ 80.0
  
$MH(0) set Y_ 80.0
$MH(0) set Z_ 0.0
$ns_ duplex-link $W(0) $HA 10Mb 10ms myfifo
  
set q1       [[$ns_
  link $W(0) $HA] queue]
set udp [new
  Agent/mUDP]
#set the sender trace file name to sd
$udp set_filename sd
$ns_ attach-agent $W(0) $udp
set forwarder_ [$HA  set forwarder_]
puts [$forwarder_ port]
$ns_ connect $udp
  $forwarder_
$forwarder_ dst-addr
  [AddrParams addr2id [$MH(0) node-addr]]
$forwarder_ comm-type
  $comm_type
set null [new Agent/mUdpSink]
#set the receiver
  filename to rd
$null set_filename rd
$ns_ attach-agent $MH(0) $null
$ns_ connect $udp
  $null
set cbr [new
  Application/Traffic/CBR]
$cbr attach-agent
  $udp
$cbr set type_
  CBR
$cbr set packet_size_ 1000
$cbr set rate_
  1Mb
$cbr set
  random_ false
$ns_ at 0.0 "$cbr
  start"
$ns_ at 50.0 "$cbr
  stop"
$ns_ at 50.1 "$MH(0) reset";
$ns_ at 50.0001 "$W(0) reset"
$ns_ at 50.0002 "stop "
$ns_ at 50.0003  "$ns_  halt"
proc stop {} {
    global ns_
    global tracefd
    close $tracefd
  
}
$ns_ run
 
No comments:
Post a Comment