Hi all !,

    I have ns-2 2.30 and I've installed recently NOAH protocol. After succesful 
test in wireless simple scenario, I add a couple of wired nodes, resulting a 
topology of two wired nodes, one base station node, and 4 wireless nodes (one 
of them acts as a repeater that connects the rest of the wireless nodes and 
base-station node). Problem comes when I send traffic form a wired node to a 
wireless one, appearing this error:

    --- Classfier::no-slot{} default handler (tcl/lib/ns-lib.tcl) ---
        _o18: no target for slot -1
        _o18 type: Classifier/Hash/Dest
content dump:
classifier _o18
        0 offset
        0 shift
        2147483647 mask
        1 slots
                slot 1: _o152 (Classifier/Port)
        -1 default
---------- Finished standard no-slot{} default handler ----------

    I am using cygwin in its latest release, but I think there is no problem 
with that. If anyone could help me, I ould be very pleased. Thanks in advance!! 

    I enclose my whole script, if it helps:

  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(bs) 1 ;# number of base station nodes
  set val(wired) 2 ;# number of wired nodes
  set val(rp) NOAH ;# routing protocol
  set val(x) 3000
  set val(y) 3000
  set timefin 5.0
  set pi 3.141592654
  set incrfase [expr ($pi/($val(nn)-2))]

  # ======================================================================
  # ======================================================================
  # Programa Principal
  # ======================================================================
  # ======================================================================
  #=======================================================================
  # Inicializacion de las variables globales y trazas
  #=======================================================================
  set ns_ [new Simulator]
  $ns_ use-newtrace
  set tracefd [open prueba.tr w]
  $ns_ trace-all $tracefd
  set tracenam [open prueba.nam w]
  $ns_ namtrace-all-wireless $tracenam $val(x) $val(y)
  set perdidos0 [open perdidos0.tr w]
  set recibidos0 [open recibidos0.tr w]
  #=======================================================================
  # Declaracion de la topografia
  #=======================================================================
  set topo [new Topography]
  $topo load_flatgrid $val(x) $val(y)
  #=======================================================================
  # Creacion del objeto God
  #=======================================================================
  set god_ [create-god [expr $val(nn)+$val(bs)]]
  #=======================================================================
  # Creacion del canal
  #=======================================================================
  set canal [new $val(chan)]
  #=======================================================================
  # Configuracion y creacion de nodos
  #=======================================================================
  # Definimos los nodos cableados (puesto de mando y core network)
  set mando [$ns_ node]
  $mando set X_ 0
  $mando set Y_ 1500
  $mando set Z_ 0
  set core [$ns_ node]
  $core set X_ 50
  $core set Y_ 1500
  $core set Z_ 0
  $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 \
  -wiredRouting ON \
  -agentTrace ON \
  -routerTrace ON \
  -macTrace OFF \
  -movementTrace OFF \
  -channel $canal
  # Definimos los parametros de la antena para el puesto avanzado, 
  # asi como su cobertura (2.933km), potencia...
  Antenna/OmniAntenna set X_ 0
  Antenna/OmniAntenna set Y_ 0
  Antenna/OmniAntenna set Z_ 8
  Antenna/OmniAntenna set Gt_ 21
  Antenna/OmniAntenna set Gr_ 21
  Phy/WirelessPhy set CPThresh_ 10.0
  Phy/WirelessPhy set CSThresh_ 8.40163e-21
  Phy/WirelessPhy set Pt_ 0.281838
  Phy/WirelessPhy set freq_ 2.4e+9 
  Phy/WirelessPhy set L_ 1.0
  Phy/WirelessPhy set RXThresh_ 8.40163e-18
  $ns_ node-config -antType $val(ant) \
  -phyType $val(netif) 
  set base [$ns_ node]
  $base random-motion 0
  $base set X_ 100
  $base set Y_ 1500
  $base set Z_ 0
  $ns_ initial_node_pos $base 10

  # Definimos los parametros de la antena para la unidad movil, 
  # asi como su cobertura (1.466km), potencia...
  Antenna/OmniAntenna set X_ 0
  Antenna/OmniAntenna set Y_ 0
  Antenna/OmniAntenna set Z_ 4
  Antenna/OmniAntenna set Gt_ 9.5
  Antenna/OmniAntenna set Gr_ 9.5
  Phy/WirelessPhy set CPThresh_ 10.0
  Phy/WirelessPhy set CSThresh_ 9.4121e-20
  Phy/WirelessPhy set Pt_ 0.281838
  Phy/WirelessPhy set freq_ 2.4e+9 
  Phy/WirelessPhy set L_ 1.0
  Phy/WirelessPhy set RXThresh_ 9.4121e-17
  $ns_ node-config -antType $val(ant) \
  -phyType $val(netif) \
  -wiredRouting OFF
  set unimovil [$ns_ node]
  $unimovil random-motion 0
  $unimovil set X_ 1000
  $unimovil set Y_ 1500
  $unimovil set Z_ 0
  $ns_ initial_node_pos $unimovil 10
  # Definimos los parametros de la antena para los soldados, 
  # asi como su cobertura (550m), potencia...
  Antenna/OmniAntenna set X_ 0
  Antenna/OmniAntenna set Y_ 0
  Antenna/OmniAntenna set Z_ 1.5
  Antenna/OmniAntenna set Gt_ 1
  Antenna/OmniAntenna set Gr_ 1
  Phy/WirelessPhy set CPThresh_ 10.0
  Phy/WirelessPhy set CSThresh_ 2.04815e-19
  Phy/WirelessPhy set Pt_ 0.281838
  Phy/WirelessPhy set freq_ 2.4e+9 
  Phy/WirelessPhy set L_ 1.0
  Phy/WirelessPhy set RXThresh_ 1.39891e-16
  $ns_ node-config -antType $val(ant) \
  -phyType $val(netif)

  for {set i 0} {$i < [expr $val(nn)-1]} {incr i} {
  set soldado($i) [$ns_ node] 
  $soldado($i) random-motion 0 ;# disable random motion
  $soldado($i) set X_ [expr int(1000+200*cos($i*$incrfase-($pi/2)))]
  $soldado($i) set Y_ [expr int(1500+200*sin($i*$incrfase-($pi/2)))]
  $soldado($i) set Z_ 0
  $ns_ initial_node_pos $soldado($i) 10
  }
  # ======================================================================
  # Definicion de las tablas de enrutamiento para el modo NOAH
  # ======================================================================
  # Definimos las de los soldados
  for {set i 0} {$i < [expr $val(nn)-1]} {incr i} { 
  set cmd "[$soldado($i) set ragent_] routing [expr 
$val(nn)+$val(bs)+$val(wired)]"
  for {set to 0} {$to < [expr $val(nn)+$val(bs)+$val(wired)]} {incr to} {
  if {$to < [expr $i+4]} {
  set hop 3
  } elseif {$to > [expr $i+4]} {
  set hop 3
  } else {
  set hop [expr $i+4]
  }
  set cmd "$cmd $to $hop"
  }
  eval $cmd
  }
  # Definimos la de la base
  set cmd "[$base set ragent_] routing [expr $val(nn)+$val(bs)+$val(wired)]"
  for {set to 0} {$to < [expr $val(nn)+$val(bs)+$val(wired)]} {incr to} {
  if {$to < 2} {
  set hop 1
  } elseif {$to > 2} {
  set hop 3
  } else {
  set hop 2
  }
  set cmd "$cmd $to $hop"
  }
  eval $cmd
  # Definimos la de la unidad movil
  set cmd "[$unimovil set ragent_] routing [expr $val(nn)+$val(bs)+$val(wired)]"
  for {set to 0} {$to < [expr $val(nn)+$val(bs)+$val(wired)]} {incr to} {
  if {$to < 3} {
  set hop 2
  } else {
  set hop $to
  }
  set cmd "$cmd $to $hop"
  }
  eval $cmd
  # Definimos la del puesto de mando
  #set cmd "[$mando set ragent_] routing [expr $val(nn)+$val(bs)+$val(wired)]"
  # for {set to 0} {$to < [expr $val(nn)+$val(bs)+$val(wired)]} {incr to} {
  # if {$to > 0} {
  # set hop 1
  # } else {
  # set hop 0
  # }
  # set cmd "$cmd $to $hop"
  # }
  #eval $cmd
  # Definimos la de la core network
  #set cmd "[$core set ragent_] routing [expr $val(nn)+$val(bs)+$val(wired)]"
  # for {set to 0} {$to < [expr $val(nn)+$val(bs)+$val(wired)]} {incr to} {
  # if {$to < 1} {
  # set hop 0
  # } elseif {$to > 1} {
  # set hop 2
  # } else {
  # set hop 1
  # }
  # set cmd "$cmd $to $hop"
  # }
  #eval $cmd
  # ======================================================================
  # Creacion de los enlaces
  # ======================================================================
  $ns_ duplex-link $mando $core 10Mb 2ms DropTail
  $ns_ duplex-link $core $base 10Mb 2ms DropTail
  # ======================================================================
  # Creacion de Agentes para transferir datos
  # ======================================================================
  # Empleo de RTP, con trafico de tipo exponencial
  set rtp [new Agent/RTP]
  set exp [new Application/Traffic/Exponential]
  $ns_ attach-agent $core $rtp
  $exp attach-agent $rtp
  $exp set packetSize_ 512
  $exp set burst_time_ 1
  $exp set idle_time_ 0
  $exp set rate_ 64k
  # ======================================================================
  # Creacion de agentes monitores
  # ======================================================================
  # Monitorizamos las perdidas
  set monitor0 [new Agent/LossMonitor]
  $ns_ attach-agent $unimovil $monitor0
  $ns_ connect $rtp $monitor0
  $ns_ at 0.0 "comenzar_medidas"
  $ns_ at 1.0 "medir"
  $ns_ at 2.0 "$exp start" 
  $ns_ at 4.0 "$exp stop"
  # ======================================================================
  # Inicializacion de las medidas y proceso de medidas
  # ======================================================================
  proc comenzar_medidas {} {
  global ns_ monitor0
  $monitor0 set bytes_ 0
  $monitor0 set nlost_ 0
  }
  proc medir {} {
  global ns_ perdidos0 recibidos0 monitor0
  set ns_ [Simulator instance]
  set frecuencia 0.5
  set now [$ns_ now]
  set perd0 [expr 8*[$monitor0 set nlost_]]
  set rec0 [expr 8*[$monitor0 set bytes_]]
  puts $perdidos0 "$now $perd0"
  puts $recibidos0 "$now $rec0"
  $monitor0 set bytes_ 0
  $monitor0 set nlost_ 0
  $ns_ at [expr $now+$frecuencia] "medir"
  }
  # ======================================================================
  # Aviso a los nodos de la finalizacion
  # ======================================================================
  $ns_ at $timefin "$base reset"
  $ns_ at $timefin "$unimovil reset"
  for {set i 0} {$i < [expr $val(nn)-1] } {incr i} {
  $ns_ at $timefin "$soldado($i) reset"
  }

  # ======================================================================
  # Exit Process
  # ======================================================================
  $ns_ at $timefin "finish"
  proc finish {} {
  global ns_ tracefd tracenam perdidos0 recibidos0
  $ns_ flush-trace
  close $tracefd
  close $tracenam
  close $perdidos0
  close $recibidos0
  exit 0
  }
  $ns_ run

Reply via email to