summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man8/tc-pie.8
blob: 5a8c782074e793aa4ec57be94700f65142e9ef49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
.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
] [
.B dq_rate_estimator
|
.B no_dq_rate_estimator
]

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

.SS dq_rate_estimator | no_dq_rate_estimator
is used to calculate delay using Little's law.
.B dq_rate_estimator
to turn on dq_rate_estimator,
.B no_dq_rate_estimator
to turn off no_dq_rate_estimator. By default,
.B dq_rate_estimator
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
     pkts_in 20811 overlimit 0 dropped 80 maxq 50 ecn_mark 0

 # tc qdisc add dev eth0 root pie dq_rate_estimator
 # 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 63947420 bytes 42414 pkt (dropped 41, overlimits 0 requeues 0)
    backlog 271006b 179p requeues 0
     prob 0.000092 delay 22200us avg_dq_rate 12145996
     pkts_in 41 overlimit 343 dropped 0 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
     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
     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>.