|
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>.
|