1. Introduction to Linux Traffic Control
Linux offers a very rich set of tools for managing and manipulating the
transmission of packets. The larger Linux community is very familiar with
the tools available under Linux for packet mangling and firewalling
(netfilter, and before that, ipchains) as well as hundreds of network
services which can run on the operating system. Few inside the community
and fewer outside the Linux community are aware of the tremendous power of
the traffic control subsystem which has grown and matured under kernels
2.2 and 2.4.
This HOWTO purports to introduce the
concepts of traffic control,
the traditional elements (in general),
the components of the Linux traffic control
implementation and provide some
guidelines
.
This HOWTO represents the collection, amalgamation and synthesis of the
LARTC HOWTO, documentation from individual projects and importantly
the LARTC
mailing list over a period of study.
The impatient soul, who simply wishes to experiment right now, is
recommended to the
Traffic Control using tcng and HTB HOWTO and LARTC HOWTO for
immediate satisfaction.
1.1. Target audience and assumptions about the reader
The target audience for this HOWTO is the network administrator or savvy
home user who desires an introduction to the field of traffic control
and an overview of the tools available under Linux for implementing
traffic control.
I assume that the reader is comfortable with UNIX concepts and the
command line and has a basic knowledge of IP networking. Users who wish
to implement traffic control may require the ability to patch, compile
and install a kernel or software package
. For users with newer kernels
(2.4.20+, see also
Section 5.1), however, the ability to install and use
software may be all that is required.
Broadly speaking, this HOWTO was written with a sophisticated user in
mind, perhaps one who has already had experience with traffic control
under Linux. I assume that the reader may have
no prior traffic control experience.
1.2. Conventions
This text was written in
DocBook
(version 4.2)
with
vim.
All formatting has been applied by
xsltproc based on
DocBook
XSL and
LDP
XSL stylesheets. Typeface formatting and display conventions
are similar to most printed and electronically distributed technical
documentation.
1.3. Recommended approach
I strongly recommend to the eager reader making a first foray into the
discipline of traffic control, to become only casually familiar with the
tc command line utility, before concentrating on tcng. The
tcng software package defines an entire language for describing
traffic control structures.
At first, this language may seem daunting, but mastery of these basics
will quickly provide the user with a much wider ability to employ (and
deploy) traffic control configurations than the direct use of tc
would afford.
Where possible, I'll try to prefer describing the behaviour of
the Linux traffic control system in an abstract manner, although in
many cases I'll need to supply the syntax of one or the other common
systems for defining these structures. I may not supply examples in
both the tcng language and the tc command line, so the wise user
will have some familiarity with both.
1.4. Missing content, corrections and feedback
There is content yet missing from this HOWTO. In particular, the
following items will be added at some point to this documentation.
A description and diagram of GRED, WRR, PRIO
and CBQ.
A section of examples.
A section detailing the classifiers.
A section discussing the techniques for measuring traffic.
A section covering meters.
More details on tcng.
I welcome suggestions, corrections and feedback at <martin@linux-ip.net>. All errors
and omissions are strictly my fault. Although I have made every effort
to verify the factual correctness of the content presented herein, I
cannot accept any responsibility for actions taken under the influence
of this documentation.