ICMP path MTU packet delivery

Please enable javscript for this test to work...

In this test your browser uploads a sizeable payload to our server, while your long TCP segments are being dropped. Our server will generate an ICMP message asking you to reduce the MTU to a laughingly small value.

ICMP is critical to a well functioning Internet connections, yet networks are often misconfigured. Broken ICMP (being an ICMP blackhole) can lead to serious issues:

  1. Slow DNS lookups.
  2. Glitches and lag when playing games using UDP.
  3. TCP connections failing occasionally for no apparent reason.
Run this test from your server:
perl -e "print 'packettoolongyaithuji6reeNab4XahChaeRah1diej4' x 180" > payload.bin
curl  -v -s http://icmpcheck.popcount.org/icmp --data @payload.bin
You should see ICMP or ICMPv6 packet-too-big messages from the server:
$ sudo tcpdump -ni any icmp or icmp6
IP server > client: ICMP server unreachable - need to frag (mtu 905), length 136
IP6 server > client: ICMP6, packet too big, mtu 1285, length 136

IP fragmented packet delivery

Please enable javscript for this test to work...

In this test we send a large payload from the server, to your browser. Each TCP segment sent by the server will be fragmented into multiple IP packets.

A failure of this test means:

  1. Some UDP based protocols (like games, NTP) might occasionally fail.
  2. Certain DNS queries may time out, slowing down your internet experience.
  3. Your ISP, firewall or CPE is not supporting basic Internet Protocol features.
Run this test from your server:
curl -v -s http://icmpcheck.popcount.org/frag -o /dev/null
You should see fragmented IP packets:
$ sudo tcpdump -ni any '(ip[6] & (1<<5)) != 0 or (ip[7] != 0) or (ip[6] & ((1<<5)-1) != 0) or ip6[6] == 44'
IP server.80 > client.36090: Flags [P.], seq ..., length 480: HTTP
IP server > client: ip-proto-6
IP server > client: ip-proto-6
IP server > client: ip-proto-6
IP server > client: ip-proto-6
IP6 server > client: frag (0|512) 80 > 55660: Flags [.], seq ..., length 480: HTTP
IP6 server > client: frag (512|512)
IP6 server > client: frag (1024|221)