Hi,
I'm try to make a UDP multicast traffic from BS to a mobile node. But it
doesn't work. Please help me! Here are my code and ns errors. Thanks.
Kincider.

# lbp_mc.tcl
# 
# Simulation of 1 Base Station sending multicast data to a group of mobile
nodes.

#Define a procedure which periodically records the bandwidth received by the
#three traffic sinks sink0/1/2 and writes it to the three files f0/1/2.
proc record {} {
        global sink_bs sink_n2 sink_n1 f1 f2 f3
        #Get an instance of the simulator
        set ns_ [Simulator instance]
        #Set the time after which the procedure should be called again
        set time 0.5
    #How many bytes have been received by the traffic sinks?
        set bw1 [$sink_bs set bytes_]
        set bw2 [$sink_n2 set bytes_]
        set bw3 [$sink_n1 set bytes_]
        #Get the current time
        set now [$ns_ now]
        #Calculate the bandwidth (in MBit/s) and write it to the files
        puts $f1 "$now [expr $bw1/$time*8/1000000]"
        puts $f2 "$now [expr $bw2/$time*8/1000000]"
        puts $f3 "$now [expr $bw3/$time*8/1000000]"
        #Reset the bytes_ values on the traffic sinks
        $sink_bs set bytes_ 0
        $sink_n2 set bytes_ 0
        $sink_n1 set bytes_ 0
        #Re-schedule the procedure
        $ns_ at [expr $now+$time] "record"
}

proc stop {} {
    global ns_ tracefd namtrace f1 f2 f3
    close $f1
    close $f2
    close $f3
    $ns_ flush-trace
    exec nam lbptrace.nam &
    exec xgraph n0_bs.tr bs_n2.tr bs_n1.tr &  ; #-geometry 800x400 &
    close $tracefd
    close $namtrace
}

# ======================================================================
# Define options
# ======================================================================
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 opt(nn)             3                          ;# number of mobilenodes
#set opt(adhocRouting)   DSDV                       ;# routing protocol
set opt(adhocRouting)   OMNIMCAST                       ;# routing protocol
set opt(cp)             ""                         ;# connection pattern
file
set opt(sc)             "scen-3"                   ;# node movement file. 
#../indep-utils/cmu-scen-gen/setdest/setdest -v 2 -n 3 -s 1 -m 1 -M 10.0  -t
100 -P 1 -p 2.0 -x 670 -y 670 > scen-3

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 opt(stop)   100                            ;# time to stop simulation

set opt(ftp1-start)      20.0
set opt(ftp2-start)      50.0

set num_bs_nodes         1

#
============================================================================
# check for boundary parameters and random seed
if { $opt(x) == 0 || $opt(y) == 0 } {
        puts "No X-Y boundary values given for wireless topology\n"
}
if {$opt(seed) > 0} {
        puts "Seeding Random number generator with $opt(seed)\n"
        ns-random $opt(seed)
}

# create simulator instance
#set ns_   [new Simulator]
set ns_   [new Simulator -multicast on]

# set up for hierarchical routing
$ns_ node-config -addressType hierarchical
AddrParams set domain_num_ 1           ;# number of domains
lappend cluster_num 1                ;# number of clusters in each domain
AddrParams set cluster_num_ $cluster_num
lappend eilastlevel 4              ;# number of nodes in each cluster 
AddrParams set nodes_num_ $eilastlevel ;# of each domain

set tracefd  [open wireless2-out.tr w]
set namtrace [open lbptrace.nam w]
$ns_ trace-all $tracefd
$ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)
#Open the output files
set f1 [open n0_bs.tr w]
set f2 [open bs_n2.tr w]
set f3 [open bs_n1.tr w]


# 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]

# 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 OFF \
                 -agentTrace ON \
                 -routerTrace OFF \
                 -macTrace OFF 

#create base-station node
set temp {0.0.0 0.0.1 0.0.2 0.0.3}   ;# hier address to be used for wireless
                                     ;# domain
set BS(0) [$ns_ node [lindex $temp 0]]
$BS(0) color "red"
$BS(0) random-motion 0               ;# disable random motion

#provide some co-ord (fixed) to base station node
$BS(0) set X_ [expr $opt(x)/2]
$BS(0) set Y_ [expr $opt(y)/2]
$BS(0) set Z_ 0.0

# create mobilenodes in the same domain as BS(0)  
# note the position and movement of mobilenodes is as defined
# in $opt(sc)

#configure for mobilenodes
$ns_ node-config -wiredRouting OFF

for {set j 0} {$j < $opt(nn)} {incr j} {
    set node_($j) [ $ns_ node [lindex $temp \
            [expr $j+1]] ]
    $node_($j) base-station [AddrParams addr2id \
            [$BS(0) node-addr]]
}

