Fixing MTU Mismatch: When Jumbo Frames Backfire in vSphere Infrastructure

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

MTU Mismatch: The ‘Silent Killer’ in Production

My 8-host ESXi cluster suddenly started acting up last week. The initial symptoms were quite strange: database virtual machines (VMs) could still ping each other, but whenever a data backup or large file transfer started, the connection would drop midway. Even vMotion processes would crawl to exactly 14% before freezing and throwing a timeout error.

After 2 hours of investigation, I found the culprit: MTU Mismatch. A new colleague had enabled Jumbo Frames (MTU 9000) on the VMkernel but forgot to configure it on the physical Cisco Nexus switches. As a result, throughput plummeted from 10Gbps to less than 200Mbps, accompanied by a massive amount of ruthlessly dropped packets.

MTU (Maximum Transmission Unit) is simply the largest packet size a network port can handle. In the VMware world, if just one link in the chain (VM -> vSwitch -> Physical Switch -> Storage) is out of sync, your system will run into trouble immediately.

Quick 5-Minute Check with vmkping

Don’t sit around guessing when the network is flaky. SSH directly into the ESXi host and use the vmkping command. This is the fastest way to verify if large packets are actually passing through.

To test Jumbo Frames (MTU 9000), run the following command:

# Standard syntax on ESXi:
# -d: Disallow fragmentation
# -s 8972: Actual payload (9000 bytes - 28 bytes header)

vmkping -I vmk0 -d -s 8972 192.168.10.20

Interpreting the results:

  • If you see “Reply”: The connection is working perfectly.
  • If it reports “Message too long”: MTU is definitely being bottlenecked somewhere.

4 Links to Check for MTU Synchronization

Fixing this error isn’t difficult; the key is to review all 4 layers below. Don’t skip any unless you want to keep dealing with headaches.

1. VMkernel Port

This is where critical traffic like vMotion, iSCSI, or vSAN is handled. If you decide to use Jumbo Frames for storage, you must set the MTU to 9000 here.

Action: Networking -> VMkernel adapters -> Edit -> Change MTU to 9000.

2. vSwitch or Distributed Switch (vDS)

Think of the vSwitch as a funnel. If the VMkernel is set to 9000 but the vSwitch remains at the default 1500, packets will get stuck right at the gateway. Check quickly with the command:

esxcfg-vswitch -l

3. Physical Switch

This is the most commonly forgotten link. Enterprise switch lines from Cisco, Dell, or Arista usually default to an MTU of 1500. You need to log into the switch and configure the MTU on the corresponding ports.

Pro tip: I usually set the MTU on the physical switch to 9216. This number helps accommodate additional headers if you later deploy protocols like VXLAN or NSX.

4. Guest Operating System (Guest OS)

Finally, check inside the Guest Operating System (Guest OS). If your application requires a large MTU (such as specialized systems for Video Streaming), remember to adjust this parameter in the Windows or Linux network card settings.

Using PowerCLI to Scan the Entire Cluster

Clicking through every host to check MTU is a nightmare if your cluster has dozens of nodes. Instead, I use this PowerCLI script to find “out of sync” hosts in just a few seconds:

# Check MTU on all vSwitches
Get-VMHost | Get-VirtualSwitch | Select-Object @{N="Host";E={$_.VMHost.Name}}, Name, MTU | ft

# Check MTU on VMkernel ports
Get-VMHost | Get-VMHostNetworkAdapter | Select-Object @{N="Host";E={$_.VMHost.Name}}, Name, IP, MTU | ft

Which line shows 1500 while the rest of the team is at 9000? That is exactly where you need to take action.

Hard-Won Lessons from the Field

After many late nights troubleshooting vSphere network issues, I’ve distilled 3 rules:

  • Only enable when necessary: Don’t abuse Jumbo Frames for the Management network. It only truly shows its power with iSCSI, vSAN, or vMotion by reducing CPU overhead.
  • End-to-End Rule: MTU must be consistent from start to finish. If using iSCSI, check the MTU settings on the storage array controllers (NetApp, Dell EMC) as well.
  • Always remember the number 28: When pinging 9000 bytes without subtracting the 28-byte header, the command will always fail. Don’t let this small detail confuse you during troubleshooting.

Handling an MTU Mismatch doesn’t require advanced technical wizardry, but it does require meticulousness. I hope this experience helps you feel more confident when managing VMware infrastructure.

Share: