Error : Finished standard no-slot{} default handler [ns-2]
Error : Finished standard no-slot{} default handler [ns-2]
我的 ns-2 模拟有问题...当我 运行 我的模拟时它给我这个错误 :
--- Classfier::no-slot{} default handler (tcl/lib/ns-lib.tcl) ---
_o52: no target for slot -1
_o52 type: Classifier/Port
content dump:
classifier _o52
0 offset
0 shift
2147483647 mask
2 slots
slot 0: _o67 (CMUTrace/Recv)
slot 255: _o54 (CMUTrace/Recv)
---------- Finished standard no-slot{} default handler ----------
我试图在互联网上找到解决方案,但以前没有人回答过这个问题。
有谁知道这个错误是什么?
这是我的代码:
set val(chan) Channel/WirelessChannel ;# Channel Type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model
set val(netif) Phy/WirelessPhy ;# network interface type
set val(mac) Mac/802_11 ;# mac type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 50 ;# max packet in ifq
set val(nn) 4 ;# number of mobilenodes
set val(rp) AODV ;# routing protocol
set val(x) 250
set val(y) 250
set ns_ [new Simulator]
set tracefile [open W.tr w]
$ns_ trace-all $tracefile
set namfile [open N.nam w]
$ns_ namtrace-all-wireless $namfile $val(x) $val(y)
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
set god_ [create-god $val(nn)]
set chan_ [new $val(chan)]
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-channel $chan_
for {set i 0} {$i < $val(nn)} {incr i} {
set node($i) [$ns_ node]
$node($i) random-motion 0
set xx_ [expr rand()*200]
set yy_ [expr rand()*200]
#$ns_ at 0.0 "$node($i) setdest $xx_ $yy_ 0.0"
puts "xx_ $xx_"
puts "yy_ $yy_"
$node($i) set X_ $xx_
$node($i) set Y_ $yy_
$node($i) set Z_ 0.0
$ns_ initial_node_pos $node($i) 10
}
for {set i 0} {$i < [expr $val(nn) / 2]} {incr i} {
set tcp($i) [new Agent/TCP]
set udp($i) [new Agent/UDP]
set cbr($i) [new Application/Traffic/CBR]
set ftp($i) [new Application/FTP]
set null($i) [new Agent/Null]
set tcpsink($i) [new Agent/TCPSink]
}
$ns_ attach-agent $node(0) $tcp(0)
$ns_ attach-agent $node(1) $tcpsink(0)
$ftp(0) attach-agent $tcp(0)
$ns_ connect $tcp(0) $tcpsink(0)
proc stop {} {
global ns_ namfile tracefile
$ns_ flush-trace
close $namfile
close $tracefile
exec nam N.nam
exit 0
}
for {set i 0} {$i < 1} {incr i} {
$ns_ at $i "$ftp([expr $i / 2]) start"
$ns_ at 20.0 "$ftp([expr $i / 2]) stop"
$ns_ at 25.0 "puts \"NS EXITING...\""
$ns_ at 25.0 "stop"
}
puts "Starting simulation..."
$ns_ run
http://ns2ultimate.tumblr.com/post/520626807/classifier-no-slot-error
http://mailman.isi.edu/pipermail/ns-users/2010-August/068657.html
https://www.google.com/webhp?hl=all&gws_rd=ssl#hl=en&q=Classfier::no-slot{}+默认+处理程序
» Classfier::no-slot{}+default+handler (tcl/lib/ns-lib.tcl) « 可能有几个原因:
错误 OS,你的 tcl 代码错误,(错误的 ns2 版本?)等等
如果您需要解决方案,还需要更多信息:
OS 名称/版本/架构,如 Fedora 22 - i686,Ubuntu 14.04 - i686.
ns2版本。 simulation.tcl 的名称。使用的协议。
如果script.tcl是新的,请出示代码,或上传文件。
@Jenova,您的 ns-2.35 版本可能已损坏?您是否更改了 ns-2.35 中的一些代码?比如添加带有额外协议的补丁?
建议的 ns-2.35 版本是:ns-allinone-2。35_gcc482.tar.gz
https://drive.google.com/file/d/0B7S255p3kFXNSGJCZ2YzUGJDVk0/view?usp=sharing
即'Nov 2014 update' : 可以使用所有 gcc/g++ 版本 4.4.x .. 5.2.0
您的代码:我得到相同的 OK 输出 → 使用任何 OS、任何体系结构(i686 或 x86_64)、任何 ns2 版本、向该 ns2 添加的任何(无害)协议:示例OS的,用来测试你上面的file.tcl→→
PCLinuxOS 2015 - i686,Ubuntu 12.04 - i686,Ubuntu 12.04 - x86_64,Ubuntu 14.04 - x86_64, Ubuntu14.04-i686.
$ ns AODV-Jenova.tcl
num_nodes is set 4
INITIALIZE THE LIST xListHead
xx_ 74.759948474708921
yy_ 90.454014432827947
xx_ 60.620572539335384
yy_ 49.962668609788018
xx_ 122.57132470727494
yy_ 56.254355169951154
xx_ 66.947341368974804
yy_ 183.96638835965021
Starting simulation...
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5, distCST_ = 550.0
SORTING LISTS ...DONE!
NS EXITING...
.. 和 'nam' 打开一个漂亮的动画。
...我们仍然不知道您拥有哪个 Ubuntu 14.04。请显示
的回复
$ uname -m
参考。您的评论:»» tcl.evalf("$ns_ at 0.0 \"$node(0) color MediumBlue\""); ««
我认为是tcl代码。并且不能添加到 c++ 文件中,AFAIK。
参见https://www.google.com/webhp?hl=all&gws_rd=ssl#hl=en&q=tcl.evalf("%24ns_+at+0.0+\"%24node(0)+color+MediumBlue\"")%3B+
请参考this。
您很可能要求 NS2 将数据包发送到不存在的
目的。在开始发送数据包之前,您可能想检查是否正确连接了源节点和目标节点
我的 ns-2 模拟有问题...当我 运行 我的模拟时它给我这个错误 :
--- Classfier::no-slot{} default handler (tcl/lib/ns-lib.tcl) ---
_o52: no target for slot -1
_o52 type: Classifier/Port
content dump:
classifier _o52
0 offset
0 shift
2147483647 mask
2 slots
slot 0: _o67 (CMUTrace/Recv)
slot 255: _o54 (CMUTrace/Recv)
---------- Finished standard no-slot{} default handler ----------
我试图在互联网上找到解决方案,但以前没有人回答过这个问题。 有谁知道这个错误是什么?
这是我的代码:
set val(chan) Channel/WirelessChannel ;# Channel Type
set val(prop) Propagation/TwoRayGround ;# radio-propagation model
set val(netif) Phy/WirelessPhy ;# network interface type
set val(mac) Mac/802_11 ;# mac type
set val(ifq) Queue/DropTail/PriQueue ;# interface queue type
set val(ll) LL ;# link layer type
set val(ant) Antenna/OmniAntenna ;# antenna model
set val(ifqlen) 50 ;# max packet in ifq
set val(nn) 4 ;# number of mobilenodes
set val(rp) AODV ;# routing protocol
set val(x) 250
set val(y) 250
set ns_ [new Simulator]
set tracefile [open W.tr w]
$ns_ trace-all $tracefile
set namfile [open N.nam w]
$ns_ namtrace-all-wireless $namfile $val(x) $val(y)
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
set god_ [create-god $val(nn)]
set chan_ [new $val(chan)]
$ns_ node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace ON \
-channel $chan_
for {set i 0} {$i < $val(nn)} {incr i} {
set node($i) [$ns_ node]
$node($i) random-motion 0
set xx_ [expr rand()*200]
set yy_ [expr rand()*200]
#$ns_ at 0.0 "$node($i) setdest $xx_ $yy_ 0.0"
puts "xx_ $xx_"
puts "yy_ $yy_"
$node($i) set X_ $xx_
$node($i) set Y_ $yy_
$node($i) set Z_ 0.0
$ns_ initial_node_pos $node($i) 10
}
for {set i 0} {$i < [expr $val(nn) / 2]} {incr i} {
set tcp($i) [new Agent/TCP]
set udp($i) [new Agent/UDP]
set cbr($i) [new Application/Traffic/CBR]
set ftp($i) [new Application/FTP]
set null($i) [new Agent/Null]
set tcpsink($i) [new Agent/TCPSink]
}
$ns_ attach-agent $node(0) $tcp(0)
$ns_ attach-agent $node(1) $tcpsink(0)
$ftp(0) attach-agent $tcp(0)
$ns_ connect $tcp(0) $tcpsink(0)
proc stop {} {
global ns_ namfile tracefile
$ns_ flush-trace
close $namfile
close $tracefile
exec nam N.nam
exit 0
}
for {set i 0} {$i < 1} {incr i} {
$ns_ at $i "$ftp([expr $i / 2]) start"
$ns_ at 20.0 "$ftp([expr $i / 2]) stop"
$ns_ at 25.0 "puts \"NS EXITING...\""
$ns_ at 25.0 "stop"
}
puts "Starting simulation..."
$ns_ run
http://ns2ultimate.tumblr.com/post/520626807/classifier-no-slot-error
http://mailman.isi.edu/pipermail/ns-users/2010-August/068657.html
https://www.google.com/webhp?hl=all&gws_rd=ssl#hl=en&q=Classfier::no-slot{}+默认+处理程序
» Classfier::no-slot{}+default+handler (tcl/lib/ns-lib.tcl) « 可能有几个原因:
错误 OS,你的 tcl 代码错误,(错误的 ns2 版本?)等等
如果您需要解决方案,还需要更多信息:
OS 名称/版本/架构,如 Fedora 22 - i686,Ubuntu 14.04 - i686.
ns2版本。 simulation.tcl 的名称。使用的协议。
如果script.tcl是新的,请出示代码,或上传文件。
@Jenova,您的 ns-2.35 版本可能已损坏?您是否更改了 ns-2.35 中的一些代码?比如添加带有额外协议的补丁?
建议的 ns-2.35 版本是:ns-allinone-2。35_gcc482.tar.gz https://drive.google.com/file/d/0B7S255p3kFXNSGJCZ2YzUGJDVk0/view?usp=sharing
即'Nov 2014 update' : 可以使用所有 gcc/g++ 版本 4.4.x .. 5.2.0
您的代码:我得到相同的 OK 输出 → 使用任何 OS、任何体系结构(i686 或 x86_64)、任何 ns2 版本、向该 ns2 添加的任何(无害)协议:示例OS的,用来测试你上面的file.tcl→→ PCLinuxOS 2015 - i686,Ubuntu 12.04 - i686,Ubuntu 12.04 - x86_64,Ubuntu 14.04 - x86_64, Ubuntu14.04-i686.
$ ns AODV-Jenova.tcl
num_nodes is set 4
INITIALIZE THE LIST xListHead
xx_ 74.759948474708921
yy_ 90.454014432827947
xx_ 60.620572539335384
yy_ 49.962668609788018
xx_ 122.57132470727494
yy_ 56.254355169951154
xx_ 66.947341368974804
yy_ 183.96638835965021
Starting simulation...
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5, distCST_ = 550.0
SORTING LISTS ...DONE!
NS EXITING...
.. 和 'nam' 打开一个漂亮的动画。
...我们仍然不知道您拥有哪个 Ubuntu 14.04。请显示
的回复$ uname -m
参考。您的评论:»» tcl.evalf("$ns_ at 0.0 \"$node(0) color MediumBlue\""); ««
我认为是tcl代码。并且不能添加到 c++ 文件中,AFAIK。
参见https://www.google.com/webhp?hl=all&gws_rd=ssl#hl=en&q=tcl.evalf("%24ns_+at+0.0+\"%24node(0)+color+MediumBlue\"")%3B+
请参考this。
您很可能要求 NS2 将数据包发送到不存在的
目的。在开始发送数据包之前,您可能想检查是否正确连接了源节点和目标节点