Re: ack delay in rx packets
Jana Iyengar <jri.ietf@gmail.com> Mon, 11 June 2018 22:51 UTC
Return-Path: <jri.ietf@gmail.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 DCD5E12F1A5 for <quic@ietfa.amsl.com>; Mon, 11 Jun 2018 15:51:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.71
X-Spam-Level:
X-Spam-Status: No, score=-0.71 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=1.989, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 2fpeKglrhxQh for <quic@ietfa.amsl.com>; Mon, 11 Jun 2018 15:51:35 -0700 (PDT)
Received: from mail-it0-x229.google.com (mail-it0-x229.google.com [IPv6:2607:f8b0:4001:c0b::229]) (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 EBE141274D0 for <quic@ietf.org>; Mon, 11 Jun 2018 15:51:34 -0700 (PDT)
Received: by mail-it0-x229.google.com with SMTP id a3-v6so13086009itd.0 for <quic@ietf.org>; Mon, 11 Jun 2018 15:51:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=sAe97rCdnkzZf/fJIFrUWuRh5hzUsp27b0bFG4WALtY=; b=QDDVBcqgfi+fBK3YokMb11bgXTrF1eOZsfU1GJnq0r5xCcCcrGB5LHAVSgTSahIWrW 5i22Mn5vipb6t5BLQ43wiirBn5SzK6qhipgNqBWVu9HHzrJIAG7JHrekvnsg+FrYWAma qyY6Qew8wPBq5IfjmibOZiflx0SaXBiy/YymjL0ct/fr0Gvz7ujHQLb5VOr1N+lO7Zho 28cuGhhtyf7RAoj/JYMG1aW+dCblpm+i2n1u+eMkheC/IJX/XoxkzE+HxAkUVhg/qz/O YwUvqlveRPSJkTe6SP6677J/+4r4aK2JOjWUZWzCqGkvKuGgHReZr4Zgadi9gQrzblAa zl3w==
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=sAe97rCdnkzZf/fJIFrUWuRh5hzUsp27b0bFG4WALtY=; b=a5ZPLgBNg5fcHKKc3shNTus4aam12gUrcvQSaRH5/R3rD2Sg4p93Q6vO0LlX6fN3Gi NTPAgzI8iRoDHdROW4rt/yjILzPS/gJKoZWOQeX4XmUUysAOYz66koKkWT0HkslF5Ugc WfCBrFFMLn04L9fom7n4Y4TEY3wmsizE7spH7dXllt+e2wPXKJQt1vzxlK/HbcWiHLUj x4/HSRjhWs9kSCmkfuqZpi5NbSseaAFtqNBeqFkogfmG2CD5sWiviQ8yjG6o43/D9nxA HEO7hrL5v5/uL1X/EZJoSH0LEkBuM+zF5wR5+QKxbDRBQbqtaC/qF9XF1BeyCHPqH41j Cb+w==
X-Gm-Message-State: APt69E0upV+mHmDBdxVdY+SQckFt/aZAO7AhgoImhVGyQlqQNjTNZW2s hHp4vJ4aiN8bc47ar3/9VYQiFZByCAaJFtE5Tk8=
X-Google-Smtp-Source: ADUXVKIwp69J96GmMXbndg4cEYFcoLEKjWFL8k1kUrrZhRM21jp71Yi3eHRnzHaWsddanjc6dzfDwWvrBLfqWfhYfNs=
X-Received: by 2002:a24:5594:: with SMTP id e142-v6mr907271itb.46.1528757494235; Mon, 11 Jun 2018 15:51:34 -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> <CAKcm_gOp9er6UR8e-RDjFMBT5Xtvuz1EexYPwfQWwYtQ7Ax=3A@mail.gmail.com> <MWHPR15MB18219D3154C51A7B10C2D3F8B68F0@MWHPR15MB1821.namprd15.prod.outlook.com>
In-Reply-To: <MWHPR15MB18219D3154C51A7B10C2D3F8B68F0@MWHPR15MB1821.namprd15.prod.outlook.com>
From: Jana Iyengar <jri.ietf@gmail.com>
Date: Mon, 11 Jun 2018 15:51:23 -0700
Message-ID: <CACpbDcfDeNHr6jrepz+C5b1LQrB=G2mMNPsh0GX63TwfHxXtpA@mail.gmail.com>
Subject: Re: ack delay in rx packets
To: Subodh Iyengar <subodh@fb.com>
Cc: Ian Swett <ianswett@google.com>, Ian Swett <ianswett=40google.com@dmarc.ietf.org>, QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000064479b056e6597b4"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/IBUeaVpA3imdgE0kM7WlmSB2Jlo>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.26
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: Mon, 11 Jun 2018 22:51:38 -0000
Subodh, I think you're right. We should fix this issue, though I'm not exactly sure how. We dropped this earlier; I've filed #1438 <https://github.com/quicwg/base-drafts/issues/1438> so that we can continue this discussion there. - jana On Wed, Apr 25, 2018 at 9:48 AM Subodh Iyengar <subodh@fb.com> wrote: > It's possible that both sides will TLP at the same time assuming their RTT > estimates are the same and both sides are tails. To see whether this > happens I'll have to actually look at data in practice to see whether we > see whether there is a delay between the server's TLP/RTO and the client's > TLP/RTO. > > There is also another class case which in which it might be useful to > retransmit the ack without a new packet where one side does not have a tail > but the other does. For example, in the case of a revproxy where there is > an upstream server. The client has sent a tail request to the revproxy, > which it forwards to a webserver. > > > There are 2 cases here: > > 1. The webserver has some processing delay which is < 2 * RTT, so the > response comes back and we have new data to send. The server could also > bundle a duplicate ack with this packet. > 2. The response is larger than the request, so we could have bundled > some dup ACKs with the response. > > > It is possible that the client would set an ACK timer < RTO timer and then > send an ACK for this new packet, however if a server strictly does not ACK > acks, the client would still have to wait for the RTO timer. > > > Subodh > ------------------------------ > *From:* Ian Swett <ianswett@google.com> > *Sent:* Wednesday, April 25, 2018 9:32:40 AM > *To:* Subodh Iyengar > *Cc:* ianswett=40google.com@dmarc.ietf.org; Jana Iyengar; IETF QUIC WG > *Subject:* Re: ack delay in rx packets > > 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 > >
- Re: ack delay in rx packets Jana Iyengar
- ack delay in rx packets Subodh Iyengar
- Re: ack delay in rx packets Subodh Iyengar
- Re: ack delay in rx packets Jana Iyengar
- Re: ack delay in rx packets Ian Swett
- Re: ack delay in rx packets Subodh Iyengar
- Re: ack delay in rx packets Ian Swett
- Re: ack delay in rx packets Subodh Iyengar