246 lines
8.6 KiB
HTML
246 lines
8.6 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of PIE</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>PIE</H1>
|
|
Section: Linux (8)<BR>Updated: 16 January 2014<BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>NAME</H2>
|
|
|
|
PIE - Proportional Integral controller-Enhanced AQM algorithm
|
|
<A NAME="lbAC"> </A>
|
|
<H2>SYNOPSIS</H2>
|
|
|
|
<B>tc qdisc ... pie</B>
|
|
|
|
[
|
|
<B>limit</B>
|
|
|
|
PACKETS ] [
|
|
<B>target</B>
|
|
|
|
TIME ] [
|
|
<B>tupdate</B>
|
|
|
|
TIME ] [
|
|
<B>alpha</B>
|
|
|
|
int ] [
|
|
<B>beta</B>
|
|
|
|
int ] [
|
|
<B>ecn</B>
|
|
|
|
|
|
|
<B>noecn</B>
|
|
|
|
] [
|
|
<B>bytemode</B>
|
|
|
|
|
|
|
<B>nobytemode</B>
|
|
|
|
] [
|
|
<B>dq_rate_estimator</B>
|
|
|
|
|
|
|
<B>no_dq_rate_estimator</B>
|
|
|
|
]
|
|
<P>
|
|
<A NAME="lbAD"> </A>
|
|
<H2>DESCRIPTION</H2>
|
|
|
|
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
|
|
<BR> o Low latency control
|
|
<BR> o High link utilization
|
|
<BR> o Simple implementation
|
|
<BR> o Guaranteed stability and fast responsiveness
|
|
<P>
|
|
<A NAME="lbAE"> </A>
|
|
<H2>ALGORITHM</H2>
|
|
|
|
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.
|
|
<P>
|
|
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.
|
|
<P>
|
|
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.
|
|
<P>
|
|
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.
|
|
<P>
|
|
Additional details can be found in the paper cited below.
|
|
<P>
|
|
<A NAME="lbAF"> </A>
|
|
<H2>PARAMETERS</H2>
|
|
|
|
<A NAME="lbAG"> </A>
|
|
<H3>limit</H3>
|
|
|
|
limit on the queue size in packets. Incoming packets are dropped when this limit
|
|
is reached. Default is 1000 packets.
|
|
<P>
|
|
<A NAME="lbAH"> </A>
|
|
<H3>target</H3>
|
|
|
|
is the expected queue delay. The default target delay is 15ms.
|
|
<P>
|
|
<A NAME="lbAI"> </A>
|
|
<H3>tupdate</H3>
|
|
|
|
is the frequency at which the system drop probability is calculated. The default is 15ms.
|
|
<P>
|
|
<A NAME="lbAJ"> </A>
|
|
<H3>alpha</H3>
|
|
|
|
<A NAME="lbAK"> </A>
|
|
<H3>beta</H3>
|
|
|
|
alpha and beta are parameters chosen to control the drop probability. These
|
|
should be in the range between 0 and 32.
|
|
<P>
|
|
<A NAME="lbAL"> </A>
|
|
<H3>ecn | noecn</H3>
|
|
|
|
is used to mark packets instead of dropping.
|
|
<B>ecn</B>
|
|
|
|
to turn on ecn mode,
|
|
<B>noecn</B>
|
|
|
|
to turn off ecn mode. By default,
|
|
<B>ecn</B>
|
|
|
|
is turned off.
|
|
<P>
|
|
<A NAME="lbAM"> </A>
|
|
<H3>bytemode | nobytemode</H3>
|
|
|
|
is used to scale drop probability proportional to packet size.
|
|
<B>bytemode</B>
|
|
|
|
to turn on bytemode,
|
|
<B>nobytemode</B>
|
|
|
|
to turn off bytemode. By default,
|
|
<B>bytemode</B>
|
|
|
|
is turned off.
|
|
<P>
|
|
<A NAME="lbAN"> </A>
|
|
<H3>dq_rate_estimator | no_dq_rate_estimator</H3>
|
|
|
|
is used to calculate delay using Little's law.
|
|
<B>dq_rate_estimator</B>
|
|
|
|
to turn on dq_rate_estimator,
|
|
<B>no_dq_rate_estimator</B>
|
|
|
|
to turn off no_dq_rate_estimator. By default,
|
|
<B>dq_rate_estimator</B>
|
|
|
|
is turned off.
|
|
<P>
|
|
<A NAME="lbAO"> </A>
|
|
<H2>EXAMPLES</H2>
|
|
|
|
<BR> # tc qdisc add dev eth0 root pie
|
|
<BR> # tc -s qdisc show
|
|
<BR> qdisc pie 8036: dev eth0 root refcnt 2 limit 1000p target 15.0ms tupdate 16.0ms alpha 2 beta 20
|
|
<BR> Sent 31216108 bytes 20800 pkt (dropped 80, overlimits 0 requeues 0)
|
|
<BR> backlog 16654b 11p requeues 0
|
|
<BR> prob 0.006161 delay 15666us
|
|
<BR> pkts_in 20811 overlimit 0 dropped 80 maxq 50 ecn_mark 0
|
|
<P>
|
|
<BR> # tc qdisc add dev eth0 root pie dq_rate_estimator
|
|
<BR> # tc -s qdisc show
|
|
<BR> qdisc pie 8036: dev eth0 root refcnt 2 limit 1000p target 15.0ms tupdate 16.0ms alpha 2 beta 20
|
|
<BR> Sent 63947420 bytes 42414 pkt (dropped 41, overlimits 0 requeues 0)
|
|
<BR> backlog 271006b 179p requeues 0
|
|
<BR> prob 0.000092 delay 22200us avg_dq_rate 12145996
|
|
<BR> pkts_in 41 overlimit 343 dropped 0 maxq 50 ecn_mark 0
|
|
<P>
|
|
<BR> # tc qdisc add dev eth0 root pie limit 100 target 20ms tupdate 30ms ecn
|
|
<BR> # tc -s qdisc show
|
|
<BR> qdisc pie 8036: dev eth0 root refcnt 2 limit 100p target 20.0ms tupdate 32.0ms alpha 2 beta 20 ecn
|
|
<BR> Sent 6591724 bytes 4442 pkt (dropped 27, overlimits 0 requeues 0)
|
|
<BR> backlog 18168b 12p requeues 0
|
|
<BR> prob 0.008845 delay 11348us
|
|
<BR> pkts_in 4454 overlimit 0 dropped 27 maxq 65 ecn_mark 0
|
|
<P>
|
|
<BR> # tc qdisc add dev eth0 root pie limit 100 target 50ms tupdate 30ms bytemode
|
|
<BR> # tc -s qdisc show
|
|
<BR> qdisc pie 8036: dev eth0 root refcnt 2 limit 100p target 50.0ms tupdate 32.0ms alpha 2 beta 20 bytemode
|
|
<BR> Sent 1616274 bytes 1137 pkt (dropped 0, overlimits 0 requeues 0)
|
|
<BR> backlog 13626b 9p requeues 0
|
|
<BR> prob 0.000000 delay 0us
|
|
<BR> pkts_in 1146 overlimit 0 dropped 0 maxq 23 ecn_mark 0
|
|
<P>
|
|
<A NAME="lbAP"> </A>
|
|
<H2>SEE ALSO</H2>
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?8+tc">tc</A></B>(8),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?8+tc-codel">tc-codel</A></B>(8)
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?8+tc-red">tc-red</A></B>(8)
|
|
|
|
<P>
|
|
<A NAME="lbAQ"> </A>
|
|
<H2>SOURCES</H2>
|
|
|
|
<BR> o RFC 8033: <A HREF="https://tools.ietf.org/html/rfc8033">https://tools.ietf.org/html/rfc8033</A>
|
|
<P>
|
|
<A NAME="lbAR"> </A>
|
|
<H2>AUTHORS</H2>
|
|
|
|
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 <<A HREF="mailto:netdev@vger.kernel.org">netdev@vger.kernel.org</A>>.
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="1"><A HREF="#lbAB">NAME</A><DD>
|
|
<DT id="2"><A HREF="#lbAC">SYNOPSIS</A><DD>
|
|
<DT id="3"><A HREF="#lbAD">DESCRIPTION</A><DD>
|
|
<DT id="4"><A HREF="#lbAE">ALGORITHM</A><DD>
|
|
<DT id="5"><A HREF="#lbAF">PARAMETERS</A><DD>
|
|
<DL>
|
|
<DT id="6"><A HREF="#lbAG">limit</A><DD>
|
|
<DT id="7"><A HREF="#lbAH">target</A><DD>
|
|
<DT id="8"><A HREF="#lbAI">tupdate</A><DD>
|
|
<DT id="9"><A HREF="#lbAJ">alpha</A><DD>
|
|
<DT id="10"><A HREF="#lbAK">beta</A><DD>
|
|
<DT id="11"><A HREF="#lbAL">ecn | noecn</A><DD>
|
|
<DT id="12"><A HREF="#lbAM">bytemode | nobytemode</A><DD>
|
|
<DT id="13"><A HREF="#lbAN">dq_rate_estimator | no_dq_rate_estimator</A><DD>
|
|
</DL>
|
|
<DT id="14"><A HREF="#lbAO">EXAMPLES</A><DD>
|
|
<DT id="15"><A HREF="#lbAP">SEE ALSO</A><DD>
|
|
<DT id="16"><A HREF="#lbAQ">SOURCES</A><DD>
|
|
<DT id="17"><A HREF="#lbAR">AUTHORS</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:06:17 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|