CephXXIX · Network DesignNetwork Design
Jumbo frames: benefit, risk, and verification
What you'll learn
- Quantify the benefit of jumbo frames for Ceph traffic
- Enumerate every device that must agree on MTU
- Verify MTU end to end correctly
- Decide whether jumbo frames are worth it for a given cluster
Prerequisites
None — start here.
Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18
Why this matters in production
Jumbo frames are a modest, real improvement with a severe failure mode. The benefit is a few percent of CPU and some throughput on large transfers; the cost of getting it wrong is intermittent hangs that take days to diagnose. Whether that trade is worth it depends on your discipline more than on your workload.
The benefit
A 9000-byte MTU carries six times the payload of 1500 bytes per packet, so a large transfer needs roughly one-sixth the packets:
| MTU 1500 | MTU 9000 | |
|---|---|---|
| Packets per GB | ~700,000 | ~117,000 |
| Per-packet CPU | 6× the total | baseline |
| Header overhead | ~3.2% | ~0.6% |
The gain is largest where per-packet cost dominates: recovery, backfill, large sequential RGW transfers, and any host where softirq processing is near saturation. It is negligible for small random RBD I/O, where the packets are small anyway.
Everything that must agree
- Host NIC on every Ceph node, and every bond member
- The bond interface itself, and any VLAN sub-interface
- Every switch port in the path
- Switch fabric and inter-switch links
- Any router in a routed design
- Client hosts, for public-network traffic
One device left at 1500 produces a path that carries small frames and drops large ones. Ceph then works for heartbeats and small operations and hangs on large ones.
Verifying properly
ip link show bond0 | grep mtu
ip link show bond0.30 | grep mtu
# the only test that proves anything
ping -M do -s 8972 -c 3 10.30.0.47
8972 + 28 = 9000. -M do prevents fragmentation so the test fails
loudly on a path that cannot carry the frame. Run it between every pair of
racks, on both networks, and after every network change.
# quick sweep across all OSD hosts
for h in $(ceph osd metadata | jq -r '.[].hostname' | sort -u); do
ping -M do -s 8972 -c 1 -W 1 "$h" >/dev/null 2>&1 \
&& echo "OK $h" || echo "FAIL $h"
done
Deciding
Use jumbo frames when: the cluster is throughput-oriented, the network is under your control end to end, and MTU verification is part of your change process.
Stay at 1500 when: the network is shared or managed by another team, the workload is small-random, or you cannot guarantee verification after every change. A correctly-working 1500 MTU cluster outperforms a mis-configured 9000 one by a wide margin.
Quiz
Knowledge check · 4 questions
Q1. Which Ceph workload benefits most from jumbo frames?
Q2. When enabling jumbo frames, host MTU should be raised before switch MTU.
Q3. Decide whether to deploy jumbo frames.
A team runs Ceph for RBD serving 600 VMs with small random I/O, on a network managed by a separate infrastructure team that performs changes without notifying storage. Someone proposes jumbo frames to improve performance.
Q4. Why does an MTU mismatch produce intermittent, workload-dependent failures rather than an immediate error?
Passing score: 75%. Answers are checked in this browser.
Production discipline
If you deploy jumbo frames, make ping -M do verification a
mandatory post-change step for both storage and network teams, and script
the full-mesh sweep so it can be run in seconds. If you cannot guarantee
that discipline, staying at 1500 is the better engineering decision and
worth stating explicitly so it is not revisited annually.
Cross-course references
- Kubernetes: overlay MTU must account for encapsulation overhead, with the same silent-failure risk
- Linux: path MTU discovery behaviour and ICMP filtering are general networking concerns