On Tuesday 04 February 2003 07:06, Rob Pitman wrote:> Hi,
>
> I am a newbie to LARTC and to this mailing-list. I have read through the
> Linux Advanced Routing & Traffic Control HOWTO many times, trying to
> understand Classful Queueing Disciplines (and in particular CBQ). I have
> some suggestions that I think will help to make the HOWTO more
> understandable.
>
> Suggestions
> ========> (1)
> In section 9.4 (Terminology) the definition for "Classes" states
that:
>
> "A classful qdisc may have many classes, which each are internal to
the
> qdisc. Each of these classes may contain a real qdisc".
>
> As far as I can understand, each class can actually contain one _or more_
> qdiscs. Furthermore, (at least in the case of CBQ) a class may also contain
> one or more _classes_ (this really puzzled me. But the HOWTO''s
example of a
> CBQ configuration, and a reading of /usr/src/linux-2.4/net/sched/sch_cbq.c
> appear to indicate this).
Each class has __one__ qdisc attached to it. If you create a class, a fifo
qdisc is attached. But you can replace it with something else if you want.
A class can''t send the data it contains. That''s why you need
a qdisc.
Also, you can''t add a qdisc to a non-leaf class. (a leaf class is a
class
with no children). You can add a qdisc, but if you add a child class, the
qdisc is removed.
> (2)
> In section 9.5.2 ("The qdisc family: roots, handles, siblings and
> parents"), the HOWTO does not really make clear the fact that some of
the
> nodes in the tree are qdiscs, and some nodes are classes. In particular,
> the "ASCII-art" diagram does not show this; it just shows a bunch
of nodes
> with handles. As I understand it, the diagram should be as follows (please
> tell me if I am wrong).
>
>
> 1: root qdisc
>
> 1:1 class (child of root qdisc)
> --|--
> / | \
> / | \
> / | \
> / | \
> 10: 11: 12: qdiscs contained in 1:1 class
> / \ / \
> 10:1 10:2 12:1 12:2 classes (children of qdiscs)
Not really. The ascii drawing is wrong.
It should look like this :
root 1:
|
_1:1_
/ | \
/ | \
1:10 1:11 1:12
| | |
10: 11: 12:
/ \ / \
10:1 10:2 12:1 12:2
> Section 9.5.2, paragraph 2 says "The handles of these qdiscs consist
of two
> parts...". The text does not explicitly say that _classes_ are also
> assigned handles in the same way (that only became apparent after reading
> the HOWTO several times).
The line should be "The handles of these qdisc and classes consists of two
parts : <major number>:<minor number>"
> Section 9.5.2 paragraph 3 says "Classes need to have the same major
number
> as their parent". Shouldn''t this be changed to "Classes
need to have the
> same major number as their parent _qdisc_"?
No. Class. A class can have an other class as parent.
Better would be: "Class need to have the same major number as their
parent."
> (3)
> Section 9.5.2.2 paragraph 1 says "When the kernel decides that it
needs to
> extract packets to send to the interface, the root qdisc 1: gets a dequeue
> request, which is passed to 1:1, which is in turn passed to 10:, 11: and
> 12: ..".
>
> I think it would be clearer if this was changed to "....which is
passed to
> the 1:1 class, which is in turn passed to the 10:, 11: and 12:
qdiscs...".
> (4)
> Section 9.5.3 ("The PRIO qdisc") has a spelling mistake in
paragraph 4: "It
> can also contain more all qdiscs...". I think this should be "It
can also
> contain almost all qdiscs...". (I know this is rather nitpicky).
Better : "You can add an other qdisc to the 3 predefined classes."
> (5)
> Section 9.5.3.2 ("Sample configuration") has another ASCII-art
diagram
> where it would be clearer if the nodes were labelled as being either qdiscs
> or classes. Node 1: is the root qdisc; nodes 1:1, 1:2 and 1:3 are classes;
> nodes 10:, 20: and 30: are qdiscs.
Qdiscs are always x: or x:0. See 9.5.2 paragraph 2.
> (6)
> Section 9.5.4.2 ("CBQ classful behaviour") paragraph 2: the
phrase "lower
> priority classes" should, I believe, be "lower-numbered priority
classes"
> (because lower-numbered means higher-priority). The same applies in the
> paragraph that describes the prio parameter.
Indeed. Lower prio means higher priority.
> (7)
> Section 9.5.4.4 ("Sample configuration") really took many
re-readings to
> understand, and I''m still not sure I do understand. An ASCII-art
diagram
> would really help here, showing which nodes are qdiscs and which are
> classes.
root 1:
|
_1:1_
/ \
1:3 1:4
| |
sfq sfq
> The second paragraph starts "This part installs the root node and the
> customary 1:0 class". I think this is an error, it should be the 1:1
class,
> not the 1:0 class.
Indeed
> A bit lower down, the HOWTO shows the commands to add classes 1:3 and 1:4.
> My understanding is that these two _classes_ are being added to the parent
> _class_ 1:1, is this right? This part was confusing, because in previous
> examples _classes_ were added to a parent _qdisc_, or _qdiscs_ were added
> to a parent _class_. This is the first place where _classes_ are added to a
> parent _class_. That''s why I suggested (above) that the definition
of a
> class be changed to make it clear that a class can contain other classes,
> not only qdiscs.
>
> In the next paragraph the HOWTO says "These are our two classes".
But there
> are actually three classes in the configuration.
Yes. But only 2 classes are leaf classes so they are the only classes who can
actually send data.
> In the same paragraph, the last sentence reads "The classids need to
be
> within the same major number as the parent CBQ". I think this should
be
>
> "The classids need to have the same major number as the parent
qdisc"
Indeed.
> because it it not clear (except by re-reading a few times) that these two
> classes have _class_ 1:1 as a parent, which in turn has _qdisc_ 1:0 as a
> parent; so classes 1:3 and 1:4 actually need to have the same major number
> as their _grandparent_ node, which is a qdisc.
>
> A bit lower down, the HOWTO shows the commands to attach some filters
> directly to the root qdisc. May I suggest inserting the following sentence
> just _before_ these commands:
>
> ''Now we attach "filters" to the root qdisc, to send
traffic to the correct
> classes (1:3 and 1:4).''
>
> I hope these suggestions will help to make the HOWTO clearer to the
> uninitiated (like me). Please tell me if I have misunderstood anything.
It was fun :)
Maybe it''s time to reread the pages thru the eyes of a newbie.
Stef
--
stef.coene@docum.org
"Using Linux as bandwidth manager"
http://www.docum.org/
#lartc @ irc.oftc.net
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/