trace-{topo|tree} functional?

Lloyd Wood Lloyd Wood <L.Wood@surrey.ac.uk>
Mon, 7 Sep 1998 16:44:26 +0100 (BST)


I'm having trouble with the code in sections 16.1 and 16.1.1 on page
115 of the ns docs, edition of 31 Aug 1998. 

I've had to make some obvious alterations: in 16.1, period_ is set
to 0.02, but the comment and output file format say it is really
0.03;  the code creates node0 and node1, but then erroneously refers
to $n0 and $n1 when setting up the duplex link. 

I've tested the code with both ns 2.1b3 and a very recent daily snapshot.
Using $mcastmonitor trace-tree _almost_ works -

0.029999999999999999 0 0 0 0 _o46 1073741824
0.059999999999999998 0 0 0 0 _o46 1073741824

the _o46 suggests that it's not picking up on the udp source properly,
but I'm not sure why. (What would I connect the udp source agent to?)

When trace-topo is used instead of trace-tree, I get the following
more serious error-from-the-same-problem with both versions of ns:

can't read "prune_(_o46:1073741824:1:0)": no such element in array
    while executing
"incr prune $prune_($source:$group:$from:$to)"
    (procedure "_o48" line 11)
    (McastMonitor print-trace line 11)
    invoked from within
"$self print-trace $source $group"
    (procedure "_o48" line 8)
    (McastMonitor trace-topo line 8)
    invoked from within
"$mcastmonitor trace-topo $src $group"
    (file "testmcast.tcl" line 32)


Any ideas or obvious pointers? I'm stumped. My version of the code is
below.


Also, if I disable Node expandaddr as probably not needed here
for a single group: 

0.029999999999999999 0 0 0 0 _o43 0x8000

group output switches to hex? Is Node expandaddr mandatory for
multicast?

thanks,

L.

<http://www.ee.surrey.ac.uk/Personal/L.Wood/>PGP<L.Wood@surrey.ac.uk>
------------->8-------------------

set ns [new Simulator] 
Simulator set EnableMcast_ 1       ;# enable multicast routing
Node expandaddr                    ;# probably not needed here?
 
set group [Node allocaddr]         ;# allocate a multicast address
set node0 [$ns node]               ;# create multicast-capable nodes
set node1 [$ns node]
Simulator set NumberInterfaces_ 1  ;# number of interfaces for all links
$ns duplex-link $node0 $node1 1.5Mb 10ms DropTail
                                   ;# create links with interfaces
set mproto dynamicDM               ;# configure multicast protocol
set mrthandle [$ns mrtproto $mproto {}]
 ;# if an empty list is given, all nodes will contain multicast
  # protocol agents
 
set udp [new Agent/UDP]           ;# create a udp source agent
set src [new Application/Traffic/CBR]
$src attach-agent $udp
$udp set dst_ $group

$ns attach-agent $node0 $udp      ;# and attach it to node 0
 
set rcvr [new Agent/LossMonitor] ;# create a receiver agent at node 1 
$ns attach-agent $node1 $rcvr
$ns at 0.3 "$node1 join-group $rcvr $group"
 ;# join the group at simulation time 0.3 (sec)

set mcastmonitor [$ns McastMonitor]
$mcastmonitor set period_ 0.03  ;# default 0.03 (sec)
 
# trace-tree almost works
# $mcastmonitor trace-tree $src $group
 
# but the alternative trace-topo fails entirely!
$mcastmonitor trace-topo $src $group
 
$ns run