Dear all

I am trying to create a wired-cum-wireless scenario with variable number of
wireless nodes [ opt(nn) ] sending/receiving FTP data from a wired server
which [ W(0) ] which is connected to an access point [ BS(0) ].
Unfortunately when I increase the number of wireless nodes to more than 2
(let's say 10 or more), I receive this error :

warning: Route to base_stn not known: dropping pkt

I tried to find a solution and I checked many factors and variables, but it
seems nothing can solve the problem. I even fixed the location (X_,Y_,Z_) or
the nodes and I also checked if my hierarchical addressing is true. but it
seems nothing is missed. however the problem arises when I use more than 2
wireless nodes. I would be very grateful if you are able to help. the exact
code of .Tcl file is here:

set ns [new Simulator]
set tf [open tf.tr w]

# Simulation parameters stack
set opt(chan)           Channel/WirelessChannel    ;# channel type
set opt(prop)           Propagation/TwoRayGround   ;# radio-propagation
model
set opt(netif)          Phy/WirelessPhy            ;# network interface type

set opt(mac)            Mac/802_11                 ;# MAC type
set opt(ifq)            Queue/DropTail/PriQueue             ;# interface
queue type
set opt(ll)             LL                         ;# link layer type
set opt(ant)            Antenna/OmniAntenna        ;# antenna model
set opt(ifqlen)         50                         ;# max packet in ifq
set qsize(wired)    200
set opt(nn)        5               ;# Number of mobile nodes
set opt(adhocRouting)   DSDV                       ;# routing protocol
set opt(cp)             ""                         ;# connection pattern
file
set opt(ftp-start)      0.0
set opt(x)      670                                ;# x coordinate of
topology
set opt(y)      670                                ;# y coordinate of
topology
set opt(seed)   0.0                                ;# seed for random number
gen.
set num_wired_nodes      1               ;# number of wired servers
set num_bs_nodes         1                         ;# number of base
stations
set x_base    1                   ;# location of Base station
set y_base    2
set z_base    0
set flow_type(0) short_up               ;# flow type
(U=upload,D=download,S=short,L=large)
set flow_type(1) short_down
set flow_type(2) long_up
set flow_type(3) long_down
set flow_no(short_up)      2                   ;# number of short upload
flows (per node)
set flow_no(short_down)  2                   ;# number of short download
flows (per node)
set flow_no(long_up)     2                   ;# number of long upload flows
(per node)
set flow_no(long_down)    2                                 ;# number of
long download flows (per node)
set packetSize(short_up) 1500               ;# packet sizes
set packetSize(short_down) 1500
set packetSize(long_up) 1500
set packetSize(long_down) 1500
set lambda(0) 10; # lambda
set lambda(1) 10
set lambda(2) 10
set lambda(3) 10
set mu(0) 20000000 ;# mu? (average file size in bytes)
set mu(1) 20000000
set mu(2) 10000000
set mu(3) 10000000
set shape(0) 1.5 ;# Pareto file size shape
set shape(1) 1.5
set shape(2) 1.5
set shape(3) 1.5



# Create topography object
set topo [new Topography]
# define topology
$topo load_flatgrid $opt(x) $opt(y)
# create God
create-god [expr $opt(nn)+$num_bs_nodes]

# set up for hierarchical routing
$ns node-config -addressType hierarchical
AddrParams set domain_num_ 2                     ;# number of domains
lappend cluster_num 1 1                            ;# number of clusters in
each domain
AddrParams set cluster_num_ $cluster_num
lappend eilastlevel 1 [expr $opt(nn)+1]                   ;# number of nodes
in each cluster
AddrParams set nodes_num_ $eilastlevel             ;# of each domain

$ns trace-all $tf

proc finish {} {
        global ns tf
        $ns flush-trace
    close $tf         exit 0
}
# create wired nodes
set temp {0.0.0}           ;# hierarchical addresses to be used
for {set i 0} {$i < $num_wired_nodes} {incr i} {
    set W($i) [$ns node [lindex $temp $i]]
}
# configure for base-station node
$ns node-config -adhocRouting $opt(adhocRouting) \
                 -llType $opt(ll) \
                 -macType $opt(mac) \
                 -ifqType $opt(ifq) \
                 -ifqLen $opt(ifqlen) \
                 -antType $opt(ant) \
                 -propType $opt(prop) \
                 -phyType $opt(netif) \
                 -channelType $opt(chan) \
         -topoInstance $topo \
                 -wiredRouting ON \
         -agentTrace ON \
                 -routerTrace OFF \
                 -macTrace OFF



set temp {1.0.0}   ;# hier address to be used for wireless domain
for {set i 1} {$i <= $opt(nn)} {incr i} {
    lappend temp 1.0.$i
}
set BS(0) [ $ns node [lindex $temp 0]]
$BS(0) random-motion 0               ;# disable random motion

#provide some co-ord (fixed) to base station node
$BS(0) set X_ $x_base
$BS(0) set Y_ $y_base
$BS(0) set Z_ $z_base
#configure for mobilenodes
$ns node-config -wiredRouting OFF
  for {set j 0} {$j < $opt(nn)} {incr j} {
    set n($j) [ $ns node [lindex $temp \
        [expr $j+1]] ]
    $n($j) base-station [AddrParams addr2id \
        [$BS(0) node-addr]]
}

for {set i 0} {$i< $opt(nn)} {incr i} {
$n($i) set X_ $i
$n($i) set Y_ $i
$n($i) set Z_ 0
}
#create links between wired and BS nodes
$ns duplex-link $W(0) $BS(0) 10Mb 2ms DropTail
$ns queue-limit $BS(0) $W(0) $qsize(wired)
$ns queue-limit $W(0) $BS(0) $qsize(wired)

#creating TCP source and destinations
for {set i 0} {$i<$opt(nn)} {incr i} {
    for {set j 0} {$j<4} {incr j} {
        for {set k 0} {$k<$flow_no($flow_type($j))} {incr k} {
            set tcp_back($i,$flow_type($j),$k) [new Agent/TCP/Newreno]
            $tcp_back($i,$flow_type($j),$k) set packetSize_
$packetSize($flow_type($j))
            set sink_back($i,$flow_type($j),$k) [new Agent/TCPSink/DelAck]
            if {($j==0)||($j==2)} {
                $ns attach-agent $n($i) $tcp_back($i,$flow_type($j),$k)
                $ns attach-agent $W(0) $sink_back($i,$flow_type($j),$k)
            }
            if {($j==1)||($j==3)} {
                $ns attach-agent $W(0) $tcp_back($i,$flow_type($j),$k)
                $ns attach-agent $n($i) $sink_back($i,$flow_type($j),$k)
            }
            $ns connect $tcp_back($i,$flow_type($j),$k)
$sink_back($i,$flow_type($j),$k)
            set ftp_back($i,$flow_type($j),$k)
[$tcp_back($i,$flow_type($j),$k) attach-source FTP]
        }
    }
}

# Generators for random file size and inter-arrival times
for {set i 0} {$i<4} {incr i} {
    set rng_time($i) [new RNG]
    $rng_time($i) seed 1
    set rng_size($i) [new RNG]
    $rng_size($i) seed 1
}

for {set i 0} {$i<4} {incr i} {
    #Random inter-arrival times at each source
    set RV($i) [new RandomVariable/Exponential]
    $RV($i) set avg_ 1/$lambda($i)
    $RV($i) use-rng $rng_time($i)
    #Random file sizes
    set RVsize($i) [new RandomVariable/Pareto]
    $RVsize($i) set avg_ $mu($i)
    $RVsize($i) set shape_ $shape($i)
    $RVsize($i) use-rng $rng_size($i)
}

for {set i 0} {$i<$opt(nn)} {incr i} {
    for {set j 0} {$j<4} {incr j} {
        set t [$ns now]
        for {set k 0} {$k<$flow_no($flow_type($j))} {incr k} {
        set t [expr $t+[$RV($j) value]]
        set Conct($i,$flow_type($j),$k) $t
        set Size($i,$flow_type($j),$k) [$RVsize($j) value]
        puts
"$Size($i,$flow_type($j),$k)\t$i\t$j\t$k\t$Conct($i,$flow_type($j),$k)"
        $ns at $Conct($i,$flow_type($j),$k) "$ftp_back($i,$flow_type($j),$k)
send $Size($i,$flow_type($j),$k)"
        }
    }
}




$ns at 1000 "finish"
$ns run

-- 
Naeem Khademi
---------------------------------------------------------
Student of Master of Computer Science
University  Putra  Malaysia
---------------------------------------------------------

Reply via email to