Traditional Elements of Traffic ControlShaping
Shapers delay packets to meet a desired rate.
Shaping is the mechanism by which packets are delayed before
transmission in an output queue to meet a desired output rate. This is
one of the most common desires of users seeking bandwidth control
solutions. The act of delaying a packet as part of a traffic control
solution makes every shaping mechanism into a non-work-conserving
mechanism, meaning roughly: "Work is required in order to delay
packets."
Viewed in reverse, a non-work-conserving queuing mechanism is performing
a shaping function. A work-conserving queuing mechanism (see
&link-sch_prio;) would not be capable of delaying a packet.
Shapers attempt to limit or ration traffic to meet but not exceed a
configured rate (frequently measured in packets per second or bits/bytes
per second). As a side effect, shapers can smooth out bursty traffic
This smoothing effect is not always desirable, hence the HTB
parameters burst and cburst.
.
One of the advantages of shaping bandwidth is the ability to control
latency of packets. The underlying mechanism for shaping to a rate is
typically a token and bucket mechanism. See also
for further detail on tokens and buckets.
Scheduling
Schedulers arrange and/or rearrange packets for output.
Scheduling is the mechanism by which packets are arranged (or
rearranged) between input and output of a particular queue. The
overwhelmingly most common scheduler is the FIFO (first-in first-out)
scheduler. From a larger perspective, any set of traffic control
mechanisms on an output queue can be regarded as a scheduler, because
packets are arranged for output.
Other generic scheduling mechanisms attempt to compensate for various
networking conditions. A fair queuing algorithm (see &link-sch_sfq;)
attempts to prevent any single client or flow from dominating the
network usage. A round-robin algorithm (see &link-sch_wrr;) gives each
flow or client a turn to dequeue packets. Other sophisticated
scheduling algorithms attempt to prevent backbone overload (see
&link-sch_gred;) or refine other scheduling mechanisms (see
&link-sch_esfq;).
Classifying
Classifiers sort or separate traffic into queues.
Classifying is the mechanism by which packets are separated for
different treatment, possibly different output queues. During the
process of accepting, routing and transmitting a packet, a networking
device can classify the packet a number of different ways.
Classification can include
marking the packet, which usually
happens on the boundary of a network under a single administrative
control or classification can occur on each hop individually.
The Linux model (see
) allows for a packet to cascade across a
series of classifiers in a traffic control structure and to be
classified in conjunction with
policers (see also
).
Policing
Policers measure and limit traffic in a particular queue.
Policing, as an element of traffic control, is simply
a mechanism by which traffic can be limited. Policing is most
frequently used on the network border to ensure that a peer is not
consuming more than its allocated bandwidth. A policer will accept
traffic to a certain rate, and then perform an action on traffic
exceeding this rate. A rather harsh solution is to
drop the traffic, although the
traffic could be
reclassified instead of being
dropped.
A policer is a yes/no question about the rate at which traffic is
entering a queue. If the packet is about to enter a queue below a given
rate, take one action (allow the enqueuing). If the packet is about to
enter a queue above a given rate, take another action. Although the
policer uses a token bucket mechanism internally, it does not have the
capability to delay a packet as a &elements-shaping; mechanism does.
Dropping
Dropping discards an entire packet, flow or classification.
Dropping a packet is a mechanism by which a packet is discarded.
Marking
Marking is a mechanism by which the packet is altered.
This is not &fwmark;. The &iptables; target &ipt-mark; and the
&ipchains; &ipc-mark; are used to modify packet metadata, not the packet
itself.
Traffic control marking mechanisms install a DSCP on the packet
itself, which is then used and respected by other routers inside an
administrative domain (usually for DiffServ).