Blame man/man8/tc-pie.8

Packit Service 3880ab
.TH PIE 8 "16 January 2014" "iproute2" "Linux"
Packit Service 3880ab
.SH NAME
Packit Service 3880ab
PIE \- Proportional Integral controller-Enhanced AQM algorithm
Packit Service 3880ab
.SH SYNOPSIS
Packit Service 3880ab
.B tc qdisc ... pie
Packit Service 3880ab
[
Packit Service 3880ab
.B limit
Packit Service 3880ab
PACKETS ] [
Packit Service 3880ab
.B target
Packit Service 3880ab
TIME ] [
Packit Service 3880ab
.B tupdate
Packit Service 3880ab
TIME ] [
Packit Service 3880ab
.B alpha
Packit Service 3880ab
int ] [
Packit Service 3880ab
.B beta
Packit Service 3880ab
int ] [
Packit Service 3880ab
.B ecn
Packit Service 3880ab
|
Packit Service 3880ab
.B noecn
Packit Service 3880ab
] [
Packit Service 3880ab
.B bytemode
Packit Service 3880ab
|
Packit Service 3880ab
.B nobytemode
Packit Service 3880ab
] [
Packit Service 3880ab
.B dq_rate_estimator
Packit Service 3880ab
|
Packit Service 3880ab
.B no_dq_rate_estimator
Packit Service 3880ab
]
Packit Service 3880ab
Packit Service 3880ab
.SH DESCRIPTION
Packit Service 3880ab
Proportional Integral controller-Enhanced (PIE) is a control theoretic active
Packit Service 3880ab
queue management scheme. It is based on the proportional integral controller but
Packit Service 3880ab
aims to control delay. The main design goals are
Packit Service 3880ab
 o Low latency control
Packit Service 3880ab
 o High link utilization
Packit Service 3880ab
 o Simple implementation
Packit Service 3880ab
 o Guaranteed stability and fast responsiveness
Packit Service 3880ab
Packit Service 3880ab
.SH ALGORITHM
Packit Service 3880ab
PIE is designed to control delay effectively. First, an average dequeue rate is
Packit Service 3880ab
estimated based on the standing queue. The rate is used to calculate the current
Packit Service 3880ab
delay. Then, on a periodic basis, the delay is used to calculate the dropping
Packit Service 3880ab
probabilty. Finally, on arrival, a packet is dropped (or marked) based on this
Packit Service 3880ab
probability.
Packit Service 3880ab
Packit Service 3880ab
PIE makes adjustments to the probability based on the trend of the delay i.e.
Packit Service 3880ab
whether it is going up or down.The delay converges quickly to the target value
Packit Service 3880ab
specified.
Packit Service 3880ab
Packit Service 3880ab
alpha and beta are statically chosen parameters chosen to control the drop probability
Packit Service 3880ab
growth and are determined through control theoretic approaches. alpha determines how
Packit Service 3880ab
the deviation between the current and target latency changes probability. beta exerts
Packit Service 3880ab
additional adjustments depending on the latency trend.
Packit Service 3880ab
Packit Service 3880ab
The drop probabilty is used to mark packets in ecn mode. However, as in RED,
Packit Service 3880ab
beyond 10% packets are dropped based on this probability. The bytemode is used
Packit Service 3880ab
to drop packets proportional to the packet size.
Packit Service 3880ab
Packit Service 3880ab
Additional details can be found in the paper cited below.
Packit Service 3880ab
Packit Service 3880ab
.SH PARAMETERS
Packit Service 3880ab
.SS limit
Packit Service 3880ab
limit on the queue size in packets. Incoming packets are dropped when this limit
Packit Service 3880ab
is reached. Default is 1000 packets.
Packit Service 3880ab
Packit Service 3880ab
.SS target
Packit Service 3880ab
is the expected queue delay. The default target delay is 15ms.
Packit Service 3880ab
Packit Service 3880ab
.SS tupdate
Packit Service 3880ab
is the frequency at which the system drop probability is calculated. The default is 15ms.
Packit Service 3880ab
Packit Service 3880ab
.SS alpha
Packit Service 3880ab
.SS beta
Packit Service 3880ab
alpha and beta are parameters chosen to control the drop probability. These
Packit Service 3880ab
should be in the range between 0 and 32.
Packit Service 3880ab
Packit Service 3880ab
.SS ecn | noecn
Packit Service 3880ab
is used to mark packets instead of dropping.
Packit Service 3880ab
.B ecn
Packit Service 3880ab
to turn on ecn mode,
Packit Service 3880ab
.B noecn
Packit Service 3880ab
to turn off ecn mode. By default,
Packit Service 3880ab
.B ecn
Packit Service 3880ab
is turned off.
Packit Service 3880ab
Packit Service 3880ab
.SS bytemode | nobytemode
Packit Service 3880ab
is used to scale drop probability proportional to packet size.
Packit Service 3880ab
.B bytemode
Packit Service 3880ab
to turn on bytemode,
Packit Service 3880ab
.B nobytemode
Packit Service 3880ab
to turn off bytemode. By default,
Packit Service 3880ab
.B bytemode
Packit Service 3880ab
is turned off.
Packit Service 3880ab
Packit Service 3880ab
.SS dq_rate_estimator | no_dq_rate_estimator
Packit Service 3880ab
is used to calculate delay using Little's law.
Packit Service 3880ab
.B dq_rate_estimator
Packit Service 3880ab
to turn on dq_rate_estimator,
Packit Service 3880ab
.B no_dq_rate_estimator
Packit Service 3880ab
to turn off no_dq_rate_estimator. By default,
Packit Service 3880ab
.B dq_rate_estimator
Packit Service 3880ab
is turned off.
Packit Service 3880ab
Packit Service 3880ab
.SH EXAMPLES
Packit Service 3880ab
 # tc qdisc add dev eth0 root pie
