# tc-pie (8) - Linux Manuals

## tc-pie: Proportional Integral controller-Enhanced AQM algorithm

## NAME

PIE - Proportional Integral controller-Enhanced AQM algorithm

## SYNOPSIS

**tc qdisc ... pie**[

**limit**PACKETS ] [

**target**TIME ] [

**tupdate**TIME ] [

**alpha**int ] [

**beta**int ] [

**ecn**|

**noecn**] [

**bytemode**|

**nobytemode**] [

**dq_rate_estimator**|

**no_dq_rate_estimator**]

## 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 areo Low latency control

o High link utilization

o Simple implementation

o Guaranteed stability and fast responsiveness

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

## PARAMETERS

### limit

limit on the queue size in packets. Incoming packets are dropped when this limit is reached. Default is 1000 packets.### target

is the expected queue delay. The default target delay is 15ms.### tupdate

is the frequency at which the system drop probability is calculated. The default is 15ms.### alpha

### beta

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

is used to mark packets instead of dropping.**ecn**to turn on ecn mode,

**noecn**to turn off ecn mode. By default,

**ecn**is turned off.

### bytemode | nobytemode

is used to scale drop probability proportional to packet size.**bytemode**to turn on bytemode,

**nobytemode**to turn off bytemode. By default,

**bytemode**is turned off.

### dq_rate_estimator | no_dq_rate_estimator

is used to calculate delay using Little's law.**dq_rate_estimator**to turn on dq_rate_estimator,

**no_dq_rate_estimator**to turn off no_dq_rate_estimator. By default,

**dq_rate_estimator**is turned off.

## EXAMPLES

# tc qdisc add dev eth0 root pie

# tc -s qdisc show

# tc qdisc add dev eth0 root pie dq_rate_estimator

# tc -s qdisc show

# tc qdisc add dev eth0 root pie limit 100 target 20ms tupdate 30ms ecn

# tc -s qdisc show

# tc qdisc add dev eth0 root pie limit 100 target 50ms tupdate 30ms bytemode

# tc -s qdisc show

## SOURCES

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

## 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 [at] vger.kernel.org>.