Re: [tcpm] Linux doesn’t implement RFC3465
"Mark Allman" <mallman@icir.org> Wed, 27 November 2019 13:14 UTC
Return-Path: <mallman@icir.org>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7CC4F1208B1 for <tcpm@ietfa.amsl.com>; Wed, 27 Nov 2019 05:14:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ULEYwxMEEaHk for <tcpm@ietfa.amsl.com>; Wed, 27 Nov 2019 05:14:27 -0800 (PST)
Received: from rock.ICSI.Berkeley.EDU (rock.ICSI.Berkeley.EDU [192.150.186.19]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5654A12083F for <tcpm@ietf.org>; Wed, 27 Nov 2019 05:14:27 -0800 (PST)
Received: from localhost (localhost.localdomain [127.0.0.1]) by rock.ICSI.Berkeley.EDU (Postfix) with ESMTP id 2BC832C4081; Wed, 27 Nov 2019 05:14:27 -0800 (PST)
X-Virus-Scanned: amavisd-new at ICSI.Berkeley.EDU
Received: from rock.ICSI.Berkeley.EDU ([127.0.0.1]) by localhost (maihub.ICSI.Berkeley.EDU [127.0.0.1]) (amavisd-new, port 10024) with LMTP id NPQhYeScFLLv; Wed, 27 Nov 2019 05:14:26 -0800 (PST)
Received: from lawyers.icir.org (envoy.ICIR.org [192.150.187.30]) by rock.ICSI.Berkeley.EDU (Postfix) with ESMTP id 9A7322C407E; Wed, 27 Nov 2019 05:14:26 -0800 (PST)
Received: from [192.168.1.244] (localhost [127.0.0.1]) by lawyers.icir.org (Postfix) with ESMTP id 3B21A1EDC31D; Wed, 27 Nov 2019 08:14:26 -0500 (EST)
From: Mark Allman <mallman@icir.org>
To: Vidhi Goel <vidhi_goel=40apple.com@dmarc.ietf.org>
Cc: Neal Cardwell <ncardwell=40google.com@dmarc.ietf.org>, tcpm@ietf.org
Date: Wed, 27 Nov 2019 08:14:26 -0500
X-Mailer: MailMate (1.13r5655)
Message-ID: <54699CC9-C8F5-4CA3-8815-F7A21AE10429@icsi.berkeley.edu>
In-Reply-To: <601D9D4F-A82C-475A-98CC-383C1F876C44@apple.com>
References: <78EF3761-7CAF-459E-A4C0-57CDEAFEA8EE@apple.com> <CADVnQynkBxTdapXN0rWOuWO3KXQ2qb6x=xhB35XrMU38JkX2DQ@mail.gmail.com> <601D9D4F-A82C-475A-98CC-383C1F876C44@apple.com>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/Zi1jUohVegcgzPgYib3wyvR39-g>
Subject: Re: [tcpm] Linux doesn’t implement RFC3465
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 27 Nov 2019 13:14:28 -0000
> +Mark Allman Just to clear it up, I *was* at BBN long ago when the ABC document was written. It's a cool place to work. I recommend it. But, I now hang out at ICSI. > I believe that ABC was written to solve the problem with ACK > counting by counting the number of bytes acknowledged for > misbehaving receivers. Limiting the increase to 2*MSS was a good > solution to avoid bursts at the time. The main motivation behind ABC was to counteract delayed ACKs. The common approach at the time was to just bump cwnd by one MSS every time an ACK rolled in. So, if an ACK covered two segments because the receiver was delaying the ACKs then the growth rate during slow start was 1.5x per RTT instead of the 2x that was really envisioned. During congestion avoidance the growth was 1 MSS every 2 RTTs instead of the envisioned every RTT. A secondary motivation was to counteract these ACK division attacks that Savage taught us about. I.e., we could ACK an MSS-sized packet one byte at a time and the sender would then increase the cwnd by MSS*MSS bytes in the prevalent ACK counting scheme (i.e., cwnd would get bumped by MSS bytes for every ACK). The limit has two roots ... (1) The limit is important in slow starts that follow an RTO. As the RFC discusses, in this case we might retransmit a single packet and this will cause the receiver's window to slide a great deal. Therefore, an ACK may indicate that a ton of data has left the network, but that isn't really the case. So, we don't want to increase the cwnd based on all the new bytes ACKed. I have since mostly decided that this use of L is crude. Probably there is a more elegant way to do it by using the scoreboard and the SACK information to get a better understanding of what left the network and when. That said, in this case L is simple and probably about right most of the time. (2) I think there was some general conservativeness to bursts and using L everywhere quelled some of the worry. Here L=2 was used to exactly offset delayed ACKs. > I agree that increasing the congestion window and controlling the > burst rate are orthogonal issues. Yes. In fact, we did subsequent research on mitigating bursts because we never really thought of ABC as somehow the way to control bursts (research papers available, but never went into RFCs). And, in a world that leverages stretch ACKs as a routine I think Linux's approach of not using an L may well be correct. Documenting that and the reasoning behind it in modern networks seems useful to me. allman
- [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Neal Cardwell
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Lars Eggert
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Mark Allman
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 Neal Cardwell
- Re: [tcpm] Linux doesn’t implement RFC3465 Mark Allman
- Re: [tcpm] Linux doesn’t implement RFC3465 Neal Cardwell
- Re: [tcpm] Linux doesn’t implement RFC3465 Mark Allman
- Re: [tcpm] Linux doesn’t implement RFC3465 Neal Cardwell
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 Neal Cardwell
- Re: [tcpm] Linux doesn’t implement RFC3465 Mark Allman
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 Mark Allman
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 David Lang
- Re: [tcpm] Linux doesn’t implement RFC3465 Neal Cardwell
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Neal Cardwell
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Praveen Balasubramanian
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Neal Cardwell
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Yuchung Cheng
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Yuchung Cheng
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Yuchung Cheng
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Vidhi Goel
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Neal Cardwell
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Yoshifumi Nishida
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Yuchung Cheng
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Neal Cardwell
- Re: [tcpm] Linux doesn’t implement RFC3465 Mark Allman
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Yoshifumi Nishida
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Vidhi Goel
- Re: [tcpm] [EXTERNAL] Re: Linux doesn’t implement… Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 Yuchung Cheng
- Re: [tcpm] Linux doesn’t implement RFC3465 Mirja Kuehlewind
- Re: [tcpm] Linux doesn’t implement RFC3465 Martin Duke
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Martin Duke
- Re: [tcpm] Linux doesn’t implement RFC3465 Vidhi Goel
- Re: [tcpm] Linux doesn’t implement RFC3465 Michael Tuexen
- Re: [tcpm] Linux doesn’t implement RFC3465 Mark Allman