Scheduler:Event UID not valid

今天做了柯志亨老师的实验23,比较不同的无线网络路由,DSDV/AODV/DSR。按照书上的要求写了脚本和AWK程序,测试一切顺利。但是到了实验二,做DSR实验的时候却出现了事件UID非法的提示。查看trace文件,发现确实停在了大概56s的位置。查了很多资料,解决方法没有找到。而且也不敢随便修改mac文件。不过看了一些解释,我怀疑可能是tcl脚本中的一项设置:Mac/802_11 set SlotTime_    0.000020  ;#20us不合适。这里设置slot长度为20us。我尝试改了这个参数。把20us改成了10us。运行一遍,顺利通过!

    虽然通过测试了,但是我还是不太能够理解其中原因,现将tcl脚本一并贴上来,希望大家能够给我指点指点。

 

proc getopt {argc argv} {
  global opt
  lappend optlist nn
  for {set i 0} {$i<$argc} {incr i} {
    set opt($i) [lindex $argv $i]
  }
 }

getopt $argc $argv

#参数设置
set opt(chan)  Channel/WirelessChannel
set opt(prop)  Propagation/TwoRayGround
set opt(netif) Phy/WirelessPhy

#下面设置比较特别,若是使用DSR,所使用的ifq就要用CMUPriQueue
set opt(mac)  Mac/802_11
if {$opt(0) == "DSR"} {
  set opt(ifq)  CMUPriQueue
} else {
  set opt(ifq)  Queue/DropTail/PriQueue     ;#interface queue type
}

set opt(ll)  LL
set opt(ant) Antenna/OmniAntenna

set opt(x)  500
set opt(y)  500
set opt(ifqlen) 2000
set opt(seed)  0.0
set opt(tr)  trace2.tr   ;#trace file
set opt(adhocRouting)  $opt(0)
set opt(nn)  100
set opt(cp)  "cbr_n100_m10_r10"

set opt(sc)  "scen_100n_0p_10M_100t_500_500"

set opt(stop)  100.0

Mac/802_11 set CWMin_      31
Mac/802_11 set CWMax_      1023
Mac/802_11 set SlotTime_    0.000010  ;#10us
Mac/802_11 set SIFS_      0.000010  ;#10us
Mac/802_11 set PreambleLength_  144       ;#144bit
Mac/802_11 set PreambleDataRate_ 1.0e6   ;#1Mbps
Mac/802_11 set PLCPHeaderLength_  48       ;#48bit
Mac/802_11 set PLCPDataRate_   1.0e6    ;#1Mpbs
Mac/802_11 set RTSThreshold_      3000     ;#bytes Disable RTS/CTS
Mac/802_11 set ShortRetryLimit_   7        ;#retrans_mission_
Mac/802_11 set LongRetryLimit_    4      ;#retrans_mission_

Mac/802_11 set dataRate_     2Mb      ;#802.11data trans_mission rate
Mac/802_11 set basicRate_     1Mb   ;#802.11 basic trans_mission rate


set ns_ [new Simulator]
set tracefd [open $opt(tr) w]
$ns_ trace-all $tracefd
set topo [new Topography]
$topo load_flatgrid $opt(x) $opt(y)

set god_ [create-god $opt(nn)]
set chan_1_ [new $opt(chan)]

$ns_ node-config  -adhocRouting $opt(adhocRouting) \
         -llType $opt(ll) \
         -macType $opt(mac) \
         -ifqType $opt(ifq) \
         -antType $opt(ant) \
         -ifqLen $opt(ifqlen) \
         -propType $opt(prop) \
         -phyType $opt(netif) \
         -channel $chan_1_ \
         -topoInstance $topo \
         -agentTrace ON \
         -routerTrace ON \
         -macTrace OFF

for {set i 0} {$i < $opt(nn)} {incr i} {
  set node_($i) [$ns_ node]
  $node_($i) random-motion 0
}

#设置结点移动模式
puts "Loading connection pattern..."
#使用source去载入traffic pattern文件
source $opt(cp)

#设置联机传输模式
puts "Loading scenario file..."
#使用source去载入结点移动场景文件
source $opt(sc)

for {set i 0} {$i < $opt(nn)} {incr i} {
  $ns_ initial_node_pos $node_($i) 20
}

for {set i 0} {$i < $opt(nn)} {incr i} {
  $ns_ at $opt(stop).1 "$node_($i) reset"
}

$ns_ at $opt(stop).1 "puts \"ns EXITING...\";$ns_ halt"

puts "Starting Simulation..."


$ns_ run

你可能感兴趣的:(scheduler)