.TH CBQ 8 "8 December 2001" "iproute2" "Linux"
.SH NAME
CBQ \- Class Based Queueing
.SH SYNOPSIS
.B tc qdisc ... dev
dev
.B  ( parent
classid 
.B | root) [ handle 
major: 
.B ] cbq avpkt
bytes
.B bandwidth
rate
.B [ cell 
bytes
.B ] [ ewma
log
.B ] [ mpu
bytes
.B ] 

.B tc class ... dev
dev
.B parent 
major:[minor]
.B [ classid 
major:minor
.B ] cbq allot
bytes
.B [ bandwidth 
rate 
.B ] [ rate 
rate
.B ] prio
priority
.B [ weight
weight
.B ] [ minburst 
packets
.B ] [ maxburst 
packets 
.B ] [ ewma 
log
.B ] [ cell
bytes
.B ] avpkt
bytes
.B [ mpu
bytes 
.B ] [ bounded isolated ] [ split
handle
.B & defmap
defmap
.B ] [ estimator 
interval timeconstant
.B ]

.SH DESCRIPTION
Class Based Queueing is a classful qdisc that implements a rich
linksharing hierarchy of classes.  It contains shaping elements as
well as prioritizing capabilities.  Shaping is performed using link
idle time calculations based on the timing of dequeue events and 
underlying link bandwidth.

.SH SHAPING ALGORITHM
Shaping is done using link idle time calculations, and actions taken if
these calculations deviate from set limits.

When shaping a 10mbit/s connection to 1mbit/s, the link will
be idle 90% of the time. If it isn't, it needs to be throttled so that it
IS idle 90% of the time.

From the kernel's perspective, this is hard to measure, so CBQ instead 
derives the idle time from the number of microseconds (in fact, jiffies) 
that elapse between  requests from the device driver for more data. Combined 
with the  knowledge of packet sizes, this is used to approximate how full or 
empty the link is.

This is rather circumspect and doesn't always arrive at proper
results. For example, what is the actual link speed of an interface
that is not really able to transmit the full 100mbit/s of data,
perhaps because of a badly implemented driver? A PCMCIA network card
will also never achieve 100mbit/s because of the way the bus is
designed - again, how do we calculate the idle time?

The physical link bandwidth may be ill defined in case of not-quite-real 
network devices like PPP over Ethernet or PPTP over TCP/IP. The effective 
bandwidth in that case is probably determined by the efficiency of pipes 
to userspace - which not defined.

During operations, the effective idletime is measured using an
exponential weighted moving average (EWMA), which considers recent
packets to be exponentially more important than past ones. The Unix
loadaverage is calculated in the same way.

The calculated idle time is subtracted from the EWMA measured one,
the resulting number is called 'avgidle'. A perfectly loaded link has
an avgidle of zero: packets arrive exactly at the calculated
interval.

An overloaded link has a negative avgidle and if it gets too negative,
CBQ throttles and is then 'overlimit'.

Conversely, an idle link might amass a huge avgidle, which would then
allow infinite bandwidths after a few hours of silence. To prevent
this, avgidle is capped at 
.B maxidle.

If overlimit, in theory, the CBQ could throttle itself for exactly the
amount of time that was calculated to pass between packets, and then
pass one packet, and throttle again. Due to timer resolution constraints,
this may not be feasible, see the 
.B minburst
parameter below.

.SH CLASSIFICATION
Within the one CBQ instance many classes may exist. Each of these classes
contains another qdisc, by default 
.BR tc-pfifo (8).

When enqueueing a packet, CBQ starts at the root and uses various methods to 
determine which class should receive the data. If a verdict is reached, this
process is repeated for the recipient class which might have further
means of classifying traffic to its children, if any.

CBQ has the following methods available to classify a packet to any child 
classes.
.TP
(i)
.B skb->priority class encoding.
Can be set from userspace by an application with the 
.B SO_PRIORITY
setsockopt.
The 
.B skb->priority class encoding
only applies if the skb->priority holds a major:minor handle of an existing 
class within  this qdisc.
.TP
(ii)
tc filters attached to the class.
.TP
(iii)
The defmap of a class, as set with the 
.B split & defmap
parameters. The defmap may contain instructions for each possible Linux packet
priority.

.P
Each class also has a 
.B level.
Leaf nodes, attached to the bottom of the class hierarchy, have a level of 0.
.SH CLASSIFICATION ALGORITHM

