gentleGIANT
gentleGIANT

Reputation: 11

ns2 help - wireless LAN (AD HOC)

cannot get it to run, and now got an error

node out of range --- Classfier::no-slot{} default handler (tcl/lib/ns-lib.tcl) ---     _o186: no target for slot 4294967295     _o186 type: Classifier/Hash/Dest content dump: classifier _o186     0 offset     0 shift     1073741823 mask     1 slots         slot 58: _o530 (Classifier/Port)     -1 default ---------- Finished standard no-slot{} default handler ----------

set ns [new Simulator]

set tr [ open "out.tr" w]
$ns trace-all $tr

set ftr [open "out.nam" w]
$ns namtrace-all $ftr

# set n0 [$ns node]
# set n1 [$ns node]

# Create 59 more wireless nodes and add them to the simulation
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
set n6 [$ns node]
set n7 [$ns node]
set n8 [$ns node]
set n9 [$ns node]
set n10 [$ns node]
set n11 [$ns node]
set n12 [$ns node]
set n13 [$ns node]
set n14 [$ns node]
set n15 [$ns node]
set n16 [$ns node]
set n17 [$ns node]
set n18 [$ns node]
set n19 [$ns node]
set n20 [$ns node]
set n21 [$ns node]
set n22 [$ns node]
set n23 [$ns node]
set n24 [$ns node]
set n25 [$ns node]
set n26 [$ns node]
set n27 [$ns node]
set n28 [$ns node]
set n29 [$ns node]
set n30 [$ns node]
set n31 [$ns node]
set n32 [$ns node]
set n33 [$ns node]
set n34 [$ns node]
set n35 [$ns node]
set n36 [$ns node]
set n37 [$ns node]
set n38 [$ns node]
set n39 [$ns node]
set n40 [$ns node]
set n41 [$ns node]
set n42 [$ns node]
set n43 [$ns node]
set n44 [$ns node]
set n45 [$ns node]
set n46 [$ns node]
set n47 [$ns node]
set n48 [$ns node]
set n49 [$ns node]
set n50 [$ns node]
set n51 [$ns node]
set n52 [$ns node]
set n53 [$ns node]
set n54 [$ns node]
set n55 [$ns node]
set n56 [$ns node]
set n57 [$ns node]
set n58 [$ns node]
set n59 [$ns node]`


#$ns duplex-link $n0 $n1 2mb 4ms DropTail
$ns duplex-link $n0 $n29 5Mb 2ms DropTail
$ns duplex-link $n1 $n29 5Mb 2ms DropTail
$ns duplex-link $n2 $n29 5Mb 2ms DropTail  
$ns duplex-link $n3 $n29 5Mb 2ms DropTail
$ns duplex-link $n4 $n29 5Mb 2ms DropTail
$ns duplex-link $n5 $n29 5Mb 10ms DropTail
$ns duplex-link $n6 $n29 5Mb 10ms DropTail
$ns duplex-link $n7 $n29 5Mb 10ms DropTail
$ns duplex-link $n8 $n29 5Mb 10ms DropTail
$ns duplex-link $n9 $n29 5Mb 10ms DropTail
$ns duplex-link $n10 $n29 5Mb 10ms DropTail
$ns duplex-link $n11 $n29 10Mb 5ms DropTail
$ns duplex-link $n12 $n29 10Mb 5ms DropTail
$ns duplex-link $n13 $n29 10Mb 5ms DropTail

set tcp1 [new Agent/TCP]

set sink [new Agent/TCPSink]

$ns attach-agent $n0 $tcp1
$ns attach-agent $n1 $sink
$ns attach-agent $n2 $tcp1
$ns attach-agent $n3 $sink
$ns attach-agent $n4 $tcp1
$ns attach-agent $n5 $sink
$ns attach-agent $n6 $tcp1
$ns attach-agent $n7 $sink
$ns attach-agent $n8 $tcp1
$ns attach-agent $n9 $sink
$ns attach-agent $n10 $tcp1
$ns attach-agent $n11 $sink
$ns attach-agent $n12 $tcp1
$ns attach-agent $n13 $sink
$ns attach-agent $n14 $tcp1
$ns attach-agent $n15 $sink
$ns attach-agent $n16 $tcp1
$ns attach-agent $n17 $sink
$ns attach-agent $n18 $tcp1
$ns attach-agent $n19 $sink
$ns attach-agent $n20 $tcp1
$ns attach-agent $n21 $sink
$ns attach-agent $n22 $tcp1
$ns attach-agent $n23 $sink
$ns attach-agent $n24 $tcp1
$ns attach-agent $n25 $sink
$ns attach-agent $n26 $tcp1
$ns attach-agent $n27 $sink
$ns attach-agent $n28 $tcp1
$ns attach-agent $n29 $sink
$ns attach-agent $n30 $tcp1
$ns attach-agent $n31 $sink
$ns attach-agent $n32 $tcp1
$ns attach-agent $n33 $sink
$ns attach-agent $n34 $tcp1
$ns attach-agent $n35 $sink
$ns attach-agent $n36 $tcp1
$ns attach-agent $n37 $sink
$ns attach-agent $n38 $tcp1
$ns attach-agent $n39 $sink
$ns attach-agent $n40 $tcp1
$ns attach-agent $n41 $sink
$ns attach-agent $n42 $tcp1
$ns attach-agent $n43 $sink
$ns attach-agent $n44 $tcp1
$ns attach-agent $n45 $sink
$ns attach-agent $n46 $tcp1
$ns attach-agent $n47 $sink
$ns attach-agent $n48 $tcp1
$ns attach-agent $n49 $sink
$ns attach-agent $n50 $tcp1
$ns attach-agent $n51 $sink
$ns attach-agent $n52 $tcp1
$ns attach-agent $n53 $sink
$ns attach-agent $n54 $tcp1
$ns attach-agent $n55 $sink
$ns attach-agent $n56 $tcp1
$ns attach-agent $n57 $sink
$ns attach-agent $n58 $tcp1
$ns attach-agent $n59 $sink


$ns connect $tcp1 $sink

set ftp [new Application/FTP]

$ftp attach-agent $tcp1

proc finish { } {
    global ns tr ftr
    $ns flush-trace
    close $tr
    close $ftr
    exec nam out.nam &
    exit
    }

$ns at .1 "$ftp start"
$ns at 2.0 "$ftp stop"

$ns at 2.1 "finish"

$ns run

Upvotes: 0

Views: 56

Answers (1)

Knud Larsen
Knud Larsen

Reputation: 5909

Seems like your complex setup is too simplified to run, so node-config was added for basic options. (Ref. the default simple-wireless.tcl)
Node positions were added to the "Creating node objects" sections, to prevent all nodes to appear in one black spot in nam.
NAM didn't work at all with no section "Define initial node position in nam".
So node definitions were changed from "n0 n1 n3 ..." to "node_(0) node_(1) $node_(3) ..." to be able to add $ns initial_node_pos $node_($i) 0

Not not much movement with the added "mobility file" mobility59ns, just makes the nam animation look nicer.

The edited file :

# ------------------------------------------------------------------------
#   Define options
# ------------------------------------------------------------------------
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)             60                          ;# number of mobilenodes
set val(rp)             DSDV                       ;# routing protocol
# ------------------------------------------------------
set val(x)      1000
set val(y)      1000
#----------------------------------------------------------

set ns [new Simulator]

set tr [open out.tr w]
$ns trace-all $tr

set ftr [open "out.nam" w]
$ns namtrace-all-wireless $ftr $val(x) $val(y)

# ---------------------------------------------------------------
# set up topography object
set topo       [new Topography]
$topo load_flatgrid 500 500

create-god [expr $val(nn) + 60]
# -----------------------------------------------------------
# configure node
        $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) \
             -channelType $val(chan) \
             -topoInstance $topo \
             -agentTrace ON \
             -routerTrace ON \
             -macTrace OFF \
             -movementTrace OFF
# -------------------------------------------------
## Creating node objects..         
######## and node positions


set node_(0) [$ns node]
$node_(0) set X_ 10
$node_(0) set Y_ 248
$node_(0) set Z_ 0.0
$ns initial_node_pos $node_(0) 35
set node_(1) [$ns node]
$node_(1) set X_ 30
$node_(1) set Y_ 270
$node_(1) set Z_ 0.0
$ns initial_node_pos $node_(1) 35
set node_(2) [$ns node]
$node_(2) set X_ 50
$node_(2) set Y_ 300
$node_(2) set Z_ 0.0
$ns initial_node_pos $node_(2) 35
set node_(3) [$ns node]
$node_(3) set X_ 80
$node_(3) set Y_ 330
$node_(3) set Z_ 0.0
$ns initial_node_pos $node_(3) 35
set node_(4) [$ns node]
$node_(4) set X_ 110
$node_(4) set Y_ 380
$node_(4) set Z_ 0.0
$ns initial_node_pos $node_(4) 35
set node_(5) [$ns node]
$node_(5) set X_ 140
$node_(5) set Y_ 410
$node_(5) set Z_ 0.0
$ns initial_node_pos $node_(5) 35
set node_(6) [$ns node]
$node_(6) set X_ 180
$node_(6) set Y_ 430
$node_(6) set Z_ 0.0
$ns initial_node_pos $node_(6) 35
set node_(7) [$ns node]
$node_(7) set X_ 210
$node_(7) set Y_ 470
$node_(7) set Z_ 0.0
$ns initial_node_pos $node_(7) 35
set node_(8) [$ns node]
$node_(8) set X_ 500
$node_(8) set Y_ 495
$node_(8) set Z_ 0.0
$ns initial_node_pos $node_(8) 35
set node_(9) [$ns node]
$node_(9) set X_ 260
$node_(9) set Y_ 520
$node_(9) set Z_ 0.0
$ns initial_node_pos $node_(9) 35
set node_(10) [$ns node]
$node_(10) set X_ 300
$node_(10) set Y_ 550
$node_(10) set Z_ 0.0
$ns initial_node_pos $node_(10) 35
set node_(11) [$ns node]
$node_(11) set X_ 855
$node_(11) set Y_ 580
$node_(11) set Z_ 0.0
$ns initial_node_pos $node_(11) 35
set node_(12) [$ns node]
$node_(12) set X_ 904
$node_(12) set Y_ 610
$node_(12) set Z_ 0.0
$ns initial_node_pos $node_(12) 35
set node_(13) [$ns node]
$node_(13) set X_ 940
$node_(13) set Y_ 640
$node_(13) set Z_ 0.0
$ns initial_node_pos $node_(13) 35
set node_(14) [$ns node]
$node_(14) set X_ 980
$node_(14) set Y_ 670
$node_(14) set Z_ 0.0
$ns initial_node_pos $node_(14) 35
set node_(15) [$ns node]
$node_(15) set X_ 999
$node_(15) set Y_ 700
$node_(15) set Z_ 0.0
$ns initial_node_pos $node_(15) 35
set node_(16) [$ns node]
$node_(16) set X_ 800
$node_(16) set Y_ 730
$node_(16) set Z_ 0.0
$ns initial_node_pos $node_(16) 35
set node_(17) [$ns node]
$node_(17) set X_ 770
$node_(17) set Y_ 780
$node_(17) set Z_ 0.0
$ns initial_node_pos $node_(17) 35
set node_(18) [$ns node]
$node_(18) set X_ 730
$node_(18) set Y_ 810
$node_(18) set Z_ 0.0
$ns initial_node_pos $node_(18) 35
set node_(19) [$ns node]
$node_(19) set X_ 700
$node_(19) set Y_ 840
$node_(19) set Z_ 0.0
$ns initial_node_pos $node_(19) 35
set node_(20) [$ns node]
$node_(20) set X_ 0.0
$node_(20) set Y_ 0.0
$node_(20) set Z_ 0.0
$ns initial_node_pos $node_(20) 35
set node_(21) [$ns node]
$node_(21) set X_ 40
$node_(21) set Y_ 30
$node_(21) set Z_ 0.0
$ns initial_node_pos $node_(21) 35
set node_(22) [$ns node]
$node_(22) set X_ 0.0
$node_(22) set Y_ 70
$node_(22) set Z_ 0.0
$ns initial_node_pos $node_(22) 35
set node_(23) [$ns node]
$node_(23) set X_ 80
$node_(23) set Y_ 100
$node_(23) set Z_ 0.0
$ns initial_node_pos $node_(23) 35
set node_(24) [$ns node]
$node_(24) set X_ 120
$node_(24) set Y_ 130
$node_(24) set Z_ 0.0
$ns initial_node_pos $node_(24) 35
set node_(25) [$ns node]
$node_(25) set X_ 170
$node_(25) set Y_ 170
$node_(25) set Z_ 0.0
$ns initial_node_pos $node_(25) 35
set node_(26) [$ns node]
$node_(26) set X_ 200
$node_(26) set Y_ 200
$node_(26) set Z_ 0.0
$ns initial_node_pos $node_(26) 35
set node_(27) [$ns node]
$node_(27) set X_ 230
$node_(27) set Y_ 230
$node_(27) set Z_ 0.0
$ns initial_node_pos $node_(27) 35
set node_(28) [$ns node]
$node_(28) set X_ 726
$node_(28) set Y_ 280
$node_(28) set Z_ 0.0
$ns initial_node_pos $node_(28) 35
set node_(29) [$ns node]
$node_(29) set X_ 904
$node_(29) set Y_ 310
$node_(29) set Z_ 0.0
$ns initial_node_pos $node_(29) 35
set node_(30) [$ns node]
$node_(30) set X_ 260
$node_(30) set Y_ 360
$node_(30) set Z_ 0.0
$ns initial_node_pos $node_(30) 35
set node_(31) [$ns node]
$node_(31) set X_ 300
$node_(31) set Y_ 0.0
$node_(31) set Z_ 0.0
$ns initial_node_pos $node_(31) 35
set node_(32) [$ns node]
$node_(32) set X_ 330
$node_(32) set Y_ 50
$node_(32) set Z_ 0.0
$ns initial_node_pos $node_(32) 35

set node_(33) [$ns node]
$node_(33) set X_ 808.0
$node_(33) set Y_ 578.0
$node_(33) set Z_ 0.0
$ns initial_node_pos $node_(33) 35
set node_(34) [$ns node]
$node_(34) set X_ 0.0
$node_(34) set Y_ 550
$node_(34) set Z_ 0.0
$ns initial_node_pos $node_(34) 35

set node_(35) [$ns node]
$node_(35) set X_ 10
$node_(35) set Y_ 510
$node_(35) set Z_ 0.0
$ns initial_node_pos $node_(35) 35

set node_(36) [$ns node]
$node_(36) set X_ 50
$node_(36) set Y_ 480
$node_(36) set Z_ 0.0
$ns initial_node_pos $node_(36) 35
set node_(37) [$ns node]
$node_(37) set X_ 90
$node_(37) set Y_ 450
$node_(37) set Z_ 0.0
$ns initial_node_pos $node_(37) 35

set node_(38) [$ns node]
$node_(38) set X_ 120
$node_(38) set Y_ 410
$node_(38) set Z_ 0.0
$ns initial_node_pos $node_(38) 35
set node_(39) [$ns node]
$node_(39) set X_ 160
$node_(39) set Y_ 380
$node_(39) set Z_ 0.0
$ns initial_node_pos $node_(39) 35
set node_(40) [$ns node]
$node_(40) set X_ 200
$node_(40) set Y_ 330
$node_(40) set Z_ 0.0
$ns initial_node_pos $node_(40) 35
set node_(41) [$ns node]
$node_(41) set X_ 230
$node_(41) set Y_ 300
$node_(41) set Z_ 0.0
$ns initial_node_pos $node_(41) 35

set node_(42) [$ns node]
$node_(42) set X_ 260
$node_(42) set Y_ 270
$node_(42) set Z_ 0.0
$ns initial_node_pos $node_(42) 35
set node_(43) [$ns node]
$node_(43) set X_ 290
$node_(43) set Y_ 496
$node_(43) set Z_ 0.0
$ns initial_node_pos $node_(43) 35
set node_(44) [$ns node]
$node_(44) set X_ 290
$node_(44) set Y_ 450
$node_(44) set Z_ 0.0
$ns initial_node_pos $node_(44) 35
set node_(45) [$ns node]
$node_(45) set X_ 310
$node_(45) set Y_ 430
$node_(45) set Z_ 0.0
$ns initial_node_pos $node_(45) 35
set node_(46) [$ns node]
$node_(46) set X_ 340
$node_(46) set Y_ 410
$node_(46) set Z_ 0.0
$ns initial_node_pos $node_(46) 35
set node_(47) [$ns node]
$node_(47) set X_ 370
$node_(47) set Y_ 380
$node_(47) set Z_ 0.0
$ns initial_node_pos $node_(47) 35
set node_(48) [$ns node]
$node_(48) set X_ 400
$node_(48) set Y_ 350
$node_(48) set Z_ 0.0
$ns initial_node_pos $node_(48) 35
set node_(49) [$ns node]
$node_(49) set X_ 440
$node_(49) set Y_ 320
$node_(49) set Z_ 0.0
$ns initial_node_pos $node_(49) 35
set node_(50) [$ns node]
$node_(50) set X_ 480
$node_(50) set Y_ 290
$node_(50) set Z_ 0.0
$ns initial_node_pos $node_(50) 35
set node_(51) [$ns node]
$node_(51) set X_ 520
$node_(51) set Y_ 260
$node_(51) set Z_ 0.0
$ns initial_node_pos $node_(51) 35
set node_(52) [$ns node]
$node_(52) set X_ 560
$node_(52) set Y_ 230
$node_(52) set Z_ 0.0
$ns initial_node_pos $node_(52) 35
set node_(53) [$ns node]
$node_(53) set X_ 590
$node_(53) set Y_ 200
$node_(53) set Z_ 0.0
$ns initial_node_pos $node_(53) 35

set node_(54) [$ns node]
$node_(54) set X_ 620
$node_(54) set Y_ 439
$node_(54) set Z_ 0.0
$ns initial_node_pos $node_(54) 35
set node_(55) [$ns node]
$node_(55) set X_ 660
$node_(55) set Y_ 170
$node_(55) set Z_ 0.0
$ns initial_node_pos $node_(55) 35
set node_(56) [$ns node]
$node_(56) set X_ 690
$node_(56) set Y_ 140
$node_(56) set Z_ 0.0
$ns initial_node_pos $node_(56) 35
set node_(57) [$ns node]
$node_(57) set X_ 730
$node_(57) set Y_ 110
$node_(57) set Z_ 0.0
$ns initial_node_pos $node_(57) 35
set node_(58) [$ns node]
$node_(58) set X_ 770
$node_(58) set Y_ 80
$node_(58) set Z_ 0.0
$ns initial_node_pos $node_(58) 35
set node_(59) [$ns node]
$node_(59) set X_ 810
$node_(59) set Y_ 40
$node_(59) set Z_ 0.0
$ns initial_node_pos $node_(59) 35

# -------------------------------

#$ns duplex-link $n0 $n1 2mb 4ms DropTail
$ns duplex-link $node_(0) $node_(29) 5Mb 2ms DropTail
$ns duplex-link $node_(1) $node_(29) 5Mb 2ms DropTail
$ns duplex-link $node_(2) $node_(29) 5Mb 2ms DropTail  
$ns duplex-link $node_(3) $node_(29) 5Mb 2ms DropTail
$ns duplex-link $node_(4) $node_(29) 5Mb 2ms DropTail
$ns duplex-link $node_(5) $node_(29) 5Mb 10ms DropTail
$ns duplex-link $node_(6) $node_(29) 5Mb 10ms DropTail
$ns duplex-link $node_(7) $node_(29) 5Mb 10ms DropTail
$ns duplex-link $node_(8) $node_(29) 5Mb 10ms DropTail
$ns duplex-link $node_(9) $node_(29) 5Mb 10ms DropTail
$ns duplex-link $node_(10) $node_(29) 5Mb 10ms DropTail
$ns duplex-link $node_(11) $node_(29) 10Mb 5ms DropTail
$ns duplex-link $node_(12) $node_(29) 10Mb 5ms DropTail
$ns duplex-link $node_(13) $node_(29) 10Mb 5ms DropTail

set tcp1 [new Agent/TCP]

set sink [new Agent/TCPSink]

$ns attach-agent $node_(0) $tcp1
$ns attach-agent $node_(1) $sink
$ns attach-agent $node_(2) $tcp1
$ns attach-agent $node_(3) $sink
$ns attach-agent $node_(4) $tcp1
$ns attach-agent $node_(5) $sink
$ns attach-agent $node_(6) $tcp1
$ns attach-agent $node_(7) $sink
$ns attach-agent $node_(8) $tcp1
$ns attach-agent $node_(9) $sink
$ns attach-agent $node_(10) $tcp1
$ns attach-agent $node_(11) $sink
$ns attach-agent $node_(12) $tcp1
$ns attach-agent $node_(13) $sink
$ns attach-agent $node_(14) $tcp1
$ns attach-agent $node_(15) $sink
$ns attach-agent $node_(16) $tcp1
$ns attach-agent $node_(17) $sink
$ns attach-agent $node_(18) $tcp1
$ns attach-agent $node_(19) $sink
$ns attach-agent $node_(20) $tcp1
$ns attach-agent $node_(21) $sink
$ns attach-agent $node_(22) $tcp1
$ns attach-agent $node_(23) $sink
$ns attach-agent $node_(24) $tcp1
$ns attach-agent $node_(25) $sink
$ns attach-agent $node_(26) $tcp1
$ns attach-agent $node_(27) $sink
$ns attach-agent $node_(28) $tcp1
$ns attach-agent $node_(29) $sink
$ns attach-agent $node_(30) $tcp1
$ns attach-agent $node_(31) $sink
$ns attach-agent $node_(32) $tcp1
$ns attach-agent $node_(33) $sink
$ns attach-agent $node_(34) $tcp1
$ns attach-agent $node_(35) $sink
$ns attach-agent $node_(36) $tcp1
$ns attach-agent $node_(37) $sink
$ns attach-agent $node_(38) $tcp1
$ns attach-agent $node_(39) $sink
$ns attach-agent $node_(40) $tcp1
$ns attach-agent $node_(41) $sink
$ns attach-agent $node_(42) $tcp1
$ns attach-agent $node_(43) $sink
$ns attach-agent $node_(44) $tcp1
$ns attach-agent $node_(45) $sink
$ns attach-agent $node_(46) $tcp1
$ns attach-agent $node_(47) $sink
$ns attach-agent $node_(48) $tcp1
$ns attach-agent $node_(49) $sink
$ns attach-agent $node_(50) $tcp1
$ns attach-agent $node_(51) $sink
$ns attach-agent $node_(52) $tcp1
$ns attach-agent $node_(53) $sink
$ns attach-agent $node_(54) $tcp1
$ns attach-agent $node_(55) $sink
$ns attach-agent $node_(56) $tcp1
$ns attach-agent $node_(57) $sink
$ns attach-agent $node_(58) $tcp1
$ns attach-agent $node_(59) $sink

# ----------------------------------------
# Define initial node position in nam

for {set i 0} {$i < $val(nn)} {incr i} {
    # 20 defines the node size in nam, must adjust it according to your
    # scenario
    $ns initial_node_pos $node_($i) 0
}
# ----------------------------------------
source mobility59ns

$ns connect $tcp1 $sink

set ftp [new Application/FTP]

$ftp attach-agent $tcp1

proc finish { } {
    global ns tr ftr
    $ns flush-trace
    close $tr
    close $ftr
#    exec nam out.nam &
    exit
    }

$ns at .1 "$ftp start"
$ns at 2.0 "$ftp stop"

$ns at 2.1 "finish"

$ns run

Link, mobility59ns https://drive.google.com/drive/folders/1oW7DqCIbzOyqrgODWqQCz6cxBGTzHLes?usp=sharing

Upvotes: 0

Related Questions