SLES TCP - Smaller MSS not honored
This document (3344651) is provided subject to the disclaimer at the end of this document.
Environment
Situation
BroadcomNetwork 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
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:
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 themanufacturer 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 offeach 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
For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com