From owner-freebsd-transport@freebsd.org Tue Nov 15 22:35:04 2016 Return-Path: Delivered-To: freebsd-transport@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2CDDEC445E0 for ; Tue, 15 Nov 2016 22:35:04 +0000 (UTC) (envelope-from mmacy@nextbsd.org) Received: from sender163-mail.zoho.com (sender163-mail.zoho.com [74.201.84.163]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1F28A7AD for ; Tue, 15 Nov 2016 22:35:03 +0000 (UTC) (envelope-from mmacy@nextbsd.org) Received: from mail.zoho.com by mx.zohomail.com with SMTP id 1479249291559212.19765852955481; Tue, 15 Nov 2016 14:34:51 -0800 (PST) Date: Tue, 15 Nov 2016 14:34:51 -0800 From: Matthew Macy To: "hiren panchasara" Cc: "" Message-ID: <1586a20e924.ee7a30be42111.4924935992264685135@nextbsd.org> In-Reply-To: <20161107230956.GC58169@strugglingcoder.info> References: <15840ed6553.b35660db223145.502696786092878313@nextbsd.org> <20161107230956.GC58169@strugglingcoder.info> Subject: Re: Any interest in data center networking - clustered networking @50us RTT lessons learned talk? MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Priority: Medium User-Agent: Zoho Mail X-Mailer: Zoho Mail X-BeenThere: freebsd-transport@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions of transport level network protocols in FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Nov 2016 22:35:04 -0000 ---- On Mon, 07 Nov 2016 15:09:56 -0800 hiren panchasara wrote ---- > On 11/07/16 at 02:34P, Matthew Macy wrote: > > > > At least on streaming workloads we're now getting better performance with ethernet than with IB. > > > > I'll be at MeetBSD. Is there any interest in a short talk on lessons learned and our experiences / observations at scaling up TCP? > > > > Yes! > > We have a TCP slot on 11/10 (Devsummit) from 3:00 to 5:00. > It'd be nice if you can talk about it. I put my slides up at: http://www.slideshare.net/MatthewMacy/ethernet-as-fabric?ref=https://www.linkedin.com/ From owner-freebsd-transport@freebsd.org Fri Nov 18 20:20:30 2016 Return-Path: Delivered-To: freebsd-transport@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7F4AAC47ACB for ; Fri, 18 Nov 2016 20:20:30 +0000 (UTC) (envelope-from tuexen@freebsd.org) Received: from drew.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.franken.de", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 34127CAB for ; Fri, 18 Nov 2016 20:20:30 +0000 (UTC) (envelope-from tuexen@freebsd.org) Received: from [192.168.1.109] (p508F0F1B.dip0.t-ipconnect.de [80.143.15.27]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTPSA id 38933721E281E for ; Fri, 18 Nov 2016 21:20:26 +0100 (CET) From: Michael Tuexen Content-Type: multipart/mixed; boundary="Apple-Mail=_77C21147-D552-44F3-9DE4-709B3D89FE87" Mime-Version: 1.0 (Mac OS X Mail 10.1 \(3251\)) Subject: Loss recovery at tail Message-Id: <3A9A8225-A296-408F-BEC5-3E9CEFB65AF0@freebsd.org> Date: Fri, 18 Nov 2016 21:20:20 +0100 To: freebsd-transport@freebsd.org X-Mailer: Apple Mail (2.3251) X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=disabled version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on mail-n.franken.de X-BeenThere: freebsd-transport@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions of transport level network protocols in FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Nov 2016 20:20:30 -0000 --Apple-Mail=_77C21147-D552-44F3-9DE4-709B3D89FE87 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Dear all, in the last telco we discussed the behaviour when that last N packets = are dropped. It was mentioned that multiple retransmission timers where used to = recover. I wrote a packetdrill script which * Get the cwnd to 30 segments * Sends 30 segments, which all get lost * Observe how the 30 dropped segments are retransmitted. It uses only a single timeout as one would expect. So this script does NOT reproduce the problem, but I'm attaching it such = that you can see how the stack behaves. Tested with FreeBSD head r308802. If you have more details, please let me know. Best regards Michael --Apple-Mail=_77C21147-D552-44F3-9DE4-709B3D89FE87 Content-Disposition: attachment; filename=tail_loss.pkt Content-Type: application/octet-stream; x-unix-mode=0644; name="tail_loss.pkt" Content-Transfer-Encoding: 7bit // // Copyright (c) 2016 Michael Tuexen // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. // --ip_version=ipv4 --tolerance_usecs=50000 // Emulating an RTT of 10ms and a peer's delayed ack timer of 100ms. 0.00 `sysctl -w net.inet.tcp.hostcache.purgenow=1` +0.00 `sysctl -w net.inet.tcp.initcwnd_segments=10` +0.00 `sysctl -w net.inet.tcp.rfc3465=1` +0.00 `sysctl net.inet.tcp.abc_l_var=2` // Create a TCP endpoint in the ESTABLISHED state. +0.00 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3 +0.00 fcntl(3, F_GETFL) = 0x02 (flags O_RDWR) +0.00 fcntl(3, F_SETFL, O_RDWR | O_NONBLOCK) = 0 +0.00 getsockopt(3, SOL_SOCKET, SO_RCVBUF, [65536], [4]) = 0 +0.00 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress) +0.00 > S 0:0(0) win 65535 +0.01 < S. 0:0(0) ack 1 win 65535 +0.00 > . 1:1(0) ack 1 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 10000 }% // Verify that there are no errors pending at the socket layer. +0.01 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 // Now it is in the ESTABLISHED state. +0.00 %{ assert tcpi_snd_cwnd == 10000 }% +0.00 write(3, ..., 20000) = 20000 +0.00 > . 1:1001(1000) ack 1 win 65535 +0.00 > . 1001:2001(1000) ack 1 win 65535 +0.00 > . 2001:3001(1000) ack 1 win 65535 +0.00 > . 3001:4001(1000) ack 1 win 65535 +0.00 > . 4001:5001(1000) ack 1 win 65535 +0.00 > . 5001:6001(1000) ack 1 win 65535 +0.00 > . 6001:7001(1000) ack 1 win 65535 +0.00 > . 7001:8001(1000) ack 1 win 65535 +0.00 > . 8001:9001(1000) ack 1 win 65535 +0.00 > . 9001:10001(1000) ack 1 win 65535 +0.01 < . 1:1(0) ack 1001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 11000 }% +0.00 > . 10001:11001(1000) ack 1 win 65535 +0.00 > . 11001:12001(1000) ack 1 win 65535 +0.00 < . 1:1(0) ack 3001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 13000 }% +0.00 > . 12001:13001(1000) ack 1 win 65535 +0.00 > . 13001:14001(1000) ack 1 win 65535 +0.00 > . 14001:15001(1000) ack 1 win 65535 +0.00 > . 15001:16001(1000) ack 1 win 65535 +0.00 < . 1:1(0) ack 5001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 15000 }% +0.00 > . 16001:17001(1000) ack 1 win 65535 +0.00 > . 17001:18001(1000) ack 1 win 65535 +0.00 > . 18001:19001(1000) ack 1 win 65535 +0.00 > P. 19001:20001(1000) ack 1 win 65535 +0.00 < . 1:1(0) ack 7001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 17000 }% +0.00 < . 1:1(0) ack 9001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 19000 }% +0.00 < . 1:1(0) ack 11001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 21000 }% +0.00 < . 1:1(0) ack 13001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 23000 }% +0.00 < . 1:1(0) ack 15001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 25000 }% +0.00 < . 1:1(0) ack 17001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 27000 }% +0.00 < . 1:1(0) ack 19001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 29000 }% +0.10 < . 1:1(0) ack 20001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 30000 }% +0.10 write(3, ..., 30000) = 30000 +0.00 > . 20001:21001(1000) ack 1 win 65535 +0.00 > . 21001:22001(1000) ack 1 win 65535 +0.00 > . 22001:23001(1000) ack 1 win 65535 +0.00 > . 23001:24001(1000) ack 1 win 65535 +0.00 > . 24001:25001(1000) ack 1 win 65535 +0.00 > . 25001:26001(1000) ack 1 win 65535 +0.00 > . 26001:27001(1000) ack 1 win 65535 +0.00 > . 27001:28001(1000) ack 1 win 65535 +0.00 > . 28001:29001(1000) ack 1 win 65535 +0.00 > . 29001:30001(1000) ack 1 win 65535 +0.00 > . 30001:31001(1000) ack 1 win 65535 +0.00 > . 31001:32001(1000) ack 1 win 65535 +0.00 > . 32001:33001(1000) ack 1 win 65535 +0.00 > . 33001:34001(1000) ack 1 win 65535 +0.00 > . 34001:35001(1000) ack 1 win 65535 +0.00 > . 35001:36001(1000) ack 1 win 65535 +0.00 > . 36001:37001(1000) ack 1 win 65535 +0.00 > . 37001:38001(1000) ack 1 win 65535 +0.00 > . 38001:39001(1000) ack 1 win 65535 +0.00 > . 39001:40001(1000) ack 1 win 65535 +0.00 > . 40001:41001(1000) ack 1 win 65535 +0.00 > . 41001:42001(1000) ack 1 win 65535 +0.00 > . 42001:43001(1000) ack 1 win 65535 +0.00 > . 43001:44001(1000) ack 1 win 65535 +0.00 > . 44001:45001(1000) ack 1 win 65535 +0.00 > . 45001:46001(1000) ack 1 win 65535 +0.00 > . 46001:47001(1000) ack 1 win 65535 +0.00 > . 47001:48001(1000) ack 1 win 65535 +0.00 > . 48001:49001(1000) ack 1 win 65535 +0.00 > P. 49001:50001(1000) ack 1 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 30000 }% * > . 20001:21001(1000) ack 1 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 1000 and tcpi_snd_ssthresh == 15000}% +0.11 < . 1:1(0) ack 21001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 2000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 21001:22001(1000) ack 1 win 65535 +0.00 > . 22001:23001(1000) ack 1 win 65535 +0.01 < . 1:1(0) ack 23001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 3000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 23001:24001(1000) ack 1 win 65535 +0.00 > . 24001:25001(1000) ack 1 win 65535 +0.00 > . 25001:26001(1000) ack 1 win 65535 +0.01 < . 1:1(0) ack 25001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 4000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 26001:27001(1000) ack 1 win 65535 +0.00 > . 27001:28001(1000) ack 1 win 65535 +0.00 > . 28001:29001(1000) ack 1 win 65535 +0.01 < . 1:1(0) ack 27001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 5000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 29001:30001(1000) ack 1 win 65535 +0.00 > . 30001:31001(1000) ack 1 win 65535 +0.00 > . 31001:32001(1000) ack 1 win 65535 +0.00 < . 1:1(0) ack 29001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 6000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 32001:33001(1000) ack 1 win 65535 +0.00 > . 33001:34001(1000) ack 1 win 65535 +0.00 > . 34001:35001(1000) ack 1 win 65535 +0.01 < . 1:1(0) ack 31001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 7000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 35001:36001(1000) ack 1 win 65535 +0.00 > . 36001:37001(1000) ack 1 win 65535 +0.00 > . 37001:38001(1000) ack 1 win 65535 +0.00 < . 1:1(0) ack 33001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 8000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 38001:39001(1000) ack 1 win 65535 +0.00 > . 39001:40001(1000) ack 1 win 65535 +0.00 > . 40001:41001(1000) ack 1 win 65535 +0.00 < . 1:1(0) ack 35001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 9000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 41001:42001(1000) ack 1 win 65535 +0.00 > . 42001:43001(1000) ack 1 win 65535 +0.00 > . 43001:44001(1000) ack 1 win 65535 +0.01 < . 1:1(0) ack 37001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 10000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 44001:45001(1000) ack 1 win 65535 +0.00 > . 45001:46001(1000) ack 1 win 65535 +0.00 > . 46001:47001(1000) ack 1 win 65535 +0.00 < . 1:1(0) ack 39001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 11000 and tcpi_snd_ssthresh == 15000}% +0.00 > . 47001:48001(1000) ack 1 win 65535 +0.00 > . 48001:49001(1000) ack 1 win 65535 +0.00 > P. 49001:50001(1000) ack 1 win 65535 +0.00 < . 1:1(0) ack 41001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 13000 and tcpi_snd_ssthresh == 15000}% +0.00 < . 1:1(0) ack 43001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 15000 and tcpi_snd_ssthresh == 15000}% +0.00 < . 1:1(0) ack 45001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 17000 and tcpi_snd_ssthresh == 15000}% +0.00 < . 1:1(0) ack 47001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 17000 and tcpi_snd_ssthresh == 15000}% +0.00 < . 1:1(0) ack 49001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 17000 and tcpi_snd_ssthresh == 15000}% +0.10 < . 1:1(0) ack 50001 win 65535 +0.00 %{ assert tcpi_snd_cwnd == 17000 and tcpi_snd_ssthresh == 15000}% // Tear it down. +0.00 close(3) = 0 +0.00 > F. 50001:50001(0) ack 1 win 65535 +0.10 < F. 1:1(0) ack 50002 win 65535 +0.00 > . 50002:50002(0) ack 2 win 65534 --Apple-Mail=_77C21147-D552-44F3-9DE4-709B3D89FE87-- From owner-freebsd-transport@freebsd.org Fri Nov 18 23:13:14 2016 Return-Path: Delivered-To: freebsd-transport@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DEB0AC4847C for ; Fri, 18 Nov 2016 23:13:14 +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 CDCF51798; Fri, 18 Nov 2016 23:13:14 +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 E811E17414; Fri, 18 Nov 2016 15:13:07 -0800 (PST) Date: Fri, 18 Nov 2016 15:13:07 -0800 From: hiren panchasara To: Michael Tuexen Cc: freebsd-transport@freebsd.org Subject: Re: Loss recovery at tail Message-ID: <20161118231307.GN42586@strugglingcoder.info> References: <3A9A8225-A296-408F-BEC5-3E9CEFB65AF0@freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="AKkMM/tm2Mk6Yn/s" Content-Disposition: inline In-Reply-To: <3A9A8225-A296-408F-BEC5-3E9CEFB65AF0@freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: freebsd-transport@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions of transport level network protocols in FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Nov 2016 23:13:15 -0000 --AKkMM/tm2Mk6Yn/s Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 11/18/16 at 09:20P, Michael Tuexen wrote: > Dear all, >=20 > in the last telco we discussed the behaviour when that last N packets are= dropped. > It was mentioned that multiple retransmission timers where used to recove= r. >=20 > I wrote a packetdrill script which > * Get the cwnd to 30 segments > * Sends 30 segments, which all get lost > * Observe how the 30 dropped segments are retransmitted. >=20 > It uses only a single timeout as one would expect. > So this script does NOT reproduce the problem, but I'm attaching it such = that > you can see how the stack behaves. > Tested with FreeBSD head r308802. Thanks for testing. https://reviews.freebsd.org/D8556 was the issue detecting a valid RTO as bad and resetting snd_nxt to snd_max (instead of snd_una as done by valid RTO) causing us to not trigger retransmit of missed packets but wait for RTO for all of lost packets. Cheers, Hiren --AKkMM/tm2Mk6Yn/s Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQF8BAABCgBmBQJYL4r+XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRBNEUyMEZBMUQ4Nzg4RjNGMTdFNjZGMDI4 QjkyNTBFMTU2M0VERkU1AAoJEIuSUOFWPt/lITMH/jhFYHrRoMGSFVwgMZYVRJ6e WBxKaIu+TX8/Gthd3GLukcCJeQ9DUOCzbH6546VP8E0QChGgR8EQyditqhxwSkgS ow+vhrX4PLh1OmveN7/GRDxnFIS+fnBPUblfnQZ2sZVL7V1GIbL+oAwNR940y0qG Yim06Tj2rI0TolbK75FaPBvNyYFRshRQqKg2UNGtlxx3V4kD0UuALGQmGxuhiNVf sRH/zbQPhqjpcW4nOUj7RRL1BHnNKkL8fn4n2M2wMnHktFjbtS3bneXtYU3HuId4 uhdZr6h3f3Sjw4i57wK/EmB+WuHpNjDfbyZsPFlVDAA159se7iY+7bpz8jMK60U= =pNW2 -----END PGP SIGNATURE----- --AKkMM/tm2Mk6Yn/s-- From owner-freebsd-transport@freebsd.org Sat Nov 19 13:51:02 2016 Return-Path: Delivered-To: freebsd-transport@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5DA50C483CD for ; Sat, 19 Nov 2016 13:51:02 +0000 (UTC) (envelope-from tuexen@freebsd.org) Received: from drew.franken.de (mail-n.franken.de [193.175.24.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.franken.de", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 25DCC12 for ; Sat, 19 Nov 2016 13:51:01 +0000 (UTC) (envelope-from tuexen@freebsd.org) Received: from [192.168.1.109] (p508F0F1B.dip0.t-ipconnect.de [80.143.15.27]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTPSA id 2F59D721E281C; Sat, 19 Nov 2016 14:50:52 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 10.1 \(3251\)) Subject: Re: Loss recovery at tail From: Michael Tuexen In-Reply-To: <20161118231307.GN42586@strugglingcoder.info> Date: Sat, 19 Nov 2016 14:50:50 +0100 Cc: freebsd-transport@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <8F1153AE-7BB1-4393-8D90-70E9FEF458AF@freebsd.org> References: <3A9A8225-A296-408F-BEC5-3E9CEFB65AF0@freebsd.org> <20161118231307.GN42586@strugglingcoder.info> To: hiren panchasara X-Mailer: Apple Mail (2.3251) X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=disabled version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on mail-n.franken.de X-BeenThere: freebsd-transport@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussions of transport level network protocols in FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Nov 2016 13:51:02 -0000 > On 19 Nov 2016, at 00:13, hiren panchasara = wrote: >=20 > On 11/18/16 at 09:20P, Michael Tuexen wrote: >> Dear all, >>=20 >> in the last telco we discussed the behaviour when that last N packets = are dropped. >> It was mentioned that multiple retransmission timers where used to = recover. >>=20 >> I wrote a packetdrill script which >> * Get the cwnd to 30 segments >> * Sends 30 segments, which all get lost >> * Observe how the 30 dropped segments are retransmitted. >>=20 >> It uses only a single timeout as one would expect. >> So this script does NOT reproduce the problem, but I'm attaching it = such that >> you can see how the stack behaves. >> Tested with FreeBSD head r308802. >=20 > Thanks for testing. >=20 > https://reviews.freebsd.org/D8556 was the issue detecting a valid > RTO as bad and resetting snd_nxt to snd_max (instead of snd_una as = done by > valid RTO) causing us to not trigger retransmit of missed packets but > wait for RTO for all of lost packets. Ahh, I see. Thanks for the pointer. Best regards Michael >=20 > Cheers, > Hiren