From 9be89fd712108502ef312f4f83a29ff116a41ec7 Mon Sep 17 00:00:00 2001 From: "Martin A. Brown" Date: Sat, 13 Feb 2016 00:13:31 -0800 Subject: [PATCH] minor relanguaging --- .../classless-qdiscs.xml | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/LDP/howto/docbook/Traffic-Control-HOWTO/classless-qdiscs.xml b/LDP/howto/docbook/Traffic-Control-HOWTO/classless-qdiscs.xml index f958eea4..60e1b233 100644 --- a/LDP/howto/docbook/Traffic-Control-HOWTO/classless-qdiscs.xml +++ b/LDP/howto/docbook/Traffic-Control-HOWTO/classless-qdiscs.xml @@ -11,9 +11,6 @@ Documentation License (GFDL) through The Linux Documentation Project (TLDP). - This was initially authored while Martin A. Brown worked for - SecurePipe, Inc. - This HOWTO is likely available at the following address: http://tldp.org/HOWTO/Traffic-Control-HOWTO/ @@ -40,7 +37,9 @@ FIFO, First-In First-Out (&sch_pfifo; and &sch_bfifo;) - This is not the default qdisc on Linux interfaces. Be certain to see + Although a FIFO is one of the simplest elements of a queueing system, + neither &sch_pfifo; nor &sch_bfifo; is the default qdisc on Linux + interfaces. Be certain to see for the full details on the default (&sch_pfifo_fast;) qdisc. @@ -48,7 +47,8 @@
<constant>pfifo, bfifo</constant> Algorithm - The FIFO algorithm forms the basis for the default qdisc on all Linux + The FIFO algorithm forms the underlying basis for the default qdisc on + all Linux network interfaces (&link-sch_pfifo_fast;). It performs no shaping or rearranging of packets. It simply transmits packets as soon as it can after receiving and queuing them. This is also the qdisc used inside @@ -187,10 +187,24 @@ $ tc -s qdisc ls dev eth0 Based on a conventional FIFO &linux-qdisc;, this qdisc also provides some prioritization. It provides three different bands (individual FIFOs) for separating traffic. The highest priority traffic (interactive flows) are placed into band 0 and are always serviced first. Similarly, band 1 is always emptied of pending packets before band 2 is dequeued. - The algorithm is very similar to that of the classful tc-prio qdisc. pfifo_fast is like three tc-pfifo queues side by side, where packets can be enqueued in any of the three bands based on their Type of Service bits or assigned priority. Not all three bands are dequeued simultaneously - as long as lower bands have traffic, higher bands are never dequeued. This can be used to prioritize interactive traffic or penalize 'lowest cost' traffic. Each band can be txqueuelen packets long, as configured with ifconfig or ip. Additional packets coming in are not enqueued but are instead dropped. + The algorithm is very similar to that of the classful + prio qdisc. The pfifo_fast qdisc is like + three &sch_pfifo; queues side by side, where an individual packet will + be enqueued in one of the three FIFOs based on its Type of + Service (ToS) bits. + Not all three bands are dequeued simultaneously - as long as + lower-numbered (higher priority) bands have traffic, + higher-numbered bands are never dequeued. This can be used to + prioritize interactive traffic or penalize 'lowest cost' + traffic. Each band can be txqueuelen packets long, as + configured with + ifconfig or + ip. Any additional + packets arriving, once a specific band is full, are not + enqueued but are instead dropped. - See chapter 6.2.3 for complete details on how TOS bits are translated into bands. + See chapter 6.2.3 for complete details on how ToS bits are translated into bands.
@@ -208,7 +222,7 @@ $ tc -s qdisc ls dev eth0 There is nothing configurable to the end user about the pfifo_fast qdisc. This is how it is configured by default: - priomap determines how packet priorities, as assigned by the kernel, map to bands. Mapping occurs based on the TOS octet of the packet, which looks like this: + priomap determines how packet priorities, as assigned by the kernel, map to bands. Mapping occurs based on the ToS octet of the packet, which looks like this: @@ -223,7 +237,7 @@ $ tc -s qdisc ls dev eth0 - The four TOS bits (the 'TOS field') are defined as: + The four ToS bits (the 'ToS field') are defined as: @@ -239,7 +253,7 @@ $ tc -s qdisc ls dev eth0 - As there is 1 bit to the right of these four bits, the actual value of the TOS field is double the value of the TOS bits. Tcpdump -v -v shows you the value of the entire TOS field, not just the four bits. It is the value you see in the first column of this table: + As there is 1 bit to the right of these four bits, the actual value of the ToS field is double the value of the ToS bits. Running tcpdump -v -v shows you the value of the entire ToS field, not just the four bits. It is the value you see in the first column of this table: @@ -255,10 +269,10 @@ $ tc -s qdisc ls dev eth0 - Lots of numbers. The second column contains the value of the relevant four TOS bits, followed by their translated meaning. For example, 15 stands for a packet wanting Minimal Monetary Cost, Maximum Reliability, Maximum Throughput AND Minimum Delay. + Lots of numbers. The second column contains the value of the relevant four ToS bits, followed by their translated meaning. For example, 15 stands for a packet wanting Minimal Monetary Cost, Maximum Reliability, Maximum Throughput AND Minimum Delay. - The fourth column lists the way the Linux kernel interprets the TOS bits, by showing to which Priority they are mapped. + The fourth column lists the way the Linux kernel interprets the ToS bits, by showing to which Priority they are mapped. The last column shows the result of the default priomap. On the command line, the default priomap looks like this: @@ -267,7 +281,7 @@ $ tc -s qdisc ls dev eth0 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1 - This means that priority 4, for example, gets mapped to band number 1. The priomap also allows you to list higher priorities (> 7) which do not correspond to TOS mappings, but which are set by other means. + This means that priority 4, for example, gets mapped to band number 1. The priomap also allows you to list higher priorities (> 7) which do not correspond to ToS mappings, but which are set by other means. Moreover, differently from other non standard qdisc, pfifo_fast does not maintain statistics and does not show up in tc qdisc ls. This is because it is the automatic default in the absence of a configured qdisc.