# setup TCP connections
set tcp0 [new Agent/TCP]
$tcp0 set class_ 2
set sink_bs [new Agent/TCPSink]
$ns_ attach-agent $node_(0) $tcp0
$ns_ attach-agent $BS(0) $sink_bs
$ns_ connect $tcp0 $sink_bs
set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp0
$ns_ at $opt(ftp1-start) "$ftp1 start"

set tcp2 [new Agent/TCP]
$tcp2 set class_ 2
set sink_n2 [new Agent/TCPSink]
$ns_ attach-agent $BS(0) $tcp2
$ns_ attach-agent $node_(2) $sink_n2
$ns_ connect $tcp2 $sink_n2
set ftp2 [new Application/FTP]
$ftp2 attach-agent $tcp2
$ns_ at $opt(ftp2-start) "$ftp2 start"

set mproto DM
set mrthandle [$ns_ mrtproto $mproto {}]
set group0 [Node allocaddr]

set udp1 [new Agent/UDP]
$udp1 set dst_addr_ $group0
$udp1 set dst_port_ 0
$udp1 set class_ 1
$ns_ attach-agent $BS(0) $udp1
set cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp1

set sink_n1 [new Agent/LossMonitor]
$ns_ attach-agent $node_(1) $sink_n1
#$ns_ connect $udp1 $sink_n1

$ns_ at 20.0 "$node_(1) join-group $sink_n1 $group0"
$ns_ at 50.0 "$node_(1) leave-group $sink_n1 $group0"
$ns_ at 75.0 "$node_(1) join-group $sink_n1 $group0"

$ns_ at 0.0 "$cbr1 start"

#Start logging the received bandwidth
$ns_ at 0.0 "record"

# source connection-pattern and node-movement scripts
if { $opt(cp) == "" } {
        puts "*** NOTE: no connection pattern specified."
        set opt(cp) "none"
} else {
        puts "Loading connection pattern..."
        source $opt(cp)
}
if { $opt(sc) == "" } {
        puts "*** NOTE: no scenario file specified."
        set opt(sc) "none"
} else {
        puts "Loading scenario file..."
        source $opt(sc)
        puts "Load complete..."
}

# Define initial node position in nam

for {set i 0} {$i < $opt(nn)} {incr i} {

    # 20 defines the node size in nam, must adjust it according to your
    # scenario
    # The function must be called after mobility model is defined

    $ns_ initial_node_pos $node_($i) 9
}     

# Tell all nodes when the simulation ends
for {set i } {$i < $opt(nn) } {incr i} {
    $ns_ at $opt(stop).0 "$node_($i) reset";
}
$ns_ at $opt(stop).0 "$BS(0) reset";

$ns_ at $opt(stop).0002 "puts \"NS EXITING...\" ; $ns_ halt"
$ns_ at $opt(stop).0001 "stop"

# informative headers for CMUTracefile
puts $tracefd "M 0.0 nn $opt(nn) x $opt(x) y $opt(y) rp \
        $opt(adhocRouting)"
puts $tracefd "M 0.0 sc $opt(sc) cp $opt(cp) seed $opt(seed)"
puts $tracefd "M 0.0 prop $opt(prop) ant $opt(ant)"

puts "Starting Simulation..."
$ns_ run

-------------
Ns-2 errors
-------------

[EMAIL PROTECTED] 1_lbp]# ns lbp_mc.tcl
num_nodes is set 4
warning: Please use -channel as shown in tcl/ex/wireless-mitf.tcl
INITIALIZE THE LIST xListHead
invalid command name "(null)"
    while executing
"[$self set classifier_] install $dst $target"
    (procedure "_o21" line 3)
    (RtModule add-route line 3)
    invoked from within
"$rtnotif_ add-route $dst $target"
    (procedure "_o20" line 5)
    (Node add-route line 5)
    invoked from within
"$self add-route $address_ $dmux_"
    (procedure "_o20" line 8)
    (Node attach line 8)
    invoked from within
"$node attach $ragent [Node set rtagent_port_]"
    (procedure "_o3" line 72)
    (Simulator create-wireless-node line 72)
    invoked from within
"_o3 create-wireless-node 0.0.0"
    ("eval" body line 1)
    invoked from within
"eval $self create-wireless-node $args"
    (procedure "_o3" line 23)
    (Simulator node line 23)
    invoked from within
"$ns_ node [lindex $temp 0]"
    invoked from within
"set BS(0) [$ns_ node [lindex $temp 0]]"
    (file "lbp_mc.tcl" line 131)

Reply via email to