Introduction to MTU
What is MTU
The Maximum Transmission Unit (MTU) (maximum size of transfer unit) is a parameter that determines the longest datagram can be transmitted by an IP interface without needing to be fragmented into smaller units. The MTU should be larger than the largest datagram you want to convey without being fragmented. (More simply, the MTU defines the maximum size (in bytes) of the packet can be transmitted at once.)
For ethernet, this value should be 1500 bytes.
For PPPoE connections, 1492
For CTS (low speed), 576
Calculate the MTU
Each transmission frame is defined by the body (= MMS = maximum segment size) which defines the largest segment of TCP information can be transmitted, and the header (header in English).
Either MTU = MSS + TCP / IP headers
Consider:
MSS = MTU-40 <- 40 for the header (20 byte IP and 20 byte TCP)
packets are not fragmented
no lost packets
Packet size / speed
Either a transfer of information of 1500000 bytes using different size of packets through a T1 line (CTS) (T1 = 1544000 bits / sec) as follows:
(MSS + header) * 8 bits / byte
---------------------------------- = Latency
1,544,000 bits / sec.
By using different values of MTU, one can calculate the latency of transmission:
If MTU = 1500, then: (1460 +40) * 8 / 1544000 = 7772 ms
If MTU = 576, then: (536 +40) * 8 / 1544000 = 2924 ms
At 10 loops, we get 77.72 ms for the MTU to 1500, and 29.24 ms for the 576.
To summarize, the more packets there are, the longer the transfer ;-)
Use the same formula for the transfer of 1mb.
1MByte = 1024 KB = 1,048,576 bytes.
If MTU = 1500, then: (1460 +40) * 8 / 1544000 = 7772 ms
1 MByte / MSS = 1048576 bytes / 1460 = 718.2, so 719 packages to transfer 1 MByte.
Itself to transfer 1Mbyte: 719 ms 7772 * packets (always loop) = 5588.068 ms, or 5588 seconds.
If we transfer our 1 MByte in 10 loops (defined by the header), we will ideally:
(1 packet loops * 10 * 7.772ms delay) + 718 * 7772 = 5658 seconds.
If MTU = 576, then: (536 +40) * 8 / 1544000 = 2924 ms
1 MByte / MSS = 1048576 bytes / 536 = 1956.3, therefore 1957 packets to transfer 1 MByte.
To transfer 1 MByte: 1957 packets * 2924 ms (always loop) = 5722.268 ms, or 5722 seconds per loop.
If we transferred the 1 MByte in 10 loops:
(1 packet loops * 10 * 2.924ms) * 2924 + 1956 = 5748 sec.
The difference is that most packet size is large, less that of the header is important (relatively ^ ^)
So to transfer 1Mbyte, if one uses an MTU to 1500 then there is 719 * 40 = 28,760 bytes for the header, while the MTU to 576, we get 1957 * 40 = 78,280, more than 49,520 bytes of 'header sent Mbyte each. For our example of 10 loops, it is not considerable, but on the daily transfers ...
Most modems use a larger header, and we do not take into account and such other latencies that may be associated.
Find the value of the MTU on Windows
To find the maximum MTU, it should be in the command prompt (Start> Run> "cmd"). Once in the command prompt (black page), it is necessary to test ping, indicating the size of packages to test:
ping-f-l (size of the package -28) (IP of your server)
the-f option allows you to take the test by requiring routers encountered not fragment the packet
the-l option sends the packet size
Removing 28 to the packet size to be tested corresponds to the header of this package
We must take the test to an IP. For the sake of Internet browser, it is better to take a web address.
This gives:
ping-f-l 1372 192.168.0.1
- If the answer to the query is:
Reply from 192.168.0.1: bytes = 1372 ....
Reply from 192.168.0.1: bytes = 1372 ....
Reply from 192.168.0.1: bytes = 1372 ....
Reply from 192.168.0.1: bytes = 1372 ....
Here the packet size allows transport without fragmentation, one can test a higher value. When you get the message: "The package must be fragmented but DF set", the packet size is too large.
Changing the MTU on Windows
Once you have determined the optimal MTU, there are two ways to change the value of MTU. I mention here the easiest to implement, via the software Dr TCP:
http://www.sos-adsl.com/modules/mydownloads/singlefile.php?lid=72
Once installed, you have a box "MTU", or we must find the value in the test under DOS by adding 28 for the header.
Find the value of the MTU on Linux
Just run this command as root with nom_interface to replace with the name of the network interface concerned:
interface_name ifconfig | grep-Eo "MTU: [0-9] +"
Changing the MTU on Linux
In root with the ifconfig command that changes the mtu on Linux with the following syntax:
interface_name ifconfig mtu value_mtu
Example: set the mtu of eth0 interface to 1500
ifconfig eth0 mtu 1500