I got some error when i execute the following code :
#check input parameters
Code:
if {$argc != 0} { puts "" puts "Wrong Number of Arguments! No arguments in this topology" puts "" exit (1) } global ns #set debug output for components Agent/ND set debug_ 1 Agent/MIH set debug_ 1 Agent/MIHUser/IFMNGMT/MIPV6/Handover/Handover1 set debug_ 1 Agent/MIHUser/IFMNGMT/MIPV6 set debug_ 1 Agent/MIHUser/IFMNGMT set debug_ 1 Mac/802_11 set debug_ 0 Mac/802_16 set debug_ 0 #define DEBUG parameters set quiet 0 #defines ND attributes to fit the example Agent/ND set maxRtrAdvInterval_ 1.0 Agent/ND set minRtrAdvInterval_ 0.5 Agent/ND set minDelayBetweenRA_ 0.5 #Handover Agent/MIHUser/IFMNGMT/MIPV6/Handover/Handover1 set case_ 3 #defines ND: Neihbor discovery attributes to fit the example Agent/ND set maxRtrAdvInterval_ 1.0 Agent/ND set minRtrAdvInterval_ 0.5 Agent/ND set minDelayBetweenRA_ 0.5 #defines function for flushing and closing files proc finish {} { global ns f namtrace $ns flush-trace close $f exec nam outtest.nam & close $namtrace puts " Simulation ended." exit 0 } # set global variables set output_dir . #create the simulator set ns [new Simulator] $ns use-newtrace set opt(x) 2000 ;# X dimension of the topography set opt(y) 2000 ;# Y dimension of the topography #create the topography set topo [new Topography] $topo load_flatgrid $opt(x) $opt(y) # create God create-god 20 puts "" #Simulation process is written to the trace file set f [open out.tr w] $ns trace-all $f set namfile [open outtest.nam w] #$ns namtrace-all-wireless $namfile $opt(x) $opt(y) $ns namtrace-all-wireless $namfile 2000 2000 # set up for hierarchical routing (needed for routing over a basestation) $ns node-config -addressType hierarchical AddrParams set domain_num_ 7 ;# domain number AddrParams set cluster_num_ {1 1 1 1 1 1 1} ;# cluster number for each domain AddrParams set nodes_num_ {6 6 6 6 6 6 6} ;# number of nodes for each cluster # parameter for wireless nodes set opt(chan) Channel/WirelessChannel ;# channel type for 802.11 set opt(prop) Propagation/TwoRayGround ;# radio-propagation model 802.11 set opt(netif) Phy/WirelessPhy ;# network interface type 802.11 set opt(mac) Mac/802_11 ;# MAC type 802.11 set opt(ifq) Queue/DropTail/PriQueue ;# interface queue type 802.11 set opt(ll) LL ;# link layer type 802.11 set opt(ant) Antenna/OmniAntenna ;# antenna model 802.11 set opt(ifqlen) 50 ;# max packet in ifq 802.11 set opt(adhocRouting) DSDV ;# routing protocol 802.11 set opt(umtsRouting) "" ;# routing for UMTS (to reset node config) set opt(channel) [new $opt(chan)] ;# channel to be shared by all wireless nodes #Rate at which the nodes start moving set moveStart 10 set moveStop 130 #Speed of the mobile nodes (m/sec) set moveSpeed 1 #origin of the MN set X_src 40.0 set Y_src 100.0 set X_dst 160.0 set Y_dst 100.0 # creation of the Mobile Node (MutiFaceNodes). It MUST be done before the 802.11 $ns node-config -multiIf ON ;#to create MultiFaceNode set multiFaceNode [$ns node 4.0.0] $ns node-config -multiIf OFF ;#reset attribute $ns at 0.05 "$multiFaceNode label "MN 5.0.0"" if {$quiet == 0} { puts "multiFaceNode(MN) has been created" puts "" } # creation of the Correspondant Node set host0 [$ns node 1.0.1] ;# node id is 5 $ns at 0.05 "$host0 label "CN 1.0.1"" if {$quiet == 0} { puts "host(CN) has been created" puts "" } $ns set hsdschEnabled_ 1addr $ns set hsdsch_rlc_set_ 0 $ns set hsdsch_rlc_nif_ 0 # configure RNC node puts "________RNC Configuration________" $ns node-config -UmtsNodeType rnc set rnc [$ns create-Umtsnode 0.0.0] ; $ns at 0.05 "$rnc label "RNC 0.0.0"" if {$quiet == 0} { puts "RNC: tcl=$rnc; id=[$rnc id]; addr=[$rnc node-addr]" puts "" } # configure UMTS base station puts "________UMTS Base Station Configuration________" $ns node-config -UmtsNodeType bs \ -downlinkBW 384kbs \ -downlinkTTI 10ms \ -uplinkBW 384kbs \ -uplinkTTI 10ms \ -hs_downlinkTTI 2ms \ -hs_downlinkBW 384kbs set bsUMTS [$ns create-Umtsnode 0.0.1] $ns at 0.05 "$bsUMTS label "UMTS_BS 0.0.0"" if {$quiet == 0} { puts "UMTS_Base_Station: tcl=$bsUMTS; id=[$bsUMTS id]; addr=[$bsUMTS node-addr]" puts "" } puts "----------------------------------------------" puts "" # connect RNC and base station puts "Connecting RNC and Base Station..." $ns setup-Iub $bsUMTS $rnc 622Mbit 622Mbit 15ms 15ms DummyDropTail 2000 color red $ns node-config -UmtsNodeType ue \ -baseStation $bsUMTS \ -radioNetworkController $rnc if {$quiet == 0} { puts "....Connecting successfully" puts "" } puts "----------------------------------------------" puts "" # creation of the wireless interface UMTS set iface0 [$ns create-Umtsnode 0.0.2] if {$quiet == 0} { puts "iface0: tcl=$iface0; id=[$iface0 id]; addr=[$iface0 node-addr]" puts "________iface0 created" } #define UMTS color $rnc color red $bsUMTS color red #define coverage area for 802.11 stations: 20m coverage, Freq: 2.4Ghz Phy/WirelessPhy set Pt_ 0.025 Phy/WirelessPhy set freq_ 2412e+6 Phy/WirelessPhy set RXThresh_ 6.12277e-09 Phy/WirelessPhy set CSThresh_ [expr 0.9*[Phy/WirelessPhy set RXThresh_]] # configure rate for 802.11 Mac/802_11 set basicRate_ 11Mb Mac/802_11 set dataRate_ 11Mb Mac/802_11 set bandwidth_ 11Mb # configure Access Points $ns node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType $opt(mac) \ -channel $opt(channel) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace ON \ -routerTrace OFF \ -macTrace ON \ -movementTrace OFF # configure Base station 802.11 set bstation802_11 [$ns node 3.0.0] ; $ns at 0.05 "$bstation802_11 label "WLAN_BS 3.0.0"" if {$quiet == 0} { puts "WLAN Base Station_id =$bstation802_11" } $bstation802_11 set X_ 680.0 $bstation802_11 set Y_ 1000.0 $bstation802_11 set Z_ 0.0 # we need to set the BSS for the base station set bstationMac [$bstation802_11 getMac 0] set AP_ADDR_0 [$bstationMac id] if {$quiet == 0} { puts "Basic Service Set_id for WAN_bstation =$AP_ADDR_0" } $bstationMac bss_id $AP_ADDR_0 $bstationMac enable-beacon $bstationMac set-channel 1 # creation of the wireless interface 802.11 $ns node-config -wiredRouting OFF \ -macTrace ON set iface1 [$ns node 3.0.1] ; $iface1 random-motion 0 ;# disable random motion $iface1 base-station [AddrParams addr2id [$bstation802_11 node-addr]] ;#attach mn to basestation $iface1 set X_ 480.0 ;# $iface1 set X_ $X_src $iface1 set Y_ 1000.0 ;# $iface1 set Y_ $Y_src $iface1 set Z_ 0.0 [$iface1 getMac 0] set-channel 1 if {$quiet == 0} { puts "iface1: tcl=$iface1; id=[$iface1 id]; addr=[$iface1 node-addr]" puts "________iface1 created" } #define WLAN color $bstation802_11 color blue #note: we put 16 on a different channel to avoid dealing with interferences set opt(mac) Mac/802_16 set opt(netif) Phy/WirelessPhy/OFDM #define coverage area for 802.16 stations: Phy/WirelessPhy set Pt_ 0.025 Phy/WirelessPhy set RXThresh_ 2.025e-12 Phy/WirelessPhy set CSThresh_ [expr 0.9*[Phy/WirelessPhy set RXThresh_]] $ns node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType $opt(mac) \ -channel $opt(channel) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace ON \ -routerTrace OFF \ -macTrace ON \ -movementTrace OFF # configure Base station 802.16 set bstation802_16 [$ns node 4.0.0] ; $ns at 0.05 "$bstation802_16 label "WIMAX_BS 4.0.0"" if {$quiet == 0} { puts "WIMAX Base Station_id =$bstation802_16" } $bstation802_16 random-motion 0 $bstation802_16 set X_ 1000 $bstation802_16 set Y_ 1000 $bstation802_16 set Z_ 0.0 puts "bstation802_16: tcl=$bstation802_16; id=[$bstation802_16 id]; addr=[$bstation802_16 node-addr]" set clas [new SDUClassifier/Dest] [$bstation802_16 set mac_(0)] add-classifier $clas set bs_sched [new WimaxScheduler/BS] [$bstation802_16 set mac_(0)] set-scheduler $bs_sched [$bstation802_16 set mac_(0)] set-channel 1 # creation of the wireless interface 802.16 $ns node-config -wiredRouting OFF \ -macTrace ON set iface2 [$ns node 4.0.1] ;# node id is 12. $iface2 random-motion 0 ;# disable random motion $iface2 base-station [AddrParams addr2id [$bstation802_16 node-addr]] ;#attach mn to basestation $iface2 set X_ 480.0 ;# $iface1 set X_ $X_src $iface2 set Y_ 1000.0 ;# $iface1 set Y_ $Y_src $iface2 set Z_ 0.0 set clas [new SDUClassifier/Dest] [$iface2 set mac_(0)] add-classifier $clas set ss_sched [new WimaxScheduler/SS] [$iface2 set mac_(0)] set-scheduler $ss_sched [$iface2 set mac_(0)] set-channel 1 if {$quiet == 0} { puts "iface2: tcl=$iface2; id=[$iface2 id]; addr=[$iface2 node-addr]" puts "________iface2 created" } #define WIMAX color $bstation802_16 color green # add interfaces to MultiFaceNode $multiFaceNode add-interface-node $iface0 $multiFaceNode add-interface-node $iface1 $multiFaceNode add-interface-node $iface2 # define node movement. We start from outside the coverage, cross it and leave. $ns at 20 "$iface0 setdest 1600.0 1000.0 3.0" # define node movement. We start from outside the coverage, cross it and leave. $ns at 20 "$iface1 setdest 1600.0 1000.0 3.0" # define node movement. We start from outside the coverage, cross it and leave. $ns at 20 "$iface2 setdest 1600.0 1000.0 3.0" puts "----------------------------------------------" #creation of backbones set router0 [$ns node 1.0.0] $ns at 0.05 "$router0 label "router0 1.0.0"" if {$quiet == 0} { puts "router0: tcl=$router0; id=[$router0 id]; addr=[$router0 node-addr]" puts "________router0 created" } set router1 [$ns node 2.0.0] $ns at 0.05 "$router0 label "router1 2.0.0"" if {$quiet == 0} { puts "router0: tcl=$router1; id=[$router1 id]; addr=[$router1 node-addr]" puts "________router1 created" puts "" } # topology Links..." $ns duplex-link $rnc $router1 622Mbit 0.4ms DropTail 1000 color red $ns trace-queue $rnc $router1 $f $ns duplex-link $router1 $router0 100MBit 5ms DropTail 1000 $ns trace-queue $router1 $router0 $f $ns duplex-link $router0 $host0 100MBit 5ms DropTail 1000 $ns trace-queue $router0 $host0 $f $rnc add-gateway $router1 # add link WLAN base station to backbone $ns duplex-link $bstation802_11 $router1 100MBit 15ms DropTail 1000 color blue $ns trace-queue $router1 $bstation802_11 $f # add link WIMAX base station to backbone $ns duplex-link $bstation802_16 $router1 100MBit 15ms DropTail 1000 color green $ns trace-queue $router1 $bstation802_16 $f if {$quiet == 0} { puts "....Connecting successfully" puts "" } #neighbor discovery module # UMTS (Note: The ND module is on the rnc node NOT in the base station) set nd_bsUMTS [$rnc install-nd] $nd_bsUMTS set-router TRUE $nd_bsUMTS router-lifetime 1800 $nd_bsUMTS enable-broadcast FALSE $nd_bsUMTS add-ra-target 0.0.2 ; # adding ra-target (Router Advertisement) # in UMTS there is no notion of broadcast. # We fake it by sending unicast to a list of nodes set nd_ue [$iface0 install-nd] # WLAN set nd_bs [$bstation802_11 install-nd] $nd_bs set-router TRUE $nd_bs router-lifetime 1800 set nd_mn [$iface1 install-nd] # WIMAX set nd_bs2 [$bstation802_16 install-nd] $nd_bs2 set-router TRUE $nd_bs2 router-lifetime 1800 set nd_mn2 [$iface2 install-nd] # router1 set nd_router [$router1 install-nd] $nd_router set-router TRUE $nd_router router-lifetime 1800 # router0 set nd_router_0 [$router0 install-nd] $nd_router_0 set-router TRUE $nd_router_0 router-lifetime 1800 if {$quiet == 0} { puts "....Configuration successfully" puts "" } #mih module # install interface manager into the Mobile Node (multi-interface node) Agent/MIHUser/IFMNGMT/MIPV6/Handover/Handover1 set case_ 2 set handover [new Agent/MIHUser/IFMNGMT/MIPV6/Handover/Handover1] $multiFaceNode install-ifmanager $handover # adding handover module to the UMTS iface0 $nd_ue set-ifmanager $handover # adding handover module to the WLAN iface1 $nd_mn set-ifmanager $handover $handover nd_mac $nd_mn [$iface1 set mac_(0)] ;#to know how to send RS messages (Ready to sent) # adding handover module to the WIMAX iface2 $nd_mn2 set-ifmanager $handover $handover nd_mac $nd_mn2 [$iface2 set mac_(0)] ;#to know how to send RS messages (Ready to sent) # install interface manager into the Correspondant Node (host0) set ifmgmt_cn [$host0 install-default-ifmanager] # install MIH in multi-interface node set mih [$multiFaceNode install-mih] $handover connect-mih $mih ;#create connection between MIH and iface management # install MIH on AP/BS set mih_bs [$bstation802_11 install-mih] set tmp_bs [$bstation802_11 set mac_(0)] $tmp_bs mih $mih_bs $mih_bs add-mac $tmp_bs set mih_bs [$bstation802_16 install-mih] set tmp_bs [$bstation802_16 set mac_(0)] $tmp_bs mih $mih_bs $mih_bs add-mac $tmp_bs #traffic tcp between cn and multi interface #Create a UDP agent set udp_ [new Agent/UDP] $udp_ set packetSize_ 1500 if {$quiet == 0} { puts "...UDP on node : $udp_" } # Create a CBR traffic source and attach it to udp set cbr_ [new Application/Traffic/CBR] $cbr_ set packetSize_ 500 $cbr_ set interval_ 0.2 $cbr_ attach-agent $udp_ if {$quiet == 0} { puts "...CBR created : $cbr_" } # Create the Null agent to sink traffic set udp_test_sink [new Agent/Null] $ns attach-agent $iface0 $udp_test_sink $ns connect $udp_ $udp_test_sink if {$quiet == 0} { puts "...TEST_SINK created : $udp_test_sink" } #host0 is transmitter $ns attach-agent $host0 $udp_ if {$quiet == 0} { puts "" puts "...Attachement Successfully" } #Multiface node is receiver $multiFaceNode attach-agent $udp_test_sink $iface0 ;#4 $handover add-flow $udp_test_sink $udp_ $iface0 1 if {$quiet == 0} { puts "...MN added flow" } # do registration in UMTS. This will create the MACs in UE and base stations $ns node-config -llType UMTS/RLC/AM \ -downlinkBW 384kbs \ -uplinkBW 384kbs \ -downlinkTTI 20ms \ -uplinkTTI 20ms \ -hs_downlinkTTI 2ms \ -hs_downlinkBW 384kbs if {$quiet == 0} { puts "Configuration UMTS Node..." } set dch0 [$ns create-dch $iface0 $udp_test_sink] $ns attach-dch $iface0 $handover $dch0 $ns attach-dch $iface0 $nd_ue $dch0 if {$quiet == 0} { puts "...Attachement Successfully" } # Now we can register the MIH module with all the MACs set tmp2 [$iface0 set mac_(2)] ;#in UMTS and using DCH the MAC to use is 2 (0 and 1 are for RACH and FACH) $tmp2 mih $mih $mih add-mac $tmp2 ;#inform the MIH about the local MAC set tmp2 [$iface1 set mac_(0)] ;#in 802.11 one interface is created $tmp2 mih $mih $mih add-mac $tmp2 ;#inform the MIH about the local MAC set tmp2 [$iface2 set mac_(0)] ;#in 802.16 one interface is created $tmp2 mih $mih $mih add-mac $tmp2 ;#inform the MIH about the local MAC if {$quiet == 0} { puts "....Configuration finished successfully" puts "" } #Start the Application $ns at 0.1 "$cbr_ start" $ns at 4.0 "$cbr_ stop" $ns at 5.0 "finish" if {$quiet == 0} { puts " Simulation is running ... please wait ..." } $ns run
I got this error:
can't read "Node_(10)": no such element in array
while executing
"return $Node_($id)"
(procedure "_o3" line 3)
(Simulator get-node-by-id line 3)
invoked from within
"$self get-node-by-id [lindex $L 1]"
(procedure "_o3" line 15)
(Simulator compute-hier-routes line 15)
invoked from within
"$self compute-hier-routes "
invoked from within
"if [Simulator hier-addr?] {
$self compute-hier-routes
} else {
$self compute-flat-routes
}"
(procedure "_o3" line 2)
(Simulator compute-routes line 2)
invoked from within
"[Simulator instance] compute-routes"
(procedure "Agent/rtProto/Static" line 2)
(Agent/rtProto/Static init-all line 2)
invoked from within
"Agent/rtProto/Static init-all"
invoked from within
"if [info exists rtprotos_] {
foreach proto [array names rtprotos_] {
eval Agent/rtProto/$proto init-all $rtprotos_($proto)
}
} else {
Agent/rtProto/St..."
(procedure "_o474" line 3)
(RouteLogic configure line 3)
invoked from within
"[$self get-routelogic] configure"
(procedure "_o3" line 5)
(Simulator run line 5)
invoked from within
"$ns run"
(file "test1.tcl" line 539)
How can I fix it???
Thanks in advance