.TH PIE 8 "16 January 2014" "iproute2" "Linux"
.SH NAME
PIE \- Proportional Integral controller-Enhanced AQM algorithm
.SH SYNOPSIS
.B tc qdisc ... pie
[
.B limit
PACKETS ] [
.B target
TIME ] [
.B tupdate
TIME ] [
.B alpha
int ] [
.B beta
int ] [
.B ecn
|
.B noecn
] [
.B bytemode
|
.B nobytemode
]

.SH DESCRIPTION
Proportional Integral controller-Enhanced (PIE) is a control theoretic active
queue management scheme. It is based on the proportional integral controller but
aims to control delay. The main design goals are
 o Low latency control
 o High link utilization
 o Simple implementation
 o Guaranteed stability and fast responsiveness

.SH ALGORITHM
PIE is designed to control delay effectively. First, an average dequeue rate is
estimated based on the standing queue. The rate is used to calculate the current
delay. Then, on a periodic basis, the delay is used to calculate the dropping
probabilty. Finally, on arrival, a packet is dropped (or marked) based on this
probability.

PIE makes adjustments to the probability based on the trend of the delay i.e.
whether it is going up or down.The delay converges quickly to the target value
specified.

alpha and beta are statically chosen parameters chosen to control the drop probability
growth and are determined through control theoretic approaches. alpha determines how
the deviation between the current and target latency changes probability. beta exerts
additional adjustments depending on the latency trend.

The drop probabilty is used to mark packets in ecn mode. However, as in RED,
beyond 10% packets are dropped based on this probability. The bytemode is used
to drop packets proportional to the packet size.

Additional details can be found in the paper cited below.

.SH PARAMETERS
.SS limit
limit on the queue size in packets. Incoming packets are dropped when this limit
is reached. Default is 1000 packets.

.SS target
is the expected queue delay. The default target delay is 15ms.

.SS tupdate
is the frequency at which the system drop probability is calculated. The default is 15ms.

.SS alpha
.SS beta
alpha and beta are parameters chosen to control the drop probability. These
should be in the range between 0 and 32.

.SS ecn | noecn
is used to mark packets instead of dropping
.B ecn
to turn on ecn mode,
.B noecn
to turn off ecn mode. By default,
.B ecn
is turned off.

.SS bytemode | nobytemode
is used to scale drop probability proportional to packet size
.B bytemode
to turn on bytemode,
.B nobytemode
to turn off bytemode. By default,
.B bytemode
is turned off.

.SH EXAMPLES
 # tc qdisc add dev eth0 root pie
 # tc -s qdisc show
   qdisc pie 8036: dev eth0 root refcnt 2 limit 1000p target 15.0ms tupdate 16.0ms alpha 2 beta 20
    Sent 31216108 bytes 20800 pkt (dropped 80, overlimits 0 requeues 0)
    backlog 16654b 11p requeues 0
   prob 0.006161 delay 15666us avg_dq_rate 1159667
   pkts_in 20811 overlimit 0 dropped 80 maxq 50 ecn_mark 0

 # tc qdisc add dev eth0 root pie limit 100 target 20ms tupdate 30ms ecn
 # tc -s qdisc show
   qdisc pie 8036: dev eth0 root refcnt 2 limit 100p target 20.0ms tupdate 32.0ms alpha 2 beta 20 ecn
    Sent 6591724 bytes 4442 pkt (dropped 27, overlimits 0 requeues 0)
    backlog 18168b 12p requeues 0
   prob 0.008845 delay 11348us avg_dq_rate 1342773
   pkts_in 4454 overlimit 0 dropped 27 maxq 65 ecn_mark 0

 # tc qdisc add dev eth0 root pie limit 100 target 50ms tupdate 30ms bytemode
 # tc -s qdisc show
   qdisc pie 8036: dev eth0 root refcnt 2 limit 100p target 50.0ms tupdate 32.0ms alpha 2 beta 20 bytemode
    Sent 1616274 bytes 1137 pkt (dropped 0, overlimits 0 requeues 0)
    backlog 13626b 9p requeues 0
   prob 0.000000 delay 0us avg_dq_rate 0
   pkts_in 1146 overlimit 0 dropped 0 maxq 23 ecn_mark 0

.SH SEE ALSO
.BR tc (8),
.BR tc-codel (8)
.BR tc-red (8)

.SH SOURCES
 o RFC 8033: https://tools.ietf.org/html/rfc8033

.SH AUTHORS
PIE was implemented by Vijay Subramanian and Mythili Prabhu, also the authors of
this man page. Please report bugs and corrections to the Linux networking
development mailing list at <netdev@vger.kernel.org>.
