Skip to main content
RunBook Academy

CephXXX · Network Failure BehaviourNetwork Failure Behaviour

MTU mismatch: the most baffling slow-ops cause

Advanced⏱ ~16 minpingiptcpdump

What you'll learn

  • Recognise the MTU mismatch symptom pattern
  • Confirm it definitively with the right test
  • Localise the mismatched device
  • Prevent recurrence through change process

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

Not yet marked complete on this device.

Why this matters in production

MTU mismatch is the failure most likely to consume a full day of the wrong investigation. It presents as slow ops and hung operations, it survives every ordinary connectivity check, and it is confirmed or eliminated in about ten seconds by a test almost nobody runs first.

The symptom pattern

Learn this pattern — it is highly specific:

  • Small operations succeed, large ones hang. Heartbeats fine, metadata fine, data transfers stall.
  • Idle cluster looks healthy. The problem appears under load, when large transfers occur.
  • Slow ops accumulate with no device or CPU saturation.
  • Recovery stalls — backfill moves large blocks and is hit hardest.
  • ping succeeds. Default 56-byte pings pass through a 1500-byte bottleneck without difficulty.
  • OSDs flap under load and recover when load drops.

Any two of those together should prompt an MTU test before anything else.

The confirmation

# succeeds if the path carries 9000-byte frames
ping -M do -s 8972 -c 3 10.30.0.47

# for comparison, standard MTU
ping -M do -s 1472 -c 3 10.30.0.47

If the second succeeds and the first fails, you have your answer.

Then localise by bisecting: test to intermediate hops, and check interfaces along the path.

ip link show | grep -E 'mtu|state UP'

# every OSD host, both networks
for h in $(ceph osd metadata | jq -r '.[].hostname' | sort -u); do
  printf '%-24s ' "$h"
  ping -M do -s 8972 -c 1 -W 1 "$h" >/dev/null 2>&1 && echo OK || echo FAIL
done

Common causes

CauseWhere it happens
Switch port reset to defaultfirmware upgrade, port reconfiguration
New host provisioned without the settinghost build not standardised
VLAN sub-interface inheriting 1500interface created after the parent’s MTU was set
Bond member added with wrong MTUmember replacement
Inter-switch link left at defaultfabric expansion

The VLAN case is a frequent one: setting the MTU on a bond does not always propagate to sub-interfaces created on it, so bond0 shows 9000 and bond0.30 shows 1500.

Immediate mitigation

If you cannot fix the mismatched device immediately, lowering MTU to 1500 everywhere restores correct behaviour at a small performance cost. That is usually preferable to leaving a cluster in a state where large transfers hang.

Quiz

Knowledge check · 4 questions

  1. Q1. Which test definitively confirms an MTU mismatch along a path?

  2. Q2. A bond interface set to MTU 9000 always propagates that MTU to VLAN sub-interfaces created on it.

  3. Q3. Work a slow-ops incident efficiently.

    After a fabric expansion added two new leaf switches, the cluster begins accumulating slow ops during recovery. Devices show low utilisation, CPU is idle, and OSD logs show operations timing out with no device errors. The cluster uses MTU 9000.

  4. Q4. Why does an MTU mismatch appear to the OSD as a slow op rather than a connection error?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Put ping -M do at the top of the slow-ops runbook for any cluster using jumbo frames, and script the full-mesh sweep so it can be run in one command. Add MTU verification to the network change checklist on both the storage and network sides — nearly every occurrence follows a network change, and the check is faster than the incident.

Cross-course references

  • Kubernetes: overlay MTU mismatches produce identical hang-on-large-payload symptoms
  • Linux: path MTU discovery failure with filtered ICMP is a general and well-documented hazard