SLES TCP - Smaller MSS not honored

This document (3344651) is provided subject to the disclaimer at the end of this document.

Environment

SUSE Linux Enterprise Server 10
 

Situation

Intel GIG Network card
Broadcom
Network card
TCP Segmentation Offloading

Packets being dropped.
SUSE Linux Enterprise Server is not honoring smaller MSS values from other devices.
Since packets are larger than the MSS whatever application is trying to get data delivered will be impacted.

For example: eDir might not be able to add a server to an existing tree. The packet attempting to add the server may be larger than the MSS and therefore will not be delivered to it's destination.


Explanation:
When a TCP connection is established there will be a TCP handshake. In that TCP handshake, both sides of the connection will send their Maximum Segment Size or MSS. Data being transferred on that TCP connection can never exceed the smaller of the two advertised MSS sizes.

Example:
In a TCP handshake one side sends an MSS of 1380 and the other side sends an MSS of 1460. According to TCP RFC specifications, neither side of that TCP connection can send more than 1380 bytes of data in a single packet.

Resolution

The TCP code for SUSE Linux Enterprise Servers is compliant with TCP RFC specifications and is therefore not the root of this issue.

TCP segmentation which has typically been the responsibility of the TCP code can now be handed off to a local network interface. This is called TCP Segmentation Offloading or TSO.

To verify whether TCP Segmentation Offloading has been handed off to a local interface run the following command as root in a terminal window:
ethtool -k eth0(Where eth0 is the interface you are checking.)
If the command comes back with information that TSO is ON then turn it OFF by doing the following command.
ethtool -K eth0 tso off

Note that a lowercase k is used to find the information, and an uppercase K is is used when setting the TSO LAN driver option.

Turning off TSO on the LAN driver will make the SLES TCP implementation do the segmenting of data.
If this resolves the issue then the SLES TCP implementation in the kernel is working properly.

The solution of letting the SLES TCP implementation handle TSO functionality will be the solution until such time as the
manufacturer of the network interface driver that has the TSO defect addresses their defect. At that time you will then have the choice to use their solution or continue to use the SLES TCP implementation.

You may wish to make sure that the TSO feature of the network card driver is turned off
each time the driver is loaded. This can be done in the following manner. This example shows eth0 but these steps can be done for other interfaces by replacing the eth0 reference with the correct interface number.

 

Step 1) Edit the /etc/sysconfig/network/ifcfg-eth* file to include a POST_UP_SCRIPT line.


POST_UP_SCRIPT='eth0'

 

 

Step 2) Create an eth0 script in /etc/sysconfig/network/scripts The file should contain the following lines:

 

#!/bin/bash

ETHTOOL=`which ethtool`

${ETHTOOL} -K eth0 tso off

 

 

Step 3) Make the eth0 script executable:

 

chmod 770 /etc/sysconfig/network/scripts/eth0

 

That's it. The TSO functionality of the eth0 driver will be turned off every time the driver is loaded.

Additional Information

http://en.wikipedia.org/wiki/TCP_segmentation_offloading

TCP segmentation offloador TSO is a technology for reducing CPU overhead of TCP/IP on fast networks. TSO is also referred to aslarge segment offloador LSO.

When large chunks of data are to be sent over a computer network, they need to be first broken down to smaller segments that can pass through all the network elements like routers and switches between the source and destination computers. This process is referred to as segmentation. Segmentation is often done by the TCP protocol in the host computer. Offloading this work to the network card is called TCP segmentation offload (TSO).

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.

  • Document ID:3344651
  • Creation Date: 13-Jul-2007
  • Modified Date:04-Mar-2021
    • SUSE Linux Enterprise Server

< Back to Support Search

For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com

SUSE Support Forums

Get your questions answered by experienced Sys Ops or interact with other SUSE community experts.

Join Our Community

Support Resources

Learn how to get the most from the technical support you receive with your SUSE Subscription, Premium Support, Academic Program, or Partner Program.


SUSE Customer Support Quick Reference Guide SUSE Technical Support Handbook Update Advisories
Support FAQ

Open an Incident

Open an incident with SUSE Technical Support, manage your subscriptions, download patches, or manage user access.

Go to Customer Center