For some reason that has escaped me Path MTU Discovery in Windows just doesn’t seem to figure out the MTU for a given path (something to do with routers being poorly configured to not respond to ICMP requests). So Windows uses the default. For the most part this doesn’t affect anyone, however if it dos affect you, it really annoys you. Failure of PMTUD will result in some websites not loading correctly, having trouble connecting to normally reliable online services and general Internet weirdness.
The resolution is to set your default MTU to one lower than the Ethernet default of 1500. Here is how:
Step 1: Find your MTU
From an elevated CMD Shell enter the following command:
Code: Select all
netsh interface ipv4 show subinterfaces
Code: Select all
MTU MediaSenseState Bytes In Bytes Out Interface
---------- --------------- --------- --------- -------------
4294967295 1 0 13487914 Loopback Pseudo-Interface 1
1500 1 3734493902 282497358 Local Area Connection
Step 2: Find out what it should be
In the CMD shell type:
Code: Select all
ping www.cantreachthissite.com -f -l 1472
If the packet can’t be sent because it would need to be fragmented you will get something similar to this:
Packet needs to be fragmented but DF set.
Keep trying lower packet sizes by 10 (i.e. -l 1460, 1450, 1440, etc.) until you get a successful ping request. Raise your packet sizes by one until you get a “Packet needs to be fragmented but DF set.”. The last successful value plus 28 will be your MTU value.
In my case a packet size of 1430 succeeds but 1431 fails, so 1430 + 28 = 1458.
Step 3: Set your MTU
Now you have identified the interface you need to change and the ideal MTU for you, now it is time to make the change. Again from an elevated CMD Shell type the following replacing my MTU of 1458 with your own value:
Code: Select all
netsh interface ipv4 set subinterface "Local Area Connection" mtu=1458 store=persistent
Code: Select all
netsh interface ipv4 set subinterface "Wireless Network Connection" mtu=1458 store=persistent