[e2e] Some questions about TCP.
detlef.bosau at web.de
Sun Nov 22 11:04:45 PST 2009
Hi to all.
The following questions may be stupid - however, the most stupid
questions are the never asked ones ;-)
1.: Recently, I was told, however I did not find a reference in some
RFC, we had two distinct packet types in TCP:
- those _with_ payload, which are _data_ _segments_,
- those _without_ payload, which are _acknowledgements_.
If this is correct, I would appreciate some reference.
2.: RFC 2581 states, tat in slow start state CWND is incremented by
_new_ acknowledgements, not by duplicate acks.
The same holds true in congestion avoidance state.
Question: Why is CWND is not incremented for dupacks? When I think about
it, I can find arguments for both ways. So, I would like to here the
rationale for the "standard version".
3. I do not quite understand the fast retransmit procedure in RFC 2581.
RFC 2581 says:
The fast retransmit and fast recovery algorithms are usually
implemented together as follows.
1. When the third duplicate ACK is received, set ssthresh to no more
than the value given in equation 3.
2. Retransmit the lost segment and set cwnd to ssthresh plus 3*SMSS.
This artificially "inflates" the congestion window by the number
of segments (three) that have left the network and which the
receiver has buffered.
3. For each additional duplicate ACK received, increment cwnd by
SMSS. This artificially inflates the congestion window in order
to reflect the additional segment that has left the network.
4. Transmit a segment, if allowed by the new value of cwnd and the
receiver's advertised window.
5. When the next ACK arrives that acknowledges new data, set cwnd to
ssthresh (the value set in step 1). This is termed "deflating"
This ACK should be the acknowledgment elicited by the
retransmission from step 1, one RTT after the retransmission
(though it may arrive sooner in the presence of significant out-
of-order delivery of data segments at the receiver).
Additionally, this ACK should acknowledge all the intermediate
segments sent between the lost segment and the receipt of the
third duplicate ACK, if none of these were lost.
Note: This algorithm is known to generally not recover very
efficiently from multiple losses in a single flight of packets
[FF96]. One proposed set of modifications to address this problem
can be found in [FH98].
To my understanding, the fast retransmit retransmits the "one" lost
segment indicated by last ack and does _not_ a go back n.
Hence, we should introduce a step "0":
0. When the third dup ack is received, inflate CWND to CWND + 3.
1. Set ssthresh = ....
The rest remains the same.
Could somebody please help me here?
Detlef Bosau Galileistraße 30 70565 Stuttgart
phone: +49 711 5208031 mobile: +49 172 6819937 skype: detlef.bosau
ICQ: 566129673 detlef.bosau at web.de http://www.detlef-bosau.de
More information about the end2end-interest