TC - Traffic Control
The Linux kernel's network stack has network traffic control and shaping features. The iproute2 package installs the tc command to control these via the command line.
Queuing controls how data is sent; receiving data is much more reactive with fewer network-oriented controls. However, since TCP/IP packets are sent using a slow start the system starts sending the packets slow and keeps sending them faster and faster until packets start getting rejected - it is therefore possible to control how much traffic is received on a LAN by dropping packets that arrive at a router before they get forwarded. There are more relevant details, but they do not touch directly on queuing logic.
sudo sysctl -a | grep qdisc
shows current default settingssudo sysctl -a | grep net.
shows all the net. parameters, additional deeper filters net.core, net.ipv4, net.ipv6, net.mptcp, and net.netfilter. There are a few additionals not shown in deeper filters!sudo tc qdisc show dev eno1
shows current setting of interfacedev eno1
it would seem that Linux has default settings for network interfaces, e.g.:
qdisc mq 0: root qdisc fq_codel 0: parent :4 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 qdisc fq_codel 0: parent :3 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 qdisc fq_codel 0: parent :2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 qdisc fq_codel 0: parent :1 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64
Links
- tc-fq_codel
- wikipedia TC A bit dated, but base references….
-
- Archwiki Advanced traffic control
- Funtoo Traffic Control, good basic description.