FreeBSD 4.x and OS-X tcp performance

Daniel Hartmeier daniel at benzedrine.cx
Tue Mar 8 09:39:29 PST 2005


On Tue, Mar 08, 2005 at 08:11:00AM -0600, Mark Tinguely wrote:

> The server is not telling the client that a packet has been lost.
> The first two ACKs are correct duplicate ACKs, but the remaining
> ACKs coming from he server have window adjustments, so the
> client does not treat them as duplicate ACKs coming from a packet
> loss.

Ah, I didn't realize that duplicates must have the same window sizes,
that explains it.

Now I wonder why the server should be using the same window size on
those near duplicate ACKs. It looks like th_win is recalculated every
time in tcp_output(), based on how full the receive buffer is (the win =
sbspace(&so->so_rcv); statement).

Assuming there is usually some window space left when a loss occurs, and
the sender will continue to fill the window with some more segments
until the dupacks should trigger a fast retransmit, why should the
receiver not adjust its window size in every ack? This seems not to
occur in most cases, otherwise fast retransmit would rarely work.

In this particular case, the server is increasing the window size with
subsequent ACKs. What does this mean? The receive buffer became less
full so quickly? The receive buffer was enlarged?

Daniel


More information about the freebsd-net mailing list