Subject: RE: [Tsvwg] TCP send window update

From: "Leah Shalev" <[email-masked]>
Date: Wed, 27 Nov 2002 20:25:34 +0200

Well, this means that SND.WL2 is redundant. However, I think that it is
possible that SEG.SEQ < SND.WL1, and SEG.ACK > SND.UNA -- in case the
remote TCP implementation re-builds retransmitted packets, i.e. puts
updated acknowledge number into a segment carrying retransmitted data.

Leah

                      "Amit Jain"                                                                                                      
                      <ajain@arraynetwo        To:       Leah Shalev/Haifa/IBM@IBMIL, <[email-masked]>                                 
                      rks.net>                 cc:                                                                                     
                                               Subject:  RE: [Tsvwg] TCP send window update                                            
                      23/11/02 02:15                                                                                                   

I think if SEG.SEQ < SND.WL1 , then SEG.ACK should not be more than SND.UNA
(Which may cause SND.UNA to get updated).

I think in most of the scenarion if SEG.ACK > SND.UNA , then SEG.SEQ will
be either == SND.WL1 or > SND.WL1.and thus both edge of the window wil be
updated.

-amit.

-----Original Message-----
From: Leah Shalev [mailto:[email-masked]]
Sent: Wednesday, November 20, 2002 1:49 AM
To: [email-masked]
Subject: [Tsvwg] TCP send window update

Hi,

Probably I am missing something vary basic about the send window update
algorithm (RFC 793).

In particular, I have a question regarding SND.WL2 variable. Apparently it
should be always equal to SND.UNA.
I was trying to figure out when can it be different (to justify its
existence). After a while, I did find one case it can be different: a
retransmitted data segment carries new acknowledge number; SND.UNA is
updated and SND.WND is not updated since SEG.SEQ < SND.WL1. Next second I
started to wonder what is the state of the send window at this point: the
left edge moved, while the window size did not change, so it seems that the
right edge is messed up. So I am back to my original question: why it
should be possible to have SND.WL2 different from SND.UNA.

I would appreciate any help on this.

Thanks,
Leah Shalev

_______________________________________________
tsvwg mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/tsvwg

_______________________________________________
tsvwg mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/tsvwg

---

From: Mika Liljeberg <[email-masked]>
Date: 27 Nov 2002 20:59:58 +0200

Leah,

> Well, this means that SND.WL2 is redundant.

I agree that SND.WL2 is probably useless.

>  However, I think that it is

This is true. To my mind, the "right way" to validate a window update is
as follows:

1) if SEG.ACK advances SND.UNA, always update SND.WND as well
2) if SEG.ACK = SND.UNA, and SEG.SEQ >= SND.WL1, update SND.WND

Rule 2 is a heuristic anyway, since it does not protect against
reordering of pure acks. This is normally not a big problem. In some
cases it might also be possible to use other information to (e.g.
timestamps or SACK options) to determine the right ordering, but IMHO
this is not worth the trouble.

Regards,

	MikaL