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

Q: understanding classifiers



Trying to understand node, classifiers and link I looked at the object
structure after setting up the following topologie:

	set ns [new Simulator]
	set n0 [$ns node]
	set n1 [$ns node]
	$ns duplex-link $n0 $n1 10Mb 10ms DropTail
	set udp [new Agent/UDP]
	set null [new Agent/Null]
	$ns attach-agent $n0 $udp
	$ns attach-agent $n1 $null
	$ns connect $udp $null

The addresses of $udp and $null are what I expected:

	% $udp set addr_
	0
	% $null set addr_
	256

I thought the classifier at node $n0 should have an entry in its
slots_ array pointing to the link from $n0 to $n1 but


	% set c0 [$n0 set classifier_]
	_o12
	% $c0 dump
	classifier _o12
		0 offset
		8 shift
		127 mask
		1 slots
			slot 0: _o29
	% _o29 dump
	classifier _o29
		0 offset
		0 shift
		255 mask
		1 slots
			slot 0: _o27
	% puts $udp
	_o27

but surprinsingly the classifier at $n0 only has an entry pointing to
another classifier _o29 which in turn only has one slot pointing back
to $udp.

The classifier $c0 has shift_ == 8 and mask_ == 127, i.e. when sending
a packet to

	% $udp set dst_
	256

which is the correct address of $null, the classifier $c0 calculates
slot number (256 >> 8) & 127 which results in 1.  However, $c0 has no
entry in slot_[1].  In the C++ code there is a default_target_ in
class Classifier.  Is this used here?  Can its value be accessed from
Tcl somehow without changing the ns source?


urs