Re: ack delay in rx packets

Ian Swett <ianswett@google.com> Wed, 25 April 2018 16:32 UTC

Return-Path: <ianswett@google.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 09F3A128D2E for <quic@ietfa.amsl.com>; Wed, 25 Apr 2018 09:32:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.721
X-Spam-Level:
X-Spam-Status: No, score=-0.721 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=1.989, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_DKIMWL_WL_MED=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
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 5SI9N6zNMlsc for <quic@ietfa.amsl.com>; Wed, 25 Apr 2018 09:32:52 -0700 (PDT)
Received: from mail-yw0-x236.google.com (mail-yw0-x236.google.com [IPv6:2607:f8b0:4002:c05::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 74E021200C5 for <quic@ietf.org>; Wed, 25 Apr 2018 09:32:52 -0700 (PDT)
Received: by mail-yw0-x236.google.com with SMTP id y3-v6so5426485ywi.10 for <quic@ietf.org>; Wed, 25 Apr 2018 09:32:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FUTjzlplcN9Lp6rT1+HxtvACKwzHFqUVvW7tQrXeQRo=; b=wEET6Qy21MfNr3d1CZkJXad4j8+65VlaiWJInSQh1waovlMZuKTz4D9MLf9GRqbjD0 7bgvcY/WAGthRqyumaTsdbWRlpNYsUQJEdMitIbWwmUFwcV5UzMbkJ+VjCXyXkIFUGPI Odjg4fYYkeeiz8jfHj6AEhDNj/GbCdpc2EjQ3U2XdtFW/ZVX/IC58FS4Mup8e5cUMdv3 vDRElC1KY4JXyXazHXbwJJTyKmLoNguM45gAlkbFHurLewdpbvTd8y64+lAFeln+t11i 2n9w6/mS1J3vBby+pcpl2kmO/SPLTqj/kCeAP8FNBNgvHazcmzlowIxnRJ6mNapeLuwJ ncuQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FUTjzlplcN9Lp6rT1+HxtvACKwzHFqUVvW7tQrXeQRo=; b=A1F2Aso/GrcoeGmRYYYDz3gQ0tqkra8t+h0LkhG4d88+H5SSRGZ8yNLKVGtHa+HFwT G2a+fgeP+7UNDJKCNQdSXpVmIhTLAhSOyCL3fW5HX8VBJSp5XfkGRTSrC7XcU0znqxSn QqG671UiHT4rvN3+0FieZC5ByOBmZnvxJ9F5PnmYFo9qAAscxFzBRWcsd1zKkv0rDnYG yMD6oZNhX5FgbsnjGU5duDfs/P7SMqndNj1iS+17Jwkwf4IAljRpD2tNUlSgggxYaA+o lPUQXo5ZDDx3tT4HHLh7RL2j/7DUmymbJ27K5LGJ8dnFvQKfcKavqNwdZ78HAgTYmw8K i0yg==
X-Gm-Message-State: ALQs6tDcE9ZMt3v6qFvIxvX/n/iD08aXtNRbw4q5bW1WjjcaT5oSF53d lyqs1mI3HfGRIk5Vq5wzvtCrNCRteXGFWFyVnIby4g==
X-Google-Smtp-Source: AIpwx4/3L1fchLMuVXONa9yHp3uAA9ZthRd0x/0TzBOpVf7lTLjli9Jn/MIBvtHyEo64tpMbkGfQ53kyZV2Ja7j33bM=
X-Received: by 2002:a81:26d7:: with SMTP id m206-v6mr15569697ywm.335.1524673971296; Wed, 25 Apr 2018 09:32:51 -0700 (PDT)
MIME-Version: 1.0
References: <MWHPR15MB1821770E698C99AAD160864EB68F0@MWHPR15MB1821.namprd15.prod.outlook.com> <CACpbDcd-N+KLECz9z1JQJwE_JXqq_4rNzP9i9Aq9itfRhGaPgA@mail.gmail.com> <CAKcm_gNU-yFCk0QzCrLivb96Wy07VnFpH59Vdut2kR_Ff9fjTg@mail.gmail.com> <MWHPR15MB18211154D0F967B0A31FC0EDB68F0@MWHPR15MB1821.namprd15.prod.outlook.com> <MWHPR15MB1821A5550632E66D8133F54CB68F0@MWHPR15MB1821.namprd15.prod.outlook.com>
In-Reply-To: <MWHPR15MB1821A5550632E66D8133F54CB68F0@MWHPR15MB1821.namprd15.prod.outlook.com>
From: Ian Swett <ianswett@google.com>
Date: Wed, 25 Apr 2018 16:32:40 +0000
Message-ID: <CAKcm_gOp9er6UR8e-RDjFMBT5Xtvuz1EexYPwfQWwYtQ7Ax=3A@mail.gmail.com>
Subject: Re: ack delay in rx packets
To: Subodh Iyengar <subodh@fb.com>
Cc: ianswett=40google.com@dmarc.ietf.org, Jana Iyengar <jri.ietf@gmail.com>, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000075b753056aaed22e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/vv3nSo4qMhF58iIaNWvssOILJ7A>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 25 Apr 2018 16:32:55 -0000

I'm not sure it would be much better, but it's worth thinking through the
case you're describing.

It must be that no 'retransmittable'(I hate that term) packets are being
received, but you're sending packets.  If it's a one-way transfer, then
you're receiving ACKs for the data you're sending at a regular rate.  If
you bundled an ack with outgoing data every sometimes, the ack would have a
new largest acked of the received ACK packets, so all is well.

If it's a long pause, such as a TLP or RTO, then you've waited more than an
RTT and received no packets to acknowledge, but then you decide to bundle
an ACK?  At that point, it's likely the peer has already TLP'd around the
same time, so you're probably not saving them a retransmission.

It had never occurred to me to bundle an ACK in this case, but doing so
does have the side effect of creating useless RTT estimates.  We could have
a special value(already disliking this) for max_ack_delay which indicates
the ACK should not be used for RTT estimates, but I'm not sure it's
valuable to bundle an ACK with TLPs and RTOs.

On Wed, Apr 25, 2018 at 12:20 PM Subodh Iyengar <subodh@fb.com> wrote:

> @Ian Swett <ianswett@google.com> sending ACKs in response to packets or
> delay seems fine, and an implementation might choose to do that. If we have
> more opportunities to send an ACK and avoid an RTO on the peer, wouldn't
> that be better? Is the objective of sending packets only during timer or
> recv data to simplify the ack delay calculation logic?
>
>
> Subodh
> ------------------------------
> *From:* Subodh Iyengar
> *Sent:* Wednesday, April 25, 2018 9:11:15 AM
> *To:* Ian Swett; Jana Iyengar
> *Cc:* IETF QUIC WG
> *Subject:* Re: ack delay in rx packets
>
>
> My concern is this situation: a "receiver" had not seen the original ACK
> (the packet was lost), then the sender rtos and sends a large ack delay to
> compensate for the rto, the max filter for max ack delay would inflate the
> delay for future packet.
>
>
> if latest_rtt - min_rtt  > ack_delay:
>
>    max_ack_delay = max(max_ack_delay, ack_delay)
>
>
> latest_rtt in this case would be rto_timer + rtt because the sender sends
> an ack after an rto.
>
>
> The rtt cal So max ack delay would become the rto timer. Is this a correct
> characterization?
>
>
> Subodh
>
> ------------------------------
> *From:* QUIC <quic-bounces@ietf.org> on behalf of Ian Swett <ianswett=
> 40google.com@dmarc.ietf.org>
> *Sent:* Wednesday, April 25, 2018 9:09:39 AM
> *To:* Jana Iyengar
> *Cc:* Subodh Iyengar; IETF QUIC WG
> *Subject:* Re: ack delay in rx packets
>
> Jana's right about ignoring the ack for RTT calculation if it doesn't
> acknowledge a new packet, see section 3.1:
> https://tools.ietf.org/html/draft-ietf-quic-recovery-11#section-3.1
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__tools.ietf.org_html_draft-2Dietf-2Dquic-2Drecovery-2D11-23section-2D3.1&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=h3Ju9EBS7mHtwg-wAyN7fQ&m=vQP8b9xGAVAynYcZHdgaeS3tK7f1xcKRczLJy-IILfA&s=z__D443_wlVvybsHUk1ua_Ve_0v1RqsNH09OhpeVA7g&e=>
>
> If it did acknowledge a new packet because the previous ACK was lost, then
> you end up with either a useless RTT, a useless max ack delay, or both.
> Because of issues like this, I prefer sending acks in response to packets,
> or within an alarm of packet receipt, rather than at other times.
>
> On Wed, Apr 25, 2018 at 11:53 AM Jana Iyengar <jri.ietf@gmail.com> wrote:
>
> If the sender has seen a previous ack for the same largest received, then
> it should basically ignore this new ack. If not, the ack delay will be
> accurate... What concern do you see with having a large ack delay?
>
> On Wed, Apr 25, 2018, 8:08 AM Subodh Iyengar <subodh@fb.com> wrote:
>
> We ran into very common cases where we might have all our data to send
> already outstanding, so when a TLP and RTO alarm fires, we have no new data
> to send, so we resend data that was in previous packets.
>
>
> In the time that the RTO fires, we might not have received any new
> packets, however want to send ACKs in this new packet as well. Since no new
> packets were received, this ACK will have the same largest acked as the
> previous packet.
>
>
> One question came up as to what the ack delay of an ACK in such a rx
> packet should be. We could technically set it to the time since receipt of
> the packet, however with the new max_ack_delay computations, adding this
> might screw up our estimate of the normal ack delay, so I don't really want
> to do that. Is there a better option here, or does max_ack_delay not cover
> this case?
>
>
> Subodh
>
>