[e2e] TCP retransmissions at end of data stream
Guglielmo Morandin
gmorandi at cisco.com
Sun Jun 15 09:40:20 PDT 2003
After the first retransmission is acked, you still have 7 packets in
your queue.
The ack arrival should trigger another transmission
(tcp_input() should call tcp_output(), in a bsdish implementation).
You don't need new data from the application.
-Guglilemo
On Saturday, June 14, 2003, at 07:51 PM, Agthorr wrote:
> Well, it opens the window and enters Slow Start, but there's no new
> data to send, so my implementation doesn't send any. Is there some
> algorithm for deciding when to retransmit data during a Slow Start
> after a time out?
>
> -- Dan Stutzbach
>
> On Sat, Jun 14, 2003 at 10:26:18PM -0400, Nahur Fonseca wrote:
>> If I uderstand it correctly,
>> after a time-out, TCP (Vegas, Reno, NewReno)
>> enters Slow-Start again.
>>
>> So in the example you metion the receiver will
>> ACK the first packet sent after the time-out.
>> Then the sender will open its window by one and
>> send two packets and so on.
>>
>> Am I missing something here?
>>
>> -nahur
>>
>> On Sat, 14 Jun 2003, Agthorr wrote:
>>
>>> Hello,
>>>
>>> I'm a graduate student at the University of Oregon. I'm working on a
>>> packet-level simulator (derived from ns-1.4) for a peer-to-peer
>>> application. I've encountered a glitch in my NewReno TCP
>>> implementation that causes performance problems. I can think of some
>>> ways to fix it, but I'm wondering if there is a standardized way to
>>> handle this case. My advisor, Daniel Zappala, suggested this mailing
>>> list might be a good place to ask.
>>>
>>> The problem occurs when there is packet loss at the end of the data
>>> stream. For example, if the server only has 8 more packets of data
>>> to
>>> send, and they are all lost. Since there is no more data to send,
>>> the
>>> receiver will not generate any duplicate ACKs, and the sender
>>> eventually times out. The sender retransmits the first lost packet,
>>> and the receiver ACKs it. What happens next?
>>>
>>> Right now, in my implementation, the sender times out again and
>>> retransmits the second lost packet, with exponential backoff.
>>> Needless to say, this makes transmitting those last few packets
>>> extremely slow. What should my implementation be doing? Is this
>>> documented anywhere?
>>>
>>>
>>>
>>
>
More information about the end2end-interest
mailing list