CephXXX · Network Failure BehaviourNetwork Failure Behaviour
MTU mismatch: the most baffling slow-ops cause
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
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.
pingsucceeds. 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
| Cause | Where it happens |
|---|---|
| Switch port reset to default | firmware upgrade, port reconfiguration |
| New host provisioned without the setting | host build not standardised |
| VLAN sub-interface inheriting 1500 | interface created after the parent’s MTU was set |
| Bond member added with wrong MTU | member replacement |
| Inter-switch link left at default | fabric 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
Q1. Which test definitively confirms an MTU mismatch along a path?
Q2. A bond interface set to MTU 9000 always propagates that MTU to VLAN sub-interfaces created on it.
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.
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