One of the most frequent problems encountered from users of DSL internet connectivity (especially PPPoE DSL service) is when they experience incomplete connections or unreliable data transfers when they communicate with internet servers.
A prominent example is when a user accesses a web site and some times it works and some times it does not.
All these problems occur mainly because of MTU (Maximum Transmission Unit) and MSS (Maximum Segment Size) values that need to be adjusted on the customer’s broadband DSL router connecting the office to the ISP.
Note that MTU is the maximum frame size at Layer 2 and MSS is the maximum segment size of TCP packets at Layer 4 of the OSI model.
In this example we will consider a Cisco 800 series broadband router (e.g 850, 870 etc) connected with a DSL line using PPPoE protocol (you can find out if you are using such a connectivity method from your ISP. It is a very common DSL access method in USA and the rest of the world also).
Before going any further, let’s put down some numbers regarding packet sizes:
- Normal Ethernet packets have an MTU value of 1500
- PPP protocol uses 8 bytes header size
- IP Header is 20 bytes
- TCP Header is 20 bytes
So, an Ethernet connected device (PC computer, Web Server etc) by default will send traffic with maximum 1500 bytes (1500 includes all headers plus data).
A broadband Cisco 800 router working with PPPoE DSL connectivity has two interfaces connected: One virtual WAN “Dialer” interface facing the ISP (attached on the physical FastEthernet 4 port) and one internal “Vlan 1” interface facing the LAN network (see the post here for an example how to configure PPPoE).
We need to adjust two values (one for MTU and one for MSS) on each router interface (dialer and vlan1).
On the Dialer interface (WAN interface) we need to adjust the MTU value to 1500-8 = 1492 in order to accommodate the 8-bytes PPP header size.
On the Vlan1 interface we need to adjust the MSS value to 1500-8-20-20 = 1452 bytes (this is 1500 minus the PPP, TCP, and IP headers).
So, always remember that to obtain the MSS value you need to subtract the TCP and IP headers as well. Let’s see a configuration snapshot below:
Cisco800(config)# interface dialer 1
Cisco800(config-if)# ip mtu 1492
Cisco800(config)# interface vlan 1
Cisco800(config-if)# ip tcp adjust-mss 1452
If you still experience problems with web traffic access, then you can still reduce the MSS value lower than 1452 (some people suggest lowering this value to 1412).