Packit Service 3880ab
 # tc -s qdisc show
Packit Service 3880ab
   qdisc pie 8036: dev eth0 root refcnt 2 limit 1000p target 15.0ms tupdate 16.0ms alpha 2 beta 20
Packit Service 3880ab
    Sent 31216108 bytes 20800 pkt (dropped 80, overlimits 0 requeues 0)
Packit Service 3880ab
    backlog 16654b 11p requeues 0
Packit Service 3880ab
     prob 0.006161 delay 15666us
Packit Service 3880ab
     pkts_in 20811 overlimit 0 dropped 80 maxq 50 ecn_mark 0
Packit Service 3880ab
Packit Service 3880ab
 # tc qdisc add dev eth0 root pie dq_rate_estimator
Packit Service 3880ab
 # tc -s qdisc show
Packit Service 3880ab
   qdisc pie 8036: dev eth0 root refcnt 2 limit 1000p target 15.0ms tupdate 16.0ms alpha 2 beta 20
Packit Service 3880ab
    Sent 63947420 bytes 42414 pkt (dropped 41, overlimits 0 requeues 0)
Packit Service 3880ab
    backlog 271006b 179p requeues 0
Packit Service 3880ab
     prob 0.000092 delay 22200us avg_dq_rate 12145996
Packit Service 3880ab
     pkts_in 41 overlimit 343 dropped 0 maxq 50 ecn_mark 0
Packit Service 3880ab
Packit Service 3880ab
 # tc qdisc add dev eth0 root pie limit 100 target 20ms tupdate 30ms ecn
Packit Service 3880ab
 # tc -s qdisc show
Packit Service 3880ab
   qdisc pie 8036: dev eth0 root refcnt 2 limit 100p target 20.0ms tupdate 32.0ms alpha 2 beta 20 ecn
Packit Service 3880ab
    Sent 6591724 bytes 4442 pkt (dropped 27, overlimits 0 requeues 0)
Packit Service 3880ab
    backlog 18168b 12p requeues 0
Packit Service 3880ab
     prob 0.008845 delay 11348us
Packit Service 3880ab
     pkts_in 4454 overlimit 0 dropped 27 maxq 65 ecn_mark 0
Packit Service 3880ab
Packit Service 3880ab
 # tc qdisc add dev eth0 root pie limit 100 target 50ms tupdate 30ms bytemode
Packit Service 3880ab
 # tc -s qdisc show
Packit Service 3880ab
   qdisc pie 8036: dev eth0 root refcnt 2 limit 100p target 50.0ms tupdate 32.0ms alpha 2 beta 20 bytemode
Packit Service 3880ab
    Sent 1616274 bytes 1137 pkt (dropped 0, overlimits 0 requeues 0)
Packit Service 3880ab
    backlog 13626b 9p requeues 0
Packit Service 3880ab
     prob 0.000000 delay 0us
Packit Service 3880ab
     pkts_in 1146 overlimit 0 dropped 0 maxq 23 ecn_mark 0
Packit Service 3880ab
Packit Service 3880ab
.SH SEE ALSO
Packit Service 3880ab
.BR tc (8),
Packit Service 3880ab
.BR tc-codel (8)
Packit Service 3880ab
.BR tc-red (8)
Packit Service 3880ab
Packit Service 3880ab
.SH SOURCES
Packit Service 3880ab
 o RFC 8033: https://tools.ietf.org/html/rfc8033
Packit Service 3880ab
Packit Service 3880ab
.SH AUTHORS
Packit Service 3880ab
PIE was implemented by Vijay Subramanian and Mythili Prabhu, also the authors of
Packit Service 3880ab
this man page. Please report bugs and corrections to the Linux networking
Packit Service 3880ab
development mailing list at <netdev@vger.kernel.org>.