lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-devel] TCP window processing bug


From: Karl Jeacle
Subject: Re: [lwip-devel] TCP window processing bug
Date: Tue, 23 Sep 2003 00:31:32 +0100

On Tue 23 Sep 03, 00:32:16 +0200, Leon Woestenberg wrote:
> > I have a simple file transfer application where host A sends data
> > continuously to host B. No data travels from B back to A. While
> > lwIP on A processes incoming ACKs, it ignores the window updates
> > in the ACKs. This is because the incoming segments contain no data
> > (they are just ACKs) and the initial value of snd_wl1 is incorrect.
> 
> Karl, could you explain in which ways this bug affected the transfer
> you describe above? 

OK, I think it went something like this:

        Host A sends a stream of data to Host B.
        Host B's buffers fill up; it advertises smaller window sizes.

        Host A ignores these window updates (bug!); keeps on sending.
        Host B's buffers are full; it advertises zero window size.

        Host A continues to send for as long as cwin will permit.
        Host B can do nothing but drop new packets.

        Host A times out waiting for ACKs; eventually retransmits.
        Host B has recovered during timeout; buffer space available.

This cycle would repeat itself continuously, exhibiting itself as bursts
of data transfer followed by short pauses with nothing happening. 

I'd have to look at the code again, but I think this is only happening
because B is not sending any data back to A. If data is present from B
the window update code will run correctly, and snd_wl1 will get a sensible
value. The incorrect initial value caused by the bug means that segments
that just ACK but contain no data do not trigger the window update code.

Regards,
Karl




reply via email to

[Prev in Thread] Current Thread [Next in Thread]