Summary
Add native CLI support for configuring the Transmit Queue Length (txqueuelen) on ethernet interfaces.
Use case
The default Linux txqueuelen value (typically 1000) is often insufficient for high-speed interfaces (10Gbps, 40Gbps, and beyond) or interfaces handling heavy bursts of traffic.
Increasing the txqueuelen is a standard performance tuning step to:
- Prevent packet drops: Avoid "tail drops" during micro-bursts of traffic when the transmit queue fills up faster than the driver can process it.
- Improve Throughput: Ensure consistent performance on high-bandwidth, high-latency links where a larger buffer is required to keep the "pipe" full.
- Conversely, in some low-latency or VoIP-focused scenarios, engineers might want to decrease this value to reduce "bufferbloat" and jitter, although increasing it is the more common requirement for backbone soft-routers.
Additional information
Currently, users have to resort to ip link set ethX txqueuelen <value> within vyos-postconfig-bootup.script. This is not ideal for a production-grade NOS as it hides critical performance parameters from the running configuration and show commands.
Proposed CLI syntax:
# Example of setting a larger queue for a 10G interface set interfaces ethernet eth0 hardware txqueuelen 10000