<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Sat, 20 Nov 2010 12:05:54 +0000
From   : pete@... (Pete Turnbull)
Subject: Rockin' out with awServer :-)

Rick Murray wrote:
> Isn't the MTU something weird like 1460?
> 
> Ah, here we go.
> My Livebox claims its MTU is 1492 bytes. That doesn't divide by a power 
> of two. Odd size...

Your livebox uses PPPoE, that is, it sends PPP packets over Ethernet.

The maximum Ethernet frame size is 1518 octets.  The header takes 6 
octets for each of the source and destination addresses, and 2 for the 
frame length and type, which makes 14, and there's a 4-octet frame-check 
sequence at the end.  So the maximum payload is 1500 octets, for 
whatever protocol is wrapped in the Ethernet header/trailer.  For PPPoE 
there's the further overhead of the minimum PPP header, which is eight 
octets, leaving 1492 for the payload.

There can be other reasons for a lower MTU (such as Ethernet 802.3 
frames that have an LLC/SNAP header which coincidentally also takes 8 
octets) but for the Livebox I believe it's because it's using PPPoE.

Incidentally, the minimum Ethernet frame size is 64 octets, with a 46 
octet payload.  It's not hard to see why that was chosen.  It's a handy 
power of two, picked because CSMA/CD Ethernet needs a certain minimum 
packet length to detect collisions, and 32 was too small.

It's a bit harder to understand where the 1518 maximum (1500 MTU) comes 
from, but the usually-suggested reason is the evolution of old (DIX) 
Ethernet specs to 802.3.  The original Ethernet specs didn't need a 
length field; all the things that were carried over Ethernet in the 
early days had their own limits built in.  However, it did have a type 
field, and it so happens that all the useful type numbers were bigger 
than 1500.  The choice seems to have been made then to assume that any 
number in that field bigger than 1518 (now 1522, allowing for 802.1p/q 
QoS and VLAN tags) was a type indicator, and anything small was a length 
indicator.  Actually, the official differentiation is 0x600 which is 
slightly bigger than 1522, chosen to make it easy to check very quickly 
in software (any top bits set => type field).

-- 
Pete                                           Peter Turnbull
                                               Network Manager
                                               University of York
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>