Create a VXLAN with MTU = 1500

mtuvxlan

I have a cluster of servers interconnected with 10 Gbps fabric interfaces (ens1f0, MTU 1500). I've set up a VXLAN interface across the cluster using default settings (MTU 1450). For reasons of compatibility, I want to have MTU 1500 with my VXLAN interface. Is it possible?

I'm currently using this command on all servers to create the VXLAN interface:

ip link add vxlan0 type vxlan id 10 group 239.1.1.1 dstport 0 dev ens1f0

Best Answer

A frame's or packet's payload cannot exceed the maximum frame/packet size minus the overhead.

VXLAN is VLAN-enabled L2-tunneling over UDP. It encapsulates Ethernet frames in UDP datagrams, in turn encapsulated in IP, in turn encapsulated in Ethernet (simplest case). Since that overhead eats away 50 bytes of the payload capacity, you'd need to use "baby giants", slightly oversized outer frames on the outside, with an MTU capability of 1550 bytes. That way, an inner frame (minus overhead) could still support a payload of 1500 bytes.

Check your equipment and the entire(!) path between VXLAN endpoints if they support those baby giants and how to configure them. Note that with any non-standard frame size, all nodes in each intermediate segment need to be able to handle them. There is no negotiation for frame sizes, and nodes generally drop oversized frames as giants.