The Book

There is no cloud, it's just someone else's computer !!!

User Tools

Site Tools


microsoft:misc:mtu_1

Change MTU [Maximum Transmission Unit]

When we transfer certain amounts of data in a packet we might cause that packet to fragment. The less fragmentations without requiring a collision or a re-send of a packet, the more efficient network traffic can be. The MTU defines the packet size. Different types of data or network links respond differently. To change the MTU on a Windows Server we’re going to use the netsh command. First, we’re going to use ping to ping a host on our network, using -f and then -l which allows us to define the MTU size. In this case we’re going to use 1500:

ping host.com -f -l 1500

We should get an error:

Packet needs to be fragmented but DF set.

Now, let’s try

ping host.com -f -l 1464

Now, let’s look at the interfaces along with what the current MTU is on each:

netsh interface ipv4 show interfaces
C:\Windows\system32>netsh interface ipv4 show interfaces
Idx     Met         MTU          State                Name
---  ----------  ----------  ------------  ---------------------------
  1          50  4294967295  connected     Loopback Pseudo-Interface 1
  2          10        1400  connected     Ethernet
 10          20        1500  connected     VMware Network Adapter VMnet1
 12          20        1500  connected     VMware Network Adapter VMnet8

Then, let’s make the mtu 1464 persistently using the Idx number of the interface to change from the above command in quotes:

netsh interface ipv4 set subinterface "2" mtu=1464 store=persistent

Generally operating systems (this even applies to Windows) by default excludes any headers when you ping while specifying the size (the size is considered to be the actual application data, payload or ICMP data bytes), this means that in case you ordered the OS to ping using a size of 100 bytes, the OS will actually create a packet of 128 bytes then encapsulate it with the 14 bytes Ethernet header and then throw the packet over the wire. This means that you have to take care that the OS will always add a 28 bytes to the size you specify to it (20 for the IP header and 8 for the ICMP header).

This seems very logical, but Cisco chose another perspective to adhere to, with Cisco IOS when you specify the size with ping you are actually specifying the datagram size (IP header + Transport header + Application Data), this means that Cisco includes the IP header (20 bytes) and the ICMP header (8 bytes) and thus you’ll have a total packet size of what you have specified in the size option of a ping.

http://krypted.com/windows-server/change-mtu-in-windows-server/

microsoft/misc/mtu_1.txt · Last modified: 2016/02/01 14:00 (external edit)