The TCP MSS Adjustment
feature allows the configuration of the maximum segment size (MSS) on transient
packets that traverse a Cisco ASR 9000 Series Router.
When dealing with
PPPoE or L2TP cases, an additional header that the client initiating a TCP
session may not be aware of is added to the packet. This can result in lost
packets, broken transmissions, or fragmentation when packet sizes exceed the
maximum transmission units (MTUs) due to the added headers.
Here is a sample
scenario that shows how the TCP MSS adjust feature works:
Figure 1. Sample TCP MSS
In this example, the
HTTP client sends to the HTTP server a TCP synchronize (SYN) packet that
signals an MSS value of 1300 (MTU) - 20 TCP - 20 IP header = 1260. On receiving
it, the HTTP server acknowledges it with a SYN ACK message. The HTTP client
confirms the TCP session with a single acknowledgment and opens up the TCP
This is a sample
scenario without PPPoE or L2TP.
When the HTTP server
picks up a large file, it segments it into 1460 byte chunks (assuming that
there are no http headers for now). When the HTTP server sends the packet, the
first Cisco ASR 9000 Series Router (on the right) detects that the MTU is 576
downstream to the client and requires a 1300 byte packet to be fragmented.
If the server sets
the DF ("don't fragment") bit, then the packet is dropped. And, if the packet
does not have the DF bit set, then it gets fragmented, requiring the client to
reassemble the packets. In digital subscriber line (DSL) or fibre-to-the-home
(FTTH) like access, a CPE may block incoming fragments as a security mechanism,
causing this transmission to be lost.
In a typical scenario,
having packets that are dropped causes partial downloads, an obstruction, or a
delay in displaying images in web pages. MSS adjust overcomes this scenario by
intercepting the TCP SYN packet, reading the MSS option, and adjusting the
value so that the server does not send packets larger than the configured size
Note that the TCP MSS
value is only adjusted downward. If the clients request an MSS value lower than
the configured value, then no action is taken.
In the case of PPPoE,
an extra 8 bytes and in the case of L2TP, an extra 40 bytes is added to the
packet. The recommended MSS adjust values are 1452 for PPPoE, and 1420 for L2TP
scenarios, assuming a minimum MTU of 1500 end-to-end.
global values for PTA and L2TP are supported, which once configured allows all
future sessions to be TCP MSS adjustment; however, the sessions already
established will not be TCP adjusted. If the global value is changed, then all
new TCP subscriber sessions, will get the new global value.
For more information
about configuring the TCP MSS value of packets, see
Configuring the TCP MSS Value of TCP Packets.
To disable this on
a session, you must first disable the global configuration, then delete the
session and recreate it.
TCP encapsulated in
both IPv4 and IPv6 are supported.
are applicable for TCP MSS Adjustment:
Because the MSS
is TCP-specific, the TCP MSS Adjustment feature is applicable only to (transit)
TCP packets and the UDP packets are unaffected.
Adjustment configuration affects only the PPPoE PTA and LAC sessions types. It
does not affect IP sessions or any non-BNG interfaces.
The MSS option
must be the first option in the TCP header.
The router uses
the MSS value that the user configures for checking TCP/IPV4 packets. When
checking TCP/IPv6 packets, the router automatically adjusts the configured MSS
value down by 20 bytes to account for the larger IPv6 header. For example, if
the TCP MSS value is configured to 1450, then the router adjusts the TCP MSS in
an IPV4 packet down to 1450 and down to 1430 for an IPv6 packet.