Skip site navigation (1)Skip section navigation (2)
Date:      02 Aug 2001 11:34:31 -0400
From:      stanislav shalunov <shalunov@internet2.edu>
To:        Jonathan Lemon <jlemon@flugsvamp.com>
Cc:        net@freebsd.org
Subject:   Re: TCP problems with large window sizes on FreeBSD (GigaTCP)
Message-ID:  <87y9p2qxvc.fsf@cain.internet2.edu>
In-Reply-To: <200108020503.f7253jY08157@prism.flugsvamp.com>
References:  <200108020503.f7253jY08157@prism.flugsvamp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Jonathan Lemon <jlemon@flugsvamp.com> writes:

> I think problem 2 is a larger issue here.  However, you should be able
> to bump up the number of jumbo buffers allocated simply by tweaking 
> TI_JSLOTS to a larger value; the number of actual hardware descriptors
> used is specified elsewhere (TI_JUMBO_RX_RING_CNT == 256).

I'll try increasing the value of TI_JSLOTS to 8192 (twice the number
of 4K packets in 16MB window) and see if it makes a difference.
Burning 73MB on driver buffers does seem silly, but it's not like I
need that memory for something else.

> >2. Why doesn't Fast Retransmit kick in?  (See the annotated sender's
> >   view of the stalled connection.)
> 
> Because the acks aren't completely duplicate acks, the window size changed.  

It looks like they are fully duplicate ACKs, see, e.g.:

23:54:24.005786 10.0.0.1.5001 > 10.0.0.2.1072: . ack 532481 win 32768 <nop,nop,timestamp 2321746 2323870> (DF) (ttl 64, id 18469)
23:54:24.005875 10.0.0.2.1072 > 10.0.0.1.5001: . 2621441:2625537(4096) ack 1 win 32768 <nop,nop,timestamp 2323888 2321745> (DF) (ttl 64, id 32684)
23:54:24.005899 10.0.0.1.5001 > 10.0.0.2.1072: . ack 532481 win 32768 <nop,nop,timestamp 2321746 2323870> (DF) (ttl 64, id 18470)
23:54:24.006007 10.0.0.2.1072 > 10.0.0.1.5001: P 2625537:2629633(4096) ack 1 win 32768 <nop,nop,timestamp 2323888 2321745> (DF) (ttl 64, id 32685)
23:54:24.006037 10.0.0.2.1072 > 10.0.0.1.5001: . 532481:536577(4096) ack 1 win 32768 <nop,nop,timestamp 2323888 2321745> (DF) (ttl 64, id 32686)
23:54:24.006060 10.0.0.1.5001 > 10.0.0.2.1072: . ack 532481 win 32768 <nop,nop,timestamp 2321746 2323870> (DF) (ttl 64, id 18471)
23:54:24.006178 10.0.0.1.5001 > 10.0.0.2.1072: . ack 532481 win 32768 <nop,nop,timestamp 2321746 2323870> (DF) (ttl 64, id 18472)

Here are four consecutive ACKs for 532481 with window 32768 (2097152
taking into account wscale 6, the full window size) and the same
timestamp echo value of 2323870.

> >3. Is there an off-by-one error in RST handling?

> Looks like it.  The code currently reads:
> 
>         if (SEQ_GEQ(th->th_seq, tp->last_ack_sent) &&
>             SEQ_LT(th->th_seq, tp->last_ack_sent + tp->rcv_wnd)) {
> 
> And this probably should be "SEQ_GEQ(..) && SEQ_LEQ(...)".

While not really important for my particular test, it's probably
something that should be fixed in the code then...

-- 
Stanislav Shalunov		http://www.internet2.edu/~shalunov/

"Hey!  Who took the cork off my lunch?!"               -- W. C. Fields

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?87y9p2qxvc.fsf>