A Practical Guide to Linux Traffic Control

Jason Boxman

Revision History
Revision 1.012005-02-15Revised by: jab
Added subsection for flow discovery and prio qdisc text edit
Revision 1.02004-11-30Revised by: jab
Rewrote scenarios section with corrected examples; Added basic information on u32 selector
Revision 0.952004-11-11Revised by: jab
Added section covering monitoring and graphing for traffic control configurations
Revision 0.902004-10-30Revised by: jab
Inserted graphics for class structure explanation; Added information about classful tbf qdisc
Revision 0.872004-10-23Revised by: jab
Corrected and clarified class structure examples; corrected a URL
Revision 0.862004-10-07Revised by: jab
Updated kernel configuration information for 2.6.9
Revision 0.852004-09-28Revised by: jab
Clarified some points; Emphasized key terms
Revision 0.812004-08-21Revised by: jab
More grammatic corrections; Fixed an erroneous example
Revision 0.82004-08-02Revised by: jab
Checked spelling and grammatic corrections
Revision 0.72004-07-13Revised by: jab
Added scenarios
Revision 0.62004-06-30Revised by: jab
Added more notes to marking section; introduced kernel tuning options
Revision 0.52004-06-22Revised by: jab
Converted to DocBook XML; Added information on marking traffic flows

An overview discussion of basic traffic control on Linux for the experienced systems administrator. The core concepts are touched on briefly to get the reader up to speed quickly. Functional configurations and practical examples are presented to avoid common issues by providing solutions.


Table of Contents
1. Introduction
1.1. Intended Audience
1.2. Copyright and License
1.3. Disclaimer
1.4. Feedback
1.5. New Versions of this Document
1.6. Credits
2. Introduction to QoS
2.1. What is QoS?
2.2. Traffic Control Overview
3. Linux Traffic Control
3.1. The Qdisc
3.2. Hooks
4. Class Structure Revealed
4.1. A Classless qdisc
4.2. A Classful qdisc
4.3. A Combined Example
4.4. Displaying qdisc and class Details
5. An Overview of Common qdiscs
5.1. Classless qdiscs
5.2. Classful qdiscs
6. Classifying Flows
6.1. Using tc and the u32 selector
6.2. Using the Netfilter CLASSIFY Target
6.3. Using the Netfilter MARK Target
6.4. Using the L7 Filter Netfilter Module
7. Building a QoS Ready Kernel
7.1. Kernel Options for Traffic Control Support
7.2. Kernel Options for Netfilter Support
7.3. Kernel Source Changes
8. A Traffic Control Journey: Real World Scenarios
8.1. Common Traffic Control Situations
8.2. Guaranteeing Rate
8.3. Guaranteeing Priority
9. Graphing and Monitoring Traffic Control
9.1. Discovering Traffic Flows
9.2. Graphing Your Traffic Control Hierarchy
9.3. Monitoring Leaf qdisc Bandwidth Utilization
10. Suggested Reading for Further Study