From owner-svn-src-all@freebsd.org Thu Jun 7 22:08:02 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 10F78FF429C; Thu, 7 Jun 2018 22:08:02 +0000 (UTC) (envelope-from hiren@strugglingcoder.info) Received: from mail.strugglingcoder.info (strugglingcoder.info [104.236.146.68]) by mx1.freebsd.org (Postfix) with ESMTP id 999BB81F4D; Thu, 7 Jun 2018 22:08:01 +0000 (UTC) (envelope-from hiren@strugglingcoder.info) Received: from localhost (unknown [10.1.1.3]) (Authenticated sender: hiren@strugglingcoder.info) by mail.strugglingcoder.info (Postfix) with ESMTPA id 431E0176D1; Thu, 7 Jun 2018 15:01:21 -0700 (PDT) Date: Thu, 7 Jun 2018 15:01:21 -0700 From: hiren panchasara To: Randall Stewart Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r334804 - in head/sys: kern modules/tcp modules/tcp/rack netinet netinet/tcp_stacks sys Message-ID: <20180607220121.GC62424@strugglingcoder.info> References: <201806071818.w57IIENp080093@repo.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="DIOMP1UsTsWJauNi" Content-Disposition: inline In-Reply-To: <201806071818.w57IIENp080093@repo.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jun 2018 22:08:02 -0000 --DIOMP1UsTsWJauNi Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 06/07/18 at 06:18P, Randall Stewart wrote: > Author: rrs > Date: Thu Jun 7 18:18:13 2018 > New Revision: 334804 > URL: https://svnweb.freebsd.org/changeset/base/334804 >=20 > Log: > This commit brings in a new refactored TCP stack called Rack. > Rack includes the following features: > - A different SACK processing scheme (the old sack structures are not = used). > - RACK (Recent acknowledgment) where counting dup-acks is no longer do= ne > instead time is used to knwo when to retransmit. (see the I-D) > - TLP (Tail Loss Probe) where we will probe for tail-losses to attempt > to try not to take a retransmit time-out. (see the I-D) > - Burst mitigation using TCPHTPS > - PRR (partial rate reduction) see the RFC. > =20 > Once built into your kernel, you can select this stack by either > socket option with the name of the stack is "rack" or by setting > the global sysctl so the default is rack. > =20 > Note that any connection that does not support SACK will be kicked > back to the "default" base FreeBSD stack (currently known as "default"= ). > =20 > To build this into your kernel you will need to enable in your > kernel: > makeoptions WITH_EXTRA_TCP_STACKS=3D1 > options TCPHPTS > =20 > Sponsored by: Netflix Inc. > Differential Revision: https://reviews.freebsd.org/D15525 >=20 > Added: > head/sys/modules/tcp/rack/ > head/sys/modules/tcp/rack/Makefile (contents, props changed) > head/sys/netinet/tcp_stacks/rack.c (contents, props changed) > head/sys/netinet/tcp_stacks/rack_bbr_common.h (contents, props change= d) > head/sys/netinet/tcp_stacks/sack_filter.c (contents, props changed) > head/sys/netinet/tcp_stacks/sack_filter.h (contents, props changed) > head/sys/netinet/tcp_stacks/tcp_rack.h (contents, props changed) > Modified: > head/sys/kern/uipc_sockbuf.c > head/sys/modules/tcp/Makefile > head/sys/netinet/tcp.h > head/sys/netinet/tcp_log_buf.h > head/sys/netinet/tcp_output.c > head/sys/netinet/tcp_stacks/fastpath.c > head/sys/netinet/tcp_timer.c > head/sys/netinet/tcp_timer.h > head/sys/netinet/tcp_var.h > head/sys/sys/mbuf.h > head/sys/sys/queue.h > head/sys/sys/sockbuf.h > head/sys/sys/time.h I thought we'd have more time to review/test this. Looks like BSDCan commit-spree in effect. :-) A few questions: 1) Does RACK work reliably without HPTS? If yes, has that config been tested? 2) It looks like PRR is tied to RACK. Why did we go that route? Shouldn't it be easily used with the 'default' stack also? 3) Can new SACK be used with the traditional stack? 4) Where should manpage like info for RACK go? a new man-page or extending tcp(4)? Info like how to enable system-wide or per socket should go here. 5) Any perf numbers to go along with this commit? Synthetic or production numbers showing improvements in transfer speed or any other impact on CPU usage (specially with HPTS) that you can share? 6) In your testing, have you found cases where RACK does poorly compared to the 'default' stack? Any recommendations on when should RACK be enabled? (Something like this could go in the manpage.) Glad to finally see this in -head! Cheers, Hiren --DIOMP1UsTsWJauNi Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQF8BAABCgBmBQJbGastXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRBNEUyMEZBMUQ4Nzg4RjNGMTdFNjZGMDI4 QjkyNTBFMTU2M0VERkU1AAoJEIuSUOFWPt/l/hYH/RSlrmR6DAqftd0B/GwySYyt W2jegZIij/YRDnkGl4aK9EK4kHpmFCvjGKO2a1owPwSnC3Ky8Cku2d21WQHxxUDK eELS8FI7mN0XraKzXiITwI4H0V67QgHbcnnmqgfnUIEKhcLH+1qNYwjuvsmY4cZ4 WFJlOsM8crjq5EOlKBUbB+KrnJLfSNLB+QDPNEQH+M/prhD9CnjTTDt6T3DwrS1U W9vXsazvZjfYEIo0EhgqE99wurtsigVqP6m9oJcdLG9uQzVFQt68tgWDZ7JdOhDu OY//wwsSVdBaiyaIPY5vJWYg/SIjG0rD4qfPlUn6PECtfg64ni+2TzpVtrF6/pg= =Vf/r -----END PGP SIGNATURE----- --DIOMP1UsTsWJauNi--