This is our old Q&A Site. Please post any new questions and answers at

Hi experts,

I want to understand MSS impact in uplink and downlink speed. While I understand lower MSS size i.e. mss < 1460 will directly impact heavy data transfers & may add certain delay as well as addition CPU cycles on resepctive nodes - I want to understand -

  1. in a single TCP stream - is there separate MSS value for uplink and downlink both ? From RFC I could find following information. I want to understand how practical these guidelines are ? Does vendor necessarily implement distinct MSS configurations for uplink & downlink respectively ?

    RFC 879 :

        3.  The TCP Maximum Segment Size Option
           TCP provides an option that may be used at the time a connection is
           established (only) to indicate the maximum size TCP segment that can
           be accepted on that connection.  This Maximum Segment Size (MSS)
           announcement (often mistakenly called a negotiation) is sent from the
           data receiver to the data sender and says "I can accept TCP segments
           up to size X". The size (X) may be larger or smaller than the
           default.  The MSS can be used completely independently in each
           direction of data flow.  The result may be quite different maximum
           sizes in the two directions
  2. If we reduce MSS size to 1360 (for ex.) what could be possible impact ?

  3. How should I measure this impact for analysis ? Any possible hints on criteria ?
  4. Is it possible to see slow uplink speed as compared to reasonable downlink speed on the same TCP stream ? What could be possible reasons ?

Regards, Vijay

asked 01 Oct '17, 21:45

Vijay%20Gharge's gravatar image

Vijay Gharge
accept rate: 0%

  1. Both endpoints signal their MSS in the SYN or SYN/ACK packet, which is deducted from the local MTU. While not exactly a negotiation, both will use the lower of the two MSS values automatically, because it wouldn't make any sense to send more than what can either MTU allows (which would require fragmentation otherwise).
  2. Less data transfer efficiency compared to 1460 for example, so the maximum bandwidth will be lower
  3. My main criteria would be "MBit per second throughput", averaged over the whole data transfer. It should be higher for 1460 compared to 1360.
  4. First of all, most connections are very asymmetric - sending a request takes a small amount of bandwidth while receiving the requested data my be using a huge amount of bandwidth. This makes it hard to compare speeds. I'd normally go and check for signs of trouble in the TCP stream: long delta times between packets, packet loss, DUP ACKs, etc.
permanent link

answered 02 Oct '17, 02:43

Jasper's gravatar image

Jasper ♦♦
accept rate: 18%

thanks for response. This helps a lot.

(02 Oct '17, 23:59) Vijay Gharge
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text]( "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:


question asked: 01 Oct '17, 21:45

question was seen: 1,471 times

last updated: 02 Oct '17, 23:59

p​o​w​e​r​e​d by O​S​Q​A