Cell Relay Archive

Cell Relay Retreat>List Archive>month:1995-Apr> msg00464



[Date Prev][Date Next][Thread Prev][Thread Next]  
  [Date Index][Thread Index][Author Index][Subject Index]

Re: TCP window size

  • From: Ernst Lopes Cardozo <e.lopes.cardozo@aranea.nl>
  • Date: Sun, 30 Apr 1995 05:34:42 -0500, Sun, 30 Apr 1995 10:29:18 GMT

fahad@cs.pitt.edu (Fahad A Hoymany) wrote:
>Vernon Schryver (vjs@calcite.rhyolite.com) wrote:
>: >  The MSS value is based on the smaller of the two MSS's advertized by
>: >  the two ends.
>
>: I'm sure Rick knows about the MSS option.
>
>: >                When connection is established a smaller MSS may be
>: >  used if fragmentation occurs.
>
>: Not quite.  The MSS used is the minimum of the two, regradless of
>: any considerations of fragmentation.  Of course, one of the reasons
>: for negotiating the MSS is to avoid fragmentation, but you do the
>: negotiating and use the negotiated value without noticing whether
>: fragmentation would otherwise occur.
>
>  
>  Let me see if I understand what you say above.  You are saying the MSS
>  value is based on the values reported by the two ends (which is correct)
>  but you are also saying that this is the value that's subsequently
>  used!  I don't think so.  Like I said above, during establishment the MSS
>  is the minimum of the two, but once you send the first data packet, a 
>  router that has to fragment your packet reports an ICMP message back to
>  you saying it has to fragment (assuming that you set IP's DF bit which 
>  is the case in most TCP applications). Then the connection is torn
>  down and a new connection is requested with a smaller MSS.
>
>
>Fahad

Hmm, this not not what I understood so far. Thought it is more like this:
Maximum Segment Size (MSS) is indicated by both parties during TCP 
session setup (in the initial frames that have the SYN flag up). MSS 
says: "this is the size of my front door, don't send anything larger or I 
won't be able to receive it. The indicated MSS is based on the 
size of internal buffers, etc.. MSS can very well be larger than the MTU 
(Maximum Transfer Unit) of the underlying network - IP takes care of 
fragmentation and reassembly. (MSS *can* be larger than MTU, but it 
wouldn't neccesarily be efficient of course). It is funny that it is 
called 'MSS negociation', because - my understanding - the MSS in one 
direction has nothing to do with the MSS in the other direction. It is 
not so much an negociation as a simple message: keep whatever you send 
down to this size or you have a problem. If host A has MSS=1k and host 
B's MSS=512, there is no reason for B to limit it's transmission to 512 
(unless it wants to do so for it's own internal reasons).

I can immagine that some implementations try to optimize things by taking 
(path) MTU into account when advertising their MSS - but that is at best 
a guessing game: path MTU varies over time.

Please correct me if I'm wrong.

Ernst Lopes Cardozo