From: JF Mezei on
Not sure what router you have.

"good" routers have a command line where you can force an "adjmss"
(adjust mss).

When you establish a TCP comnection, your computer will say "i can
handle 1500 MTU". Your router will adjust this value to the value you
specified, and the remote server will then know that you have a max MTU
of 1492 (or whatever you had set it to). When the packet from the server
comes back, the computer is also told that the MTU for this connection
is 1492, so it will create packets max of 1492.

(MSS is MTU - 40 for all practical purposes).



Without an "adjmss" function, your router will pass any packet below its
MTU value unchanged. So the remote host would see your computer's "I can
do 1500" and send 1500 byte packets to you, which would either cause
packet fragmentation at your ISP's router before getting in the PPpoE
portion of the travel or be rejected and the remote server told that
fragmentation is required. (at which point they go into MTU negotiation).


http://www.speedguide.net:8080 will tell you what your "advertised" MTU
is (aka: what a remote host is initially told your can handle).

Set your Mac to 1500, your router to 1492 or less. Try that web site. If
it shows your MTU of 1500, it means that your router isn't doing adjmss
and this will result in problems.

You also want to make sure that MTU Discovery is ON.
From: David Empson on
Wes Groleau <Groleau+news(a)FreeShell.org> wrote:

> On 08-07-2010 06:51, Peter James wrote:
> > With them both set to 1492 MTU no success, but with both set to 1454 MTU
> > normal results achieved. But why didn't that happen when I previously
> > tried them both at 1454?
>
> Maybe you didn't press hard enough on the mouse button to click Save ?
>
> I am not familiar with what MTU is, but when the two ends of a
> connection disagree on a setting, unexpected behavior is to be
> expected. :-)

MTU = Maximum Transmission Unit.

It is the maximum length of an IP packet sent over a network connection,
including headers for IP and for TCP or UDP. It can be configured
separately for each network interface on the computer.

When you adjust this setting on the computer, it limits the maximum
length of transmitted IP packets (but doesn't limit receive packet
length, so other devices may still send packets as long as whatever the
network protocol can handle).

The normal setting for Ethernet is 1500. (There is a "Jumbo Frames"
feature which can be used with Gigabit Ethernet to allow an MTU up to
9000, but it can only be used if ALL devices on the local network
support jumbo frames.)

If the packets have to travel over any other connection (e.g. your
broadband connection) it may require a lower MTU over that connection,
due to different rules or extra overhead for some network types. 1492 is
quite common for broadband connections.

When a packet exceeds the allowed MTU of another network over which it
must travel, what is supposed to happen is that the router will
automatically break the packet up into two or more IP fragments. These
get delivered separately and reassembled at the final destination. The
fragmentation adds overhead (at least another IP header, possibly
padding and additional time).

There is an optional flag in the IP header called "Don't Fragment" (DF
for short). If this flag is set, a packet length which exceeds the MTU
for a network will be discarded rather than being fragmented. When this
happens, the router is supposed to send back an ICMP packet to the
originating device telling it the packet had to be fragmented to go any
further. Unforunately some routers don't send these packets, and some
firewalls might block them from arriving.

The DF flag is used as part of the mechanism known as "path MTU
discovery". The software tries to send a packet of maximum length to the
destination with DF set. If there is any network segment on the path to
the destination with a lower MTU, an ICMP Fragmentation Needed packet
will come back, and the information from that packet can be used to
lower the effective MTU for that connection. This is repeated as
required until the packet arrives at the destination, at which point a
reasonable maximum length is known and the connection can be established
using that limit.

Not all software does this.

Some software misuses the DF flag and sets it when it shouldn't be doing
so. This causes long packets to be dropped if they hit a network segment
which has a lower MTU than the packet size.

If you know that most packets from your computer must travel through a
connection with an MTU lower than 1500, then it makes sense to reduce
your MTU to the same as the broadband connection. This will reduce
fragmentation overhead and improve performance, as well as avoid issues
with anything on your computer which sets the DF flag.

It doesn't help with packets coming the other way - if they are sent by
a device which is on a network that allows 1500 byte packets, they will
have to be fragemented when they hit the ISP end of your broadband
connection (if that didn't happen already).

Setting the MTU unnecessarily low will reduce performance, as the same
amount of data will need to be sent in more IP packets, with additional
overhead for IP headers, TCP headers, possibly padding, and timing.

--
David Empson
dempson(a)actrix.gen.nz