tc-fq_pie(8) - phpMan

Command: man perldoc info search(apropos)  


FQ-PIE(8)                                     Linux                                     FQ-PIE(8)

NAME
       FQ-PIE - Flow Queue Proportional Integral controller Enhanced

SYNOPSIS
       tc qdisc ... fq_pie [ limit PACKETS ] [ flows NUMBER ]
                           [ target TIME ] [ tupdate TIME ]
                           [ alpha NUMBER ] [ beta NUMBER ]
                           [ quantum BYTES ] [ memory_limit BYTES ]
                           [ ecn_prob PERENTAGE ] [ [no]ecn ]
                           [ [no]bytemode ] [ [no_]dq_rate_estimator ]

DESCRIPTION
       FQ-PIE  (Flow  Queuing with Proportional Integral controller Enhanced) is a queuing disci-
       pline that combines Flow Queuing with the PIE AQM scheme. FQ-PIE uses a Jenkins hash func-
       tion to classify incoming packets into different flows and is used to provide a fair share
       of the bandwidth to all the flows using the qdisc. Each such flow is managed  by  the  PIE
       algorithm.

ALGORITHM
       The  FQ-PIE  algorithm  consists  of  two logical parts: the scheduler which selects which
       queue to dequeue a packet from, and the PIE AQM which works on each of the queues. The ma-
       jor work of FQ-PIE is mostly in the scheduling part. The interaction between the scheduler
       and the PIE algorithm is straight forward.

       During the enqueue stage, a hashing-based scheme is used, where flows are  hashed  into  a
       number  of buckets with each bucket having its own queue. The number of buckets is config-
       urable, and presently defaults to 1024 in the implementation.  The flow  hashing  is  per-
       formed on the 5-tuple of source and destination IP addresses, port numbers and IP protocol
       number. Once the packet has been successfully classified into a queue, it is  handed  over
       to  the  PIE  algorithm for enqueuing. It is then added to the tail of the selected queue,
       and the queue's byte count is updated by the packet size. If the queue  is  not  currently
       active  (i.e.,  if  it is not in either the list of new or the list of old queues) , it is
       added to the end of the list of new queues, and its number of credits is initiated to  the
       configured quantum. Otherwise, the queue is left in its current queue list.

       During  the  dequeue  stage,  the scheduler first looks at the list of new queues; for the
       queue at the head of that list, if that queue has a negative number of credits  (i.e.,  it
       has  already  dequeued  at least a quantum of bytes), it is given an additional quantum of
       credits, the queue is put onto the end of the list of old queues, and the routine  selects
       the  next  queue and starts again. Otherwise, that queue is selected for dequeue again. If
       the list of new queues is empty, the scheduler proceeds down the list of old queues in the
       same  fashion  (checking  the  credits,  and  either selecting the queue for dequeuing, or
       adding credits and putting the queue back at the end of the list). After having selected a
       queue from which to dequeue a packet, the PIE algorithm is invoked on that queue.

       Finally,  if  the PIE algorithm does not return a packet, then the queue must be empty and
       the scheduler does one of two things:

       If the queue selected for dequeue came from the list of new queues, it is moved to the end
       of  the  list of old queues. If instead it came from the list of old queues, that queue is
       removed from the list, to be added back (as a new queue) the next time  a  packet  arrives
       that hashes to that queue. Then (since no packet was available for dequeue), the whole de-
       queue process is restarted from the beginning.

       If, instead, the scheduler did get a packet back from the PIE algorithm, it subtracts  the
       size  of the packet from the byte credits for the selected queue and returns the packet as
       the result of the dequeue operation.

PARAMETERS
   limit
       It is the limit on the queue size in packets. Incoming packets are dropped when the  limit
       is reached. The default value is 10240 packets.

   flows
       It  is the number of flows into which the incoming packets are classified. Due to the sto-
       chastic nature of hashing, multiple flows may end up being  hashed  into  the  same  slot.
       Newer  flows  have  priority  over older ones. This parameter can be set only at load time
       since memory has to be allocated for the hash table. The default value is 1024.

   target
       It is the queue delay which the PIE algorithm tries to maintain. The default target  delay
       is 15ms.

   tupdate
       It  is  the time interval 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.

   quantum
       quantum  signifies  the number of bytes that may be dequeued from a queue before switching
       to the next queue in the deficit round robin scheme.

   memory_limit
       It is the maximum total memory allowed for packets of all flows. The default is 32Mb.

   ecn_prob
       It is the drop probability threshold below which packets will be  ECN  marked  instead  of
       getting dropped. The default is 10%. Setting this parameter requires ecn to be enabled.

   [no]ecn
       It has the same semantics as pie and can be used to mark packets instead of dropping them.
       If ecn has been enabled, noecn can be used to turn it off and vice-a-versa.

   [no]bytemode
       It is used to scale drop probability proportional to packet size bytemode to turn on byte-
       mode, nobytemode to turn off bytemode. By default, bytemode is turned off.

   [no_]dq_rate_estimator
       dq_rate_estimator  can be used to calculate queue delay using Little's Law, no_dq_rate_es-
       timator can be used to calculate queue delay using timestamp. By default,  dq_rate_estima-
       tor is turned off.

EXAMPLES
       # tc qdisc add dev eth0 root fq_pie
       # tc -s qdisc show dev eth0
       qdisc  fq_pie 8001: root refcnt 2 limit 10240p flows 1024 target 15.0ms tupdate 16.0ms al-
       pha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10
        Sent 159173586 bytes 105261 pkt (dropped 24, overlimits 0 requeues 0)
        backlog 75700b 50p requeues 0
         pkts_in 105311 overlimit 0 overmemory 0 dropped 24 ecn_mark 0
         new_flow_count 7332 new_flows_len 0 old_flows_len 4 memory_used 108800

       # tc qdisc add dev eth0 root fq_pie dq_rate_estimator
       # tc -s qdisc show dev eth0
       qdisc fq_pie 8001: root refcnt 2 limit 10240p flows 1024 target 15.0ms tupdate 16.0ms  al-
       pha 2 beta 20 quantum 1514b memory_limit 32Mb ecn_prob 10 dq_rate_estimator
        Sent 8263620 bytes 5550 pkt (dropped 4, overlimits 0 requeues 0)
        backlog 805448b 532p requeues 0
         pkts_in 6082 overlimit 0 overmemory 0 dropped 4 ecn_mark 0
         new_flow_count 94 new_flows_len 0 old_flows_len 8 memory_used 1157632

SEE ALSO
       tc(8), tc-pie(8), tc-fq_codel(8)

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

AUTHORS
       FQ-PIE  was implemented by Mohit P. Tahiliani. Please report corrections to the Linux Net-
       working mailing list <netdev AT vger.org>.

iproute2                                 23 January 2020                                FQ-PIE(8)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2025-01-15 03:16 @3.139.233.121 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0!Valid CSS!