Classification is a loop, which terminates when a leaf class is found. At any 
point the loop may jump to the fallback algorithm.

The loop consists of the following steps:
.TP 
(i)
If the packet is generated locally and has a valid classid encoded within its
.B skb->priority,
choose it and terminate.

.TP
(ii)
Consult the tc filters, if any, attached to this child. If these return
a class which is not a leaf class, restart loop from the class returned.
If it is a leaf, choose it and terminate.
.TP
(iii)
If the tc filters did not return a class, but did return a classid, 
try to find a class with that id within this qdisc. 
Check if the found class is of a lower
.B level
than the current class. If so, and the returned class is not a leaf node,
restart the loop at the found class. If it is a leaf node, terminate.
If we found an upward reference to a higher level, enter the fallback 
algorithm.
.TP
(iv)
If the tc filters did not return a class, nor a valid reference to one,
consider the minor number of the reference to be the priority. Retrieve
a class from the defmap of this class for the priority. If this did not
contain a class, consult the defmap of this class for the 
.B BEST_EFFORT
class. If this is an upward reference, or no 
.B BEST_EFFORT 
class was defined,
enter the fallback algorithm. If a valid class was found, and it is not a
leaf node, restart the loop at this class. If it is a leaf, choose it and 
terminate. If
neither the priority distilled from the classid, nor the 
.B BEST_EFFORT 
priority yielded a class, enter the fallback algorithm.
.P
The fallback algorithm resides outside of the loop and is as follows.
.TP
(i)
Consult the defmap of the class at which the jump to fallback occured. If 
the defmap contains a class for the 
.B
priority
of the class (which is related to the TOS field), choose this class and 
terminate. 
.TP
(ii)
Consult the map for a class for the
.B BEST_EFFORT
priority. If found, choose it, and terminate.
.TP
(iii)
Choose the class at which break out to the fallback algorithm occurred. Terminate.
.P
The packet is enqueued to the class which was chosen when either algorithm 
terminated. It is therefore possible for a packet to be enqueued *not* at a
leaf node, but in the middle of the hierarchy.

.SH LINK SHARING ALGORITHM
When dequeuing for sending to the network device, CBQ decides which of its 
classes will be allowed to send. It does so with a Weighted Round Robin process
in which each class with packets gets a chance to send in turn. The WRR process
starts by asking the highest priority classes (lowest numerically - 
highest semantically) for packets, and will continue to do so until they
have no more data to offer, in which case the process repeats for lower 
priorities.

.B CERTAINTY ENDS HERE, ANK PLEASE HELP

Each class is not allowed to send at length though - they can only dequeue a
configurable amount of data during each round. 

If a class is about to go overlimit, and it is not
.B bounded
it will try to borrow avgidle from siblings that are not
.B isolated. 
This process is repeated from the bottom upwards. If a class is unable
to borrow enough avgidle to send a packet, it is throttled and not asked
for a packet for enough time for the avgidle to increase above zero.

.B I REALLY NEED HELP FIGURING THIS OUT. REST OF DOCUMENT IS PRETTY CERTAIN
.B AGAIN.

.SH QDISC
The root qdisc of a CBQ class tree has the following parameters:

.TP 
parent major:minor | root
This mandatory parameter determines the place of the CBQ instance, either at the
.B root
of an interface or within an existing class.
.TP
handle major:
Like all other qdiscs, the CBQ can be assigned a handle. Should consist only
of a major number, followed by a colon. Optional.
.TP
avpkt bytes
For calculations, the average packet size must be known. It is silently capped
at a minimum of 2/3 of the interface MTU. Mandatory.
.TP
bandwidth rate
To determine the idle time, CBQ must know the bandwidth of your underlying 
physical interface, or parent qdisc. This is a vital parameter, more about it
later. Mandatory.
.TP
cell
The cell size determines he granularity of packet transmission time calculations. Has a sensible default.
.TP 
mpu
A zero sized packet may still take time to transmit. This value is the lower
cap for packet transmission time calculations - packets smaller than this value
are still deemed to have this size. Defaults to zero.
.TP
ewma log
When CBQ needs to measure the average idle time, it does so using an 
Exponentially Weighted Moving Average which smoothes out measurements into
a moving average. The EWMA LOG determines how much smoothing occurs. Defaults 
to 5. Lower values imply greater sensitivity. Must be between 0 and 31.
.P
A CBQ qdisc does not shape out of its own accord. It only needs to know certain
parameters about the underlying link. Actual shaping is done in classes.

