Re: Proposal to replace ACK block count with ACK length
Eric Rescorla <ekr@rtfm.com> Sat, 16 June 2018 20:13 UTC
Return-Path: <ekr@rtfm.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 E18BC130E45 for <quic@ietfa.amsl.com>; Sat, 16 Jun 2018 13:13:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.908
X-Spam-Level:
X-Spam-Status: No, score=-1.908 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, T_DKIMWL_WL_MED=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.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 K_ZyMTgxbqfs for <quic@ietfa.amsl.com>; Sat, 16 Jun 2018 13:13:20 -0700 (PDT)
Received: from mail-ot0-x230.google.com (mail-ot0-x230.google.com [IPv6:2607:f8b0:4003:c0f::230]) (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 3A30E12785F for <quic@ietf.org>; Sat, 16 Jun 2018 13:13:20 -0700 (PDT)
Received: by mail-ot0-x230.google.com with SMTP id v24-v6so6043418otk.13 for <quic@ietf.org>; Sat, 16 Jun 2018 13:13:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Y9bfNKvJsC7x6gKyufeFZ4EEiTGN6jQVmI6hRm4tGs4=; b=oUzUGoFAXqNbynz71gKVlDnRS7xl2zXr2glcVUuW7fY4LWXPgpzRokD3IMgOGFPBsh QbNaEcXYRDboUZVFf1VR9jhXgEz+jQ3jWA+O5Fdfp4K09DvOmm5Sm2FPE+1dLQ8lvaxM KTsXK8wZtDjrEgaSTfKcCE1Y/um11JzSgyer4E3yhGA42G4Ab07Ft73RnBN59inxQZc6 NFgp5YbKvuhcVyasRkhGeVDXTWWZhcFoZzVk5SMO+Y+OLRvut4sCoOahiQ463KmGMjLa laoUx5xRfWUEPyJX4zg3w+lwgAY0ObIdfKN7Ezo26dRW5nsgMb73ZgESEXSJkcOYsnxn rKyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Y9bfNKvJsC7x6gKyufeFZ4EEiTGN6jQVmI6hRm4tGs4=; b=Yji41eiyAf9CdOUetonMFbPBXqgfRas0xculf9k6FhqXVCFQ+p+T1miWxyFVmBu632 V2nANrLye6jUxKiEyOXrdgqUPFnB09C8zzeJ2QIer0+X2S/AxB961OwtJ3eDJoEYR8w+ 0haIMBl/sVF04MBqYj6+CdbgCeIqANBt0Q9JxwvjnQJ3hU9xpWyl4xRW7mdJreiB6kHH Q/YaoTtzVLvkP79tBCRXHu8dvo8MVN3/9lkeKd4xpAU1gMShNdRGwrDy0a83v3LOKZsW i980lwndJkoWQ16D5NT6LEAai2JVGjzAucwZ0rGRMe/liEENA/JUbuPP4ZxgRcP0fWo2 2W8w==
X-Gm-Message-State: APt69E0gO4WyMDrWQLB+x1gHvJtH8ALJR8kwZL0xgmbUAeg+hsHovJEe LHJ+0auwBTlPXkXmfMATr60xbYmRXDhkB0Xeu0r94g==
X-Google-Smtp-Source: ADUXVKKgHDNhbUMJrWzQ/EUlA9LblOc4FwTi65qG/Gf3quzQwxQZzZmkIY8hXqXTk3bPhNtCSuU+NuNWwjnFKemoCPE=
X-Received: by 2002:a9d:2f2a:: with SMTP id h39-v6mr3937904otb.214.1529179999579; Sat, 16 Jun 2018 13:13:19 -0700 (PDT)
MIME-Version: 1.0
Received: by 2002:ac9:3a8a:0:0:0:0:0 with HTTP; Sat, 16 Jun 2018 13:12:39 -0700 (PDT)
In-Reply-To: <CAOYVs2qE=Tw_7eax9HwaESaQPMh7k3BSVV112d+pPeSfZ09EjQ@mail.gmail.com>
References: <1F436ED13A22A246A59CA374CBC543998B832414@ORSMSX111.amr.corp.intel.com> <20180611154244.GA27622@ubuntu-dmitri> <CACpbDcdxzRxeiN93kKoj__vo2TERm4QZKqaesL=jr4wQUN1gXA@mail.gmail.com> <1F436ED13A22A246A59CA374CBC543998B833B91@ORSMSX111.amr.corp.intel.com> <CABcZeBOjjRrX+AsXdgcUKpL=ciL8U_U1+WVAhQv-ZjwGxkQxYw@mail.gmail.com> <MWHPR21MB0638068EFA850328793E55F6B67C0@MWHPR21MB0638.namprd21.prod.outlook.com> <CACpbDcdbTKKEh8dcshWM6-7vq2hBFJC1myL1+H6etpMMjth+wg@mail.gmail.com> <CABkgnnV_thWcAi=AdwV+Za5rXywiUvtOYpsNNp1y7=RvL2MvWA@mail.gmail.com> <CAOYVs2qE=Tw_7eax9HwaESaQPMh7k3BSVV112d+pPeSfZ09EjQ@mail.gmail.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Sat, 16 Jun 2018 13:12:39 -0700
Message-ID: <CABcZeBOCRHAuh44CrMH02UZ3Ar_2sa5M1c3LG_A-RPzXX+H+Yw@mail.gmail.com>
Subject: Re: Proposal to replace ACK block count with ACK length
To: Marten Seemann <martenseemann@gmail.com>
Cc: Martin Thomson <martin.thomson@gmail.com>, Jana Iyengar <jri.ietf@gmail.com>, Praveen Balasubramanian <pravb@microsoft.com>, QUIC WG <quic@ietf.org>, "Deval, Manasi" <manasi.deval@intel.com>
Content-Type: multipart/alternative; boundary="000000000000ac4908056ec7f629"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/YELnHwFkaYhfSGlBj8acLVD4-cQ>
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: Sat, 16 Jun 2018 20:13:22 -0000
On Fri, Jun 15, 2018 at 6:46 PM, Marten Seemann <martenseemann@gmail.com> wrote: > This proposal increases the size of the ACK frame by 1 byte in the common > case (less than 63 ACK ranges), since the ACK length field here always > consumes 2 bytes, whereas the ACK Block Count is a variable-length integer. > Considering how much work we put into minimising the size of the frames, > this feels like a step in the wrong direction. > > Regarding the processing cost, I agree with Dmitri. Handling an ACK frame > requires looping over and making changes to a data structure that keeps > track of sent packets. This is much more expensive than simply parsing a > bunch of varints in the ACK frame. It seems unlikely that a multi-threaded > packet parser would offer any real-world performance benefits. > I don't want to overstate the benefit here, but my point isn't that parsing is expensive but that if you want to have a multithreaded packet processing system, then it's nice to have a simpler data structure (the unparsed ACK block) to hand to the ACK processing thread. -Ekr > On Sat, Jun 16, 2018 at 6:19 AM Martin Thomson <martin.thomson@gmail.com> > wrote: > >> When we discussed this before, some people observed that this creates >> a need to encode in two passes. That's the trade-off here. (Not >> expressing an opinion.) >> On Fri, Jun 15, 2018 at 3:51 PM Jana Iyengar <jri.ietf@gmail.com> wrote: >> > >> > I don't have a strong opinion on this. I'm certainly not opposed to it. >> > Does anyone have a strong opposition? >> > >> > On Fri, Jun 15, 2018 at 3:10 PM Praveen Balasubramanian < >> pravb@microsoft.com> wrote: >> >> >> >> I agree as well since this can help reduce per packet processing >> overhead. ACKs are going to be the second most common frame type so no >> objections to special casing. >> >> >> >> >> >> >> >> From: QUIC [mailto:quic-bounces@ietf.org] On Behalf Of Eric Rescorla >> >> Sent: Friday, June 15, 2018 9:11 AM >> >> To: Deval, Manasi <manasi.deval@intel.com> >> >> Cc: Jana Iyengar <jri.ietf@gmail.com>; QUIC WG <quic@ietf.org> >> >> Subject: Re: Proposal to replace ACK block count with ACK length >> >> >> >> >> >> >> >> I agree with Manasi here. This change would allow ack frame parsing to >> be more self-contained, which is an advantage for the parser and also >> potentially for parallelism (because you can quickly find the frame and >> then process it in parallel). >> >> >> >> >> >> >> >> -Ekr >> >> >> >> >> >> >> >> >> >> >> >> On Mon, Jun 11, 2018 at 5:22 PM, Deval, Manasi <manasi.deval@intel.com> >> wrote: >> >> >> >> In general, varints require some specific logic for parsing. To skip >> over any header, I have to read every single varint. As the code sees >> Stream and ACK headers most frequently, that is my focus. The Stream frame >> has a length in its third field. >> >> >> >> >> >> >> >> ACK parsing, however, needs 6 + 2*num_blocks reads to identify length. >> There are two reads each for ‘largest acknowledged’, ‘ACK delay’ and ‘ACK >> block count’. The pain point is the total number of cycles parse an ACK. If >> I am processing 10M pps, where 10% - 30% of the packets have a piggybacked >> ACK, these cycles becomes a significant bottleneck. >> >> >> >> >> >> >> >> Thanks, >> >> >> >> Manasi >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> From: QUIC [mailto:quic-bounces@ietf.org] On Behalf Of Jana Iyengar >> >> Sent: Monday, June 11, 2018 3:11 PM >> >> To: Deval, Manasi <manasi.deval@intel.com>; QUIC WG <quic@ietf.org> >> >> Subject: Re: Proposal to replace ACK block count with ACK length >> >> >> >> >> >> >> >> You're right that we no longer have the ability to skip an ACK frame, >> and this crept in when we moved to varints. >> >> >> >> I believe your problem though is generally true of most frames not >> just ACKs, since ids, packet numbers, and numbers in all frames are now all >> varints. To skip any frame, you'll need to parse the varint fields in those >> frames. If you have logic to process and skip varints, then skipping the >> ack block section is merely repeating this operation (2*num_block+1) times. >> Do you see specific value in skipping ACK frames over the other control >> frames? >> >> >> >> >> >> >> >> >> >> >> >> On Mon, Jun 11, 2018 at 8:43 AM Dmitri Tikhonov >> <dtikhonov@litespeedtech..com> wrote: >> >> >> >> On Mon, Jun 11, 2018 at 03:33:35PM +0000, Deval, Manasi wrote: >> >> > - Moving the ACK length to the front of the ACK allows the >> >> > flexibility of either reading the entire ACK or reading the >> >> > first 16 bits and skipping over the length. This is a useful >> >> > feature for the case where ACK processing is split into >> >> > multiple layers. Depending on the processor this is run on, >> >> > there are different advantages - >> >> >> >> Just a note. In my experience, the cost of parsing an ACK frame is >> >> negligible compared to the cost of processing an ACK frame: that is, >> >> poking at various memory locations to discard newly ACKed packets. >> >> >> >> - Dmitri. >> >> >> >> >> >>
- Re: Proposal to replace ACK block count with ACK … Mikkel Fahnøe Jørgensen
- Re: Proposal to replace ACK block count with ACK … Eric Rescorla
- Re: Proposal to replace ACK block count with ACK … Kazuho Oku
- RE: Proposal to replace ACK block count with ACK … Nick Banks
- Re: Proposal to replace ACK block count with ACK … Ian Swett
- RE: Proposal to replace ACK block count with ACK … Deval, Manasi
- Re: Proposal to replace ACK block count with ACK … Mikkel Fahnøe Jørgensen
- Re: Proposal to replace ACK block count with ACK … Ian Swett
- Re: Proposal to replace ACK block count with ACK … Mirja Kühlewind
- Re: Proposal to replace ACK block count with ACK … Marten Seemann
- RE: Proposal to replace ACK block count with ACK … Deval, Manasi
- RE: Proposal to replace ACK block count with ACK … Deval, Manasi
- Re: Proposal to replace ACK block count with ACK … Eric Rescorla
- Re: Proposal to replace ACK block count with ACK … Ian Swett
- RE: Proposal to replace ACK block count with ACK … Mikkel Fahnøe Jørgensen
- RE: Proposal to replace ACK block count with ACK … Deval, Manasi
- RE: Proposal to replace ACK block count with ACK … Deval, Manasi
- Re: Proposal to replace ACK block count with ACK … Marten Seemann
- Re: Proposal to replace ACK block count with ACK … Kazuho Oku
- Re: Proposal to replace ACK block count with ACK … Marten Seemann
- Re: Proposal to replace ACK block count with ACK … Kazuho Oku
- Re: Proposal to replace ACK block count with ACK … Ian Swett
- Re: Proposal to replace ACK block count with ACK … Eric Rescorla
- Re: Proposal to replace ACK block count with ACK … Kazuho Oku
- Re: Proposal to replace ACK block count with ACK … Eggert, Lars
- Re: Proposal to replace ACK block count with ACK … Christian Huitema
- Re: Proposal to replace ACK block count with ACK … Kazuho Oku
- Re: Proposal to replace ACK block count with ACK … Marten Seemann
- Re: Proposal to replace ACK block count with ACK … Martin Thomson
- Re: Proposal to replace ACK block count with ACK … Jana Iyengar
- RE: Proposal to replace ACK block count with ACK … Praveen Balasubramanian
- Re: Proposal to replace ACK block count with ACK … Eric Rescorla
- Re: Proposal to replace ACK block count with ACK … Mikkel Fahnøe Jørgensen
- RE: Proposal to replace ACK block count with ACK … Deval, Manasi
- Re: Proposal to replace ACK block count with ACK … Dmitri Tikhonov
- Proposal to replace ACK block count with ACK leng… Deval, Manasi
- Re: Proposal to replace ACK block count with ACK … Jana Iyengar
- RE: Proposal to replace ACK block count with ACK … Deval, Manasi
- Re: Proposal to replace ACK block count with ACK … Subodh Iyengar
- Re: Proposal to replace ACK block count with ACK … Deval, Manasi
- RE: Proposal to replace ACK block count with ACK … Deval, Manasi
- Re: Proposal to replace ACK block count with ACK … Mirja Kühlewind