How to Configure Jumbo Frames on Linux
9 min read - May 11, 2026

Step-by-step guide to enabling jumbo frames on Linux, covering hardware checks, persistent MTU configuration, and end-to-end testing
How to Configure Jumbo Frames on Linux
Jumbo frames are Ethernet frames with a payload larger than the standard 1,500-byte MTU. Setting the MTU to 9,000 bytes reduces per-packet overhead and CPU interrupts, which means more of your bandwidth goes to actual data. That matters most on high-throughput paths like private interconnects, data replication links between facilities, and dedicated storage networks. This guide covers hardware checks, configuration across major distros, and testing.
Why Jumbo Frames Matter
Every Ethernet frame carries an 18-byte header regardless of payload size. With a 1,500-byte MTU, that overhead is about 1.2% of your traffic. Bump the MTU to 9,000 and overhead drops to roughly 0.2%. Fewer packets also means fewer CPU interrupts, freeing cycles for actual application work.
In practice, high-performance LANs see throughput improvements of 5% to 10%. Dedicated storage networks (iSCSI, NFS) often see 10% to 30%. GPU clusters running AI/ML workloads benefit too, since large datasets move between nodes with less segmentation. An MTU of 8,896 is commonly recommended for GPU-accelerated environments.
The catch: jumbo frames only work on paths you fully control. Every device between source and destination, including NICs, switches, and routers, must support the larger MTU. One misconfigured hop and you get fragmentation or silent packet drops. For internet-facing interfaces, stick with 1,500.
Checking Hardware Compatibility
Before changing anything, confirm every device in your network path supports jumbo frames.
Check your current MTU settings:
ip link show | grep mtuTest whether your NIC accepts a larger MTU:
sudo ip link set eth0 mtu 9001If you get SIOCSIFMTU: Invalid argument, the NIC does not support jumbo frames. You can also check offload capabilities with:
ethtool -k eth0 | grep -i largeSwitch configuration matters just as much. Different vendors require slightly different MTU values to account for layer 2 headers. Cisco switches typically need 9,216. Arista switches use 9,214. Check your switch documentation and set accordingly.
If you're running VLANs, VLAN tagging adds 4 bytes of overhead. A parent interface set to MTU 9,000 supports a VLAN MTU of 8,996. If you need a full 9,000 on the VLAN interface, set the parent to 9,004.
Configuring MTU on Linux
Set the MTU temporarily to verify things work:
sudo ip link set eth0 mtu 9000
ip link show eth0 | grep mtuThis takes effect immediately with no reboot required. For bonded interfaces, set the MTU on the bond interface itself. It propagates to member NICs automatically.
Making It Persistent
The method depends on your distro and network manager.
| Distro / Tool | Config Location | Syntax |
|---|---|---|
| Ubuntu 17.10+ (Netplan) | /etc/netplan/*.yaml | mtu: 9000 |
| NetworkManager | nmcli | 802-3-ethernet.mtu 9000 |
| Debian / older Ubuntu | /etc/network/interfaces | mtu 9000 |
| systemd-networkd | /etc/systemd/network/*.network | MTUBytes=9000 in [Link] |
| RHEL / CentOS (legacy) | /etc/sysconfig/network-scripts/ | MTU=9000 |
For Netplan, use sudo netplan try after editing. It applies the config and automatically reverts if you don't confirm within two minutes, which is a useful safety net on remote servers. For NetworkManager, run:
nmcli connection modify "Eth0" 802-3-ethernet.mtu 9000
nmcli connection up "Eth0"After making changes persistent, reboot and verify with ip link show to confirm the MTU survived.
Testing and Troubleshooting
A server configured for MTU 9,000 can still fail on large transfers if any device in the path doesn't match. Small packets may work fine while large ones get dropped silently. Always test end-to-end.
Verifying Jumbo Frame Support
Send a full-sized packet with fragmentation disabled:
ping -M do -s 8972 <destination_ip>The payload size of 8,972 accounts for the 28-byte IP and ICMP headers. If the ping succeeds, the full path supports MTU 9,000. If you see "Packet needs to be fragmented but DF set" or "Message too long", something in the path has a lower MTU.
To find exactly where the path breaks:
tracepath -n <destination_ip>This reports the maximum MTU at each hop, so you can identify which device needs reconfiguring.
Measuring Throughput
Use iperf3 to compare performance before and after:
iperf3 -c <destination_ip> -t 30 -M 8960Run the same test with the default MTU first, then again after enabling jumbo frames. You should see measurable throughput improvement and lower CPU usage on storage-heavy workloads.
To confirm packets are arriving intact during real transfers, check reassembly counters on the receiving end:
nstat -az IpReasm*If the counters stay at zero, there's no fragmentation happening.
Common Problems
- MTU mismatch: The most common issue. Every device in the path needs the same (or higher) MTU. One switch port set to 1,500 will break everything.
- VLAN overhead forgotten: VLAN tagging adds 4 bytes. If your VLAN interface needs MTU 9,000, set the parent to 9,004.
- Bond MTU set on members: Always set the MTU on the bond interface, not on individual NICs.
- NIC hardware limitation: Some older NICs cap out below 9,000. Run
ethtool -k <interface> | grep -i largeto check.
Conclusion
Jumbo frames are a straightforward way to improve throughput and reduce CPU overhead on internal networks. The configuration itself is simple. The hard part is making sure every device in the path supports the larger MTU, which is why testing matters more than the config step.
Use jumbo frames for storage networks, VM migrations, backups, and any high-bandwidth internal traffic where you control the full path. Leave internet-facing interfaces at the standard 1,500-byte MTU.
FDC's VPS and dedicated server infrastructure supports jumbo frames on private VLANs, making it a good fit for these workloads.

Tired of slow deployments or bandwidth limits? FDC Servers offers instant dedicated power, global reach, and flexible plans built for any scale. Ready to upgrade?
Unlock Performance Now
Linux Server Hardening Checklist
Step-by-step checklist to harden a Linux server. Covers SSH, firewalls, patching, file permissions, SELinux/AppArmor, and audit logging
15 min read - May 8, 2026
iperf3 Tutorial: Test Network Speed on Linux & Windows
10 min read - May 7, 2026

Have questions or need a custom solution?
Flexible options
Global reach
Instant deployment
Flexible options
Global reach
Instant deployment