2015-09-10 2 views
-1

У меня есть проблема с нс-2 моделированием ... Когда я бег моего моделирования это дает мне эту ошибку:Ошибка: Закончено стандарт не слоты {} Обработчик по умолчанию [нс-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 ---------- 

I пытался найти решение в Интернете, но никто не ответил на этот вопрос раньше. Кто-нибудь знает, для чего эта ошибка?

Вот мой код:

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 

ответ

1

»Classfier :: нет слота {} + + по умолчанию обработчик (TCL/Lib/нс-lib.tcl)« не может иметь несколько причин:

Wrong ОС, ошибка в вашем коде, TCL (неправильная версия ns2) и т.д. и т.п.


требуется Некоторые больше информации, если вы хотите, решение:

  • OS Имя/версия/архитектура, как Fedora 22 - i686, Ubuntu? 14.04 - i686.

  • Версия ns2. Имя моделирование. Tcl. Используемый протокол.

  • И если скрипт.tcl является новым, пожалуйста, покажите код или загрузите файл.

+0

ОС: ubuntu, VERSION: 14.04, NS-2: 2-35, PROTOCOL: AODV ........... ........... Это простая симуляция, чтобы начать, а затем ее редактировать ... Я редактировал сообщение. – Jenova

0

@ Дженова, у вас может быть разрушенная сборка ns-2.35? Вы изменили код в ns-2.35? Как добавить патч с дополнительным протоколом?

Предложенное нс-2.35 версия: нс-allinone-2.35_gcc482.tar.gz https://drive.google.com/file/d/0B7S255p3kFXNSGJCZ2YzUGJDVk0/view?usp=sharing

Т.е. 'ноября 2014 обновление': Можно использовать все GCC/G ++ версии 4.4.x .. 5.2.0


Ваш код: Я получаю тот же результат OK → С любой ОС, любой архитектуры (i686 или x86_64) , любая версия ns2, любой добавленный (безобидный) протокол к этому ns2: пример OS's, используемый для проверки вашего вышеуказанного файла file.tcl → → PCLinuxOS 2015 - i686, Ubuntu 12.04 - i686, Ubuntu 12.04 - x86_64, Ubuntu 14.04 - x86_64, Ubuntu 14.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 
+0

Его: Ubuntu 14.4 i686 – Jenova

+0

Ну теперь, когда я проверил скрипт, работает нормально, пока я просто не добавлю эту строку в aodv.cc: tcl.evalf ("$ ns_ at 0.0 \" $ node (0) color MediumBlue \ ""); – Jenova

0

Ref. ваш комментарий: »» 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_ + при + 0,0 + \" % 24node (0) + цвет + MediumBlue \ "")% 3B +

0

Пожалуйста, обратитесь к this.
Скорее всего, вы просите NS2 отправить пакет на несуществующий объект . Возможно, вы захотите проверить, правильно ли вы подключили исходные и целевые узлы до начала отправки пакетов

Смежные вопросы