[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Error in BST.tcl



Abdelhamid,

This is a bug with the BST code.  I'll look into it.

Nader

Abdelhamid> Hi,
Abdelhamid> I am trying to use  using ~ns/tcl/mcast/BST.tcl. I figured
Abdelhamid> out that if a node belonging to the tree and was passed by
Abdelhamid> a prune message, the can't join the tree anymore. The test
Abdelhamid> used in "BST join-group" don't allow the propagation of
Abdelhamid> the message. 
Abdelhamid> 
Abdelhamid> Here is a sample script where we can see the problem :
Abdelhamid> ## After the prune passed node 1 and 4, they can't join
Abdelhamid> anymore 
Abdelhamid> 
Abdelhamid> 
Abdelhamid> ## Simple Bi-directional Shared Tree multicast test
Abdelhamid> # on a binary tree
Abdelhamid> 
Abdelhamid> set ns [new Simulator -multicast on]
Abdelhamid> 
Abdelhamid> set f [open out-mc8.tr w]
Abdelhamid> $ns trace-all $f
Abdelhamid> set nf [open out-mc8.nam w]
Abdelhamid> $ns namtrace-all $nf
Abdelhamid> 
Abdelhamid> set degree 2 ;#binary
Abdelhamid> set depth  4 ;
Abdelhamid> set n(0) [$ns node]
Abdelhamid> set nidx 1
Abdelhamid> for {set l 1} {$l<$depth} {incr l} {
Abdelhamid> 	set nodes_at_level [expr pow($degree, $l)]
Abdelhamid> 	for {set k 1} {$k <= $nodes_at_level} {incr k} {
Abdelhamid> 		#create new node
Abdelhamid> 		eval set n($nidx) [$ns node]
Abdelhamid> 		#link it to the parent
Abdelhamid> 		set p [expr ($nidx - 1)/$degree]
Abdelhamid> 		$ns duplex-link $n($p) $n($nidx) 1.5Mb [expr $depth*10/pow(2,$l)]ms 
Abdelhamid> DropTail
Abdelhamid> 		#orient the link
Abdelhamid> 		# parent p has children [$p*$degree+1..($p+1)*$degree]
Abdelhamid> 		# so middle point is $p*$degree+($degree+1)/2
Abdelhamid> 		set mp [expr $p*$degree + ($degree+1)/2.0]
Abdelhamid> 		if {$nidx < $mp} {
Abdelhamid> 			set orientation "left-down"
Abdelhamid> 		} elseif {$nidx > $mp } {
Abdelhamid> 			set orientation "right-down"
Abdelhamid> 		} else {
Abdelhamid> 			set orientation "down"
Abdelhamid> 		}
Abdelhamid> 		$ns duplex-link-op $n($p) $n($nidx) orient $orientation
Abdelhamid> #		$ns duplex-link-op $n($p) $n($nidx) queuePos [expr 1/pow($degree, $l)]
Abdelhamid> 
Abdelhamid> 		#attach senders
Abdelhamid> 		set cbr($nidx) [new Agent/CBR]
Abdelhamid> 		$cbr($nidx) set dst_ 0x8003
Abdelhamid> 		$cbr($nidx) set class_ [expr 100 + $nidx]
Abdelhamid> 		$cbr($nidx) set interval_ 20ms
Abdelhamid> 		$ns attach-agent $n($nidx) $cbr($nidx)
Abdelhamid> 
Abdelhamid> 		#attach receivers
Abdelhamid> 		set rcvr($nidx) [new Agent/Null]
Abdelhamid> 		$ns attach-agent $n($nidx) $rcvr($nidx)
Abdelhamid> 
Abdelhamid> 		incr nidx
Abdelhamid> 	}
Abdelhamid> }
Abdelhamid> 
Abdelhamid> ### Start multicast configuration:
Abdelhamid> source BST.tcl
Abdelhamid> 
Abdelhamid> BST set RP_([expr 0x8003]) $n(0)
Abdelhamid> 
Abdelhamid> 
Abdelhamid> set mproto BST
Abdelhamid> set mrthandle [$ns mrtproto $mproto {}]
Abdelhamid> ### End of multicast configuration
Abdelhamid> 
Abdelhamid> $ns color 103 Navy      ;#cbrs
Abdelhamid> $ns color 105 BlueViolet
Abdelhamid> 
Abdelhamid> $ns color 30 purple   ;#grafts
Abdelhamid> $ns color 31 green    ;#prunes
Abdelhamid> 
Abdelhamid> $n(0) color blue        ;#RP
Abdelhamid> 
Abdelhamid> $n(0) color Navy
Abdelhamid> $n(3) color BlueViolet
Abdelhamid> 
Abdelhamid> #$ns at 0    "$cbr(3) start"
Abdelhamid> $ns at 0.05 "$cbr(5) start"
Abdelhamid> $ns at 0.3  "$n(4) join-group   $rcvr(4) 0x8003"
Abdelhamid> $ns at 0.3  "$n(6) join-group   $rcvr(6) 0x8003"
Abdelhamid> $ns at 0.4  "$n(4) leave-group  $rcvr(4) 0x8003"
Abdelhamid> $ns at 0.5  "$n(6) leave-group  $rcvr(6) 0x8003"
Abdelhamid> 
Abdelhamid> # These joins won't take effect ???
Abdelhamid> $ns at 0.6  "$n(4) join-group   $rcvr(4) 0x8003"
Abdelhamid> $ns at 0.6  "$n(1) join-group   $rcvr(1) 0x8003"
Abdelhamid> 
Abdelhamid> $ns at 1.0 "finish"
Abdelhamid> 
Abdelhamid> proc finish {} {
Abdelhamid>         global ns
Abdelhamid>         $ns flush-trace
Abdelhamid> 
Abdelhamid>         puts "running nam..."
Abdelhamid>         exec nam out-mc8 &
Abdelhamid>         exit 0
Abdelhamid> }
Abdelhamid> 
Abdelhamid> $ns run
Abdelhamid> 
Abdelhamid> 
Abdelhamid> Anyone knows how to deal with this?
Abdelhamid> 
Abdelhamid> Thanks,
Abdelhamid> Abdelhamid JOUMDANE
Abdelhamid> 
Abdelhamid> ______________________________________________________
Abdelhamid> Get Your Private, Free Email at http://www.hotmail.com
Abdelhamid>