ST-CS-10-339-75
March 2002

2.  MTU  (U)

MTU stands for Maximum Transmission Unit. It is the maximum number of bytes of data which can be sent in one packet. The network layer does not normally send packets containing less data than the maximum permitted size for efficiency reasons (discussed shortly), so this setting more or less dictates the size of packets sent by the computer.

The crucial issue with MTU size is that the larger the MTU setting, the more data is buffered on the computer before being sent, and so the client sends packets less frequently, which is bad, since until a packet is sent to the server, the actions taken by the player represented by the data in that packet have not yet occured in the game (since the server doesn't know about them).

A secondary issue is that when large packets are sent from one computer to another, they often cross data links which support only a much smaller maximum packet size. This requires the large packets to be broken up, sent, and reassembled - which increases the time required for the packet to travel from A to B.

The obvious conclusion then is to set MTU as small as possible. However, it's not quite so simple. This is because every packet sent has a 40 byte header attached to it. This header contains essential control information, such as the IP address of the destination, checksums, amount of data in the packet and so on.

The consequence of this is that if the MTU size is small, the headers end up eating up a lot of the available bandwidth. For example, a perfect 56k modem connection can upload 4200 bytes of data per second. If the MTU size was set to say 90, the header, being 40 bytes, is 44 percent of the total packet size. If 44 percent of a 4200 bytes per second connection is used up sending headers, that leaves only 2772 bytes for actual data sent by the client - so the client has to change his cl_rate setting to 2772 and reduce the number of updates per second to the server since he has less bandwidth available.

The smallest MTU value supported by Windows is 68 bytes. Windows does not define an upper bound, but the network that the PC is connected to does define an upper bound and Windows respects this value. Also, some networks define a lower bound, and Windows respects that value as well, as long as it's above 68.

If MTU is set to a value below or above the minimum and maximum sizes, respectively, Windows ignores the set value and uses the minimum or maximum value (as appropriate).

In general, most Windows users connect to the Internet using PPP over analogue modem and ISDN or Ethernet over cable and xDSL. The network in use by the PC is PPP or Ethernet. All Windows users run TCP/IP over their connection.

Note that both TCP/IP and the network have headers, both of which must be taken into account

Network Header MinMTU MaxMTU
PPP 6 128 65535
Ethernet 38 46 1500
TCP/IP 40 576 65535

56k modem users and ISDN users, both using TCP/IP over PPP, have 46 bytes of headers. Cable and xDSL users have 78 bytes worth of headers.

So, to get the point of all this;a packet is not sent until an MTUs worth of data is available to be sent. If the MTU value is large, then obviously the delay is longer since it will take longer for that much data to have been generated.

However, if the MTU value is too small, the headers inherent in the system dominate the bandwidth available and the reduction in bandwidth available for actual user data is excessive.