From owner-freebsd-net Thu Aug 2 8:34:38 2001 Delivered-To: freebsd-net@freebsd.org Received: from mail.internet2.edu (list.internet2.edu [209.211.239.181]) by hub.freebsd.org (Postfix) with ESMTP id CEA4537B401 for ; Thu, 2 Aug 2001 08:34:34 -0700 (PDT) (envelope-from shalunov@internet2.edu) Received: from cain.internet2.edu (localhost [127.0.0.1]) by mail.internet2.edu (8.11.1/8.11.1/Debian 8.11.0-6) with ESMTP id f72FYWh02102; Thu, 2 Aug 2001 11:34:33 -0400 X-Authentication-Warning: mail.internet2.edu: Host localhost [127.0.0.1] claimed to be cain.internet2.edu Received: by cain.internet2.edu (Postfix, from userid 1000) id DAD9A8E8; Thu, 2 Aug 2001 11:34:31 -0400 (EDT) To: Jonathan Lemon Cc: net@freebsd.org Subject: Re: TCP problems with large window sizes on FreeBSD (GigaTCP) References: <200108020503.f7253jY08157@prism.flugsvamp.com> From: stanislav shalunov Date: 02 Aug 2001 11:34:31 -0400 In-Reply-To: <200108020503.f7253jY08157@prism.flugsvamp.com> Message-ID: <87y9p2qxvc.fsf@cain.internet2.edu> Lines: 47 X-Mailer: Gnus v5.7/Emacs 20.4 Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Jonathan Lemon 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 (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 (DF) (ttl 64, id 32684) 23:54:24.005899 10.0.0.1.5001 > 10.0.0.2.1072: . ack 532481 win 32768 (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 (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 (DF) (ttl 64, id 32686) 23:54:24.006060 10.0.0.1.5001 > 10.0.0.2.1072: . ack 532481 win 32768 (DF) (ttl 64, id 18471) 23:54:24.006178 10.0.0.1.5001 > 10.0.0.2.1072: . ack 532481 win 32768 (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