.SH CLASSES
Classes have a host of parameters to configure their operation.

.TP 
parent major:minor
Place of this class within the hierarchy. If attached directly to a qdisc 
and not to another class, minor can be omitted. Mandatory.
.TP 
classid major:minor
Like qdiscs, classes can be named. The major number must be equal to the
major number of the qdisc to which it belongs. Optional, but needed if this 
class is going to have children.
.TP 
weight weight
When dequeuing to the interface, classes are tried for traffic in a 
round-robin fashion. Classes with a higher configured qdisc will generally
have more traffic to offer during each round, so it makes sense to allow
it to dequeue more traffic. All weights under a class are normalized, so
only the ratios matter. Defaults to the configured rate, unless the priority 
of this class is maximal, in which case it is set to 1.
.TP 
allot bytes
Allot specifies how many bytes a qdisc can dequeue
during each round of the process. This parameter is weighted using the 
renormalized class weight described above.

.TP 
priority priority
In the round-robin process, classes with the lowest priority field are tried 
for packets first. Mandatory.

.TP 
rate rate
Maximum rate this class and all its children combined can send at. Mandatory.

.TP
bandwidth rate
This is different from the bandwidth specified when creating a CBQ disc. Only
used to determine maxidle and offtime, which are only calculated when
specifying maxburst or minburst. Mandatory if specifying maxburst or minburst.

.TP 
maxburst
This number of packets is used to calculate maxidle so that when
avgidle is at maxidle, this number of average packets can be burst
before avgidle drops to 0. Set it higher to be more tolerant of
bursts. You can't set maxidle directly, only via this parameter.

.TP
minburst 
As mentioned before, CBQ needs to throttle in case of
overlimit. The ideal solution is to do so for exactly the calculated
idle time, and pass 1 packet. However, Unix kernels generally have a
hard time scheduling events shorter than 10ms, so it is better to
throttle for a longer period, and then pass minburst packets in one
go, and then sleep minburst times longer.

The time to wait is called the offtime. Higher values of minburst lead
to more accurate shaping in the long term, but to bigger bursts at
millisecond timescales.

.TP
minidle
If avgidle is below 0, we are overlimits and need to wait until
avgidle will be big enough to send one packet. To prevent a sudden
burst from shutting down the link for a prolonged period of time,
avgidle is reset to minidle if it gets too low.

Minidle is specified in negative microseconds, so 10 means that
avgidle is capped at -10us.

.TP
bounded 
Signifies that this class will not borrow bandwidth from its siblings.
.TP 
isolated
Means that this class will not borrow bandwidth to its siblings

.TP 
split major:minor & defmap bitmap[/bitmap]
If consulting filters attached to a class did not give a verdict, 
CBQ can also classify based on the packet's priority. There are 16
priorities available, numbered from 0 to 15. 

The defmap specifies which priorities this class wants to receive, 
specified as a bitmap. The Least Significant Bit corresponds to priority 
zero. The 
.B split
parameter tells CBQ at which class the decision must be made, which should
be a (grand)parent of the class you are adding.

As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0'
configures class 10:0 to send packets with priorities 6 and 7 to 10:1.

The complimentary configuration would then 
be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f'
Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1.
.TP
estimator interval timeconstant
CBQ can measure how much bandwidth each class is using, which tc filters
can use to classify packets with. In order to determine the bandwidth
it uses a very simple estimator that measures once every
.B interval
microseconds how much traffic has passed. This again is a EWMA, for which
the time constant can be specified, also in microseconds. The 
.B time constant
corresponds to the sluggishness of the measurement or, conversely, to the 
sensitivity of the average to short bursts. Higher values mean less
sensitivity. 



.SH SOURCES
.TP
o
Sally Floyd and Van Jacobson, "Link-sharing and Resource
Management Models for Packet Networks",
IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995

.TP 
o
Sally Floyd, "Notes on CBQ and Guarantee Service", 1995

.TP
o
Sally Floyd, "Notes on Class-Based Queueing: Setting
Parameters", 1996

.TP 
o
Sally Floyd and Michael Speer, "Experimental Results
for Class-Based Queueing", 1998, not published.



.SH SEE ALSO
.BR tc (8)

.SH AUTHOR
Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>. This manpage maintained by
bert hubert <ahu@ds9a.nl>


