Contents
Introduction to Linux Traffic Control
- 1.1 Target audience and assumptions about the reader
- 1.2 Conventions
- 1.3 Recommended approach
- 1.4 Missing content, corrections and feedback
Overview of Concepts
- 2.1 What is it?
- 2.2 Why use it?
- 2.3 Advantages
- 2.4 Disdvantages
- 2.5 Queues
- 2.6 Flows
- 2.7 Tokens and buckets
- 2.8 Packets and frames
Traditional Elements of Traffic Control
- 3.1 Shaping
- 3.2 Scheduling
- 3.3 Classifying
- 3.4 Policing
- 3.5 Dropping
- 3.6 Marking
Components of Linux Traffic Control
- 4.1 qdisc
- 4.2 class
- 4.3 filter
- 4.4 classifier
- 4.5 policer
- 4.6 drop
- 4.7 handle
Software and Tools
- 5.1 Kernel requirements
- 5.2 iproute2 tools (tc)
- 5.3 tcng, Traffic Control Next Generation
- 5.4 IMQ, Intermediate Queuing device
Classless Queuing Disciplines (qdiscs)
- 6.1 FIFO, First-In First-Out (pfifo and bfifo)
- 6.2 pfifo_fast, the default Linux qdisc
- 6.3 SFQ, Stochastic Fair Queuing
- 6.4 ESFQ, Extended Stochastic Fair Queuing
- 6.5 GRED, Generic Random Early Drop
- 6.6 TBF, Token Bucket Filter
Classful Queuing Disciplines (qdiscs)
- 7.1 HTB, Hierarchical Token Bucket
- 7.2 HFSC, Hierarchical Fair Service Curve
- 7.3 PRIO, priority scheduler
- 7.4 CBQ, Class Based Queuing
Rules, Guidelines and Approaches
- 8.1 General Rules of Linux Traffic Control
- 8.2 Handling a link with a known bandwidth
- 8.3 Handling a link with a variable (or unknown) bandwidth
- 8.4 Sharing/splitting bandwidth based on flows
- 8.5 Sharing/splitting bandwidth based on IP
Scripts for use with QoS/Traffic Control
- 9.1 wondershaper
- 9.2 ADSL Bandwidth HOWTO script (myshaper)
- 9.3 htb.init
- 9.4 tcng.init
- 9.5 cbq.init
Diagram
- 10.1 General diagram
Annotated Traffic Control Links