MTU & MSS Calculator

// effective mtu · tcp mss · tunnel overhead · mss clamping
IP Header20 bytes
TCP Header20 bytes
Tunnel Overhead0 bytes
Effective MTU 1500
Recommended TCP MSS 1460

When TCP MSS is too high, large packets get silently dropped causing connections that hang after the TCP handshake. MSS clamping fixes this without changing MTU on endpoints.

# Linux iptables — clamp MSS to calculated value (update 1460 to your MSS) iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \ -j TCPMSS --set-mss 1460 # Or clamp to path MTU automatically iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \ -j TCPMSS --clamp-mss-to-pmtu
# Cisco IOS — clamp MSS on interface interface GigabitEthernet0/0 ip tcp adjust-mss 1460 # pfSense — set in Interfaces > WAN > MSS field # or Firewall > Rules > Advanced > MSS
# Test for MTU/MSS issues — ping with DF bit set # Linux: adjust 1472 down until ping succeeds = correct MTU ping -M do -s 1472 8.8.8.8 # 1472 + 28 byte IP/ICMP header = 1500 MTU # Windows: ping -f -l 1472 8.8.8.8 # If you get "Frag needed" or timeout, reduce size until it passes
Interface / TunnelTypical MTUTCP MSSNotes
Standard Ethernet15001460Default everywhere
VLAN (802.1Q)149614564 byte tag overhead
PPPoE (DSL/Broadband)14921452Very common ISP issue
GRE Tunnel1476143624 byte GRE overhead
WireGuard14201380Recommended WG MTU
OpenVPN UDP14521412Varies by config
IPsec ESP (Tunnel)1472143228 byte ESP overhead
IPsec + NAT-T14441404UDP encapsulation adds 8 bytes
VXLAN1450141050 byte VXLAN overhead
Jumbo Frames90008960Data centre / storage networks