PBFIFO(8)
๐ PBFIFO(8) โ pfifo & bfifo โจ
โจ NAME โจ
okay so bestie, this page is about pfifo and bfifo ๐ โ both are Packet limited First In, First Out queues (pfifo) and Byte limited First In, First Out queues (bfifo). Literally the simplest queues ever ๐
๐ฆ SYNOPSIS ๐ฆ
tc qdisc ... add pfifo [ limit packets ]
tc qdisc ... add bfifo [ limit bytes ]
๐ธ DESCRIPTION ๐ธ
okay so the pfifo and bfifo qdiscs are totally unadorned First In, First Out queues ๐ซถ They're the simplest queues possible, which means they have no overhead ๐ญ pfifo limits the queue size by counting packets, and bfifo does it by counting bytes ๐ฅ
ngl, like all non-default qdiscs, they keep statistics ๐ So this might be a reason to pick pfifo or bfifo over the default ๐
๐ง ALGORITHM ๐ง
the vibe is a list of packets ๐ When a packet gets enqueued, it gets inserted at the tail of the list. When a packet needs to head out to the network, it's taken from the head of the list ๐
if the list gets too long, no more packets are allowed on ๐ This is called 'tail drop' ๐
๐ PARAMETERS ๐
limitโ this is the maximum queue size ๐ For bfifo it's measured in bytes, and for pfifo it's measured in packets. For pfifo, it defaults to the interface txqueuelen, as set with ip(8). The range for this parameter is[0, UINT32_MAX].
For bfifo, it defaults to the txqueuelen multiplied by the interface MTU. The range for this parameter is [0, UINT32_MAX] bytes.
Note: the link layer header was counted when measuring packet length ๐ซถ
๐ OUTPUT ๐
okay so tc -s qdisc ls shows the limit (in packets or bytes) plus the number of bytes and packets actually sent โจ An unsent, dropped packet only shows up between braces and is not counted as 'Sent' ๐ฅบ
here's a cute example ๐ง The queue length is 100 packets, 45894 bytes were sent over 681 packets, no packets were dropped, and since the pfifo queue doesn't slow packets down, there were also no overlimits ๐
# tc -s qdisc ls dev eth0
qdisc pfifo 8001: dev eth0 limit 100p
Sent 45894 bytes 681 pkts (dropped 0, overlimits 0)
if a backlog happens, that gets displayed too ๐
๐ SEE ALSO ๐
๐ AUTHORS ๐
Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>
This manpage is maintained by bert hubert <ahu@ds9a.nl> ๐ซถ
bestie, that's the whole thing ๐ โจ This was the iproute2 package's PBFIFO(8) page, last updated 10 January 2002 ๐ธ Stay iconic, periodt ๐
๐ฆ where this page comes from
- alpine 3.22: iproute2-doc 6.15.0-r0 ยท GPL-2.0-or-later
- alpine 3.23: iproute2-doc 6.17.0-r0 ยท GPL-2.0-or-later
- alpine 3.24: iproute2-doc 7.0.0-r0 ยท GPL-2.0-or-later
- arch rolling: iproute2 7.2.0-1
- arch rolling: iproute2 7.3.0-1 ยท GPL-2.0-or-later
- centos-stream 10: iproute-tc 7.0.0-2.el10 ยท GPL-2.0-or-later
- centos-stream 9: iproute-tc 6.17.0-3.el9 ยท GPL-2.0-or-later
- debian trixie: iproute2 6.15.0-1 ยท GPL-2.0-only
- fedora 43: iproute-tc 6.14.0-2.fc43 ยท GPL-2.0-or-later
- fedora 44: iproute-tc 6.17.0-2.fc44 ยท GPL-2.0-or-later
- nixos 26.05: iproute2 7.0.0
- nixpkgs unstable: iproute2 7.2.0
- opensuse-leap 16.0: iproute2 6.12-160000.4.1 ยท GPL-2.0-only
- opensuse-leap 16.0: iproute2 6.12-160000.4.1 ยท GPL-2.0-only
- opensuse-leap 16.0: iproute2 6.12-160000.4.1 ยท GPL-2.0-only
- opensuse-leap 16.0: iproute2 6.12-160000.4.1 ยท GPL-2.0-only
- ubuntu questing: iproute2 6.16.0-1ubuntu2
- ubuntu questing: iproute2 6.16.0-1ubuntu2.1 ยท GPL-2.0-only
- ubuntu questing: iproute2 6.16.0-1ubuntu2.2
- ubuntu resolute: iproute2 6.19.0-1ubuntu1 ยท GPL-2.0-only
- ubuntu resolute: iproute2 6.19.0-1ubuntu1.1 ยท GPL-2.0-only
- ubuntu stonking: iproute2 7.2.0-1ubuntu1 ยท GPL-2.0-only
- ๐ girlified by anthropic/claude-haiku-5.5 on : a language model's rewrite of the original, under its terms