q_cake: Add description of the tc filter override mechanism to man page

Since CAKE now has three different settings that can be overridden by tc
filters (priority and host and flow hashes), documenting how they work is
probably a good idea.

Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
Toke Høiland-Jørgensen 2018-08-23 12:05:05 +02:00 committed by Stephen Hemminger
parent 88ecd4873b
commit 6526e604cf

View File

@ -569,6 +569,61 @@ possible latency. At link speeds higher than 10 Gbps, setting the
no-split-gso parameter can increase the maximum achievable throughput by
retaining the full GSO packets.
.SH OVERRIDING CLASSIFICATION WITH TC FILTERS
CAKE supports overriding of its internal classification of packets through the
tc filter mechanism. Packets can be assigned to different priority tins by
setting the
.B priority
field on the skb, and the flow hashing can be overridden by setting the
.B classid
parameter.
.PP
.B Tin override
.br
To assign a priority tin, the major number of the priority field needs
to match the qdisc handle of the cake instance; if it does, the minor number
will be interpreted as the tin index. For example, to classify all ICMP packets
as 'bulk', the following filter can be used:
.br
# tc qdisc replace dev eth0 handle 1: root cake diffserv3
# tc filter add dev eth0 parent 1: protocol ip prio 1 \\
u32 match icmp type 0 0 action skbedit priority 1:1
.PP
.B Flow hash override
.br
To override flow hashing, the classid can be set. CAKE will interpret
the major number of the classid as the host hash used in host isolation mode,
and the minor number as the flow hash used for flow-based queueing. One or both
of those can be set, and will be used if the relevant flow isolation parameter
is set (i.e., the major number will be ignored if CAKE is not configured in
hosts mode, and the minor number will be ignored if CAKE is not configured in
flows mode).
.br
This example will assign all ICMP packets to the first queue:
.br
# tc qdisc replace dev eth0 handle 1: root cake
# tc filter add dev eth0 parent 1: protocol ip prio 1 \\
u32 match icmp type 0 0 classid 0:1
.br
If only one of the host and flow overrides is set, CAKE will compute the other
hash from the packet as normal. Note, however, that the host isolation mode
works by assigning a host ID to the flow queue; so if overriding both host and
flow, the same flow cannot have more than one host assigned. In addition, it is
not possible to assign different source and destination host IDs through the
override mechanism; if a host ID is assigned, it will be used as both source and
destination host.
.SH EXAMPLES
# tc qdisc delete root dev eth0
.br