Re: Proposal to replace ACK block count with ACK length

Martin Thomson <martin.thomson@gmail.com> Fri, 15 June 2018 23:19 UTC

Return-Path: <martin.thomson@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 BA554130E9C for <quic@ietfa.amsl.com>; Fri, 15 Jun 2018 16:19:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 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, RCVD_IN_DNSWL_NONE=-0.0001, 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 AbBZZHr6zIw3 for <quic@ietfa.amsl.com>; Fri, 15 Jun 2018 16:19:24 -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 70827130E90 for <quic@ietf.org>; Fri, 15 Jun 2018 16:19:24 -0700 (PDT)
Received: by mail-ot0-x230.google.com with SMTP id 101-v6so12739358oth.4 for <quic@ietf.org>; Fri, 15 Jun 2018 16:19:24 -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:content-transfer-encoding; bh=SRM+0FIOKqHXwKFaF/tpdiQF1W3N+eZhlZ/H+fm60KI=; b=m+3z4o6ae2n15Arq7hBzoxsMjeKOTfzIvQVtmNhQX7H2JfvjGZtyl4oqQyXnByf974 /RqZ2zGTKlSq7kv1Yck35Qq2QDjClSbCvUUrUXaYWMOkfZJD7uqJrLRbnRHpqPv5vDgH uBUeVxIKxujvz8wTRDw9t2A/TQ+eXVmgWAyIZBkiMfVvRaPZn2NwKMe9I4O2uthW596d //lP5kYTexaTpqxPhoTL72lt1H5abTn0yuscbubXXPSUwtUYRANs7j+K4/QbF146QiKT NCyMFHNQnuFR9E/0LcqtMjhW9qHxw7S+jqOuhaXp9586mJjwFaqdCSqzXN791/Vjfics K51A==
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:content-transfer-encoding; bh=SRM+0FIOKqHXwKFaF/tpdiQF1W3N+eZhlZ/H+fm60KI=; b=NFJmb0y6rh2XamswJuwLvPWaMkIaumayTHyBLWGaHokoZHrEcKbzzANACJa479zC4S gk9nUMASNd3MQ5xS4laJxkEc3UvaX/n6HArMHgqJvy0htiVAQ4dn1mU9GHuBHp2uO7mr DqSRnHxTC4TwGC3hSl04dDjjtB5U0LQLwFN7/3pxT6+74aqnoYQpkkEtAVf5nj1wcxoh tXC10WormUdE08USKmeNeCHos1VtT8BD750rPx+s8OsK66hKelsscm8G8BqHNNOCqTku il2ts81ORUNUL/qLBR+VcjU1FEkvd0tFCx4QoD6tuM9a0UupirKp1NSo59OKTXE8tLq0 YO/Q==
X-Gm-Message-State: APt69E3IJBe5ELw5JYoeZj7ioc1FTcHQmbMB3MBbzcJVlXvr56+cVZWq zn9w/rvhtXsFas6hl7rnLbv6otwEuRlGmqMBUbs=
X-Google-Smtp-Source: ADUXVKLfp0MlkkrM4le0bb/T4z+DrtqghJXzX0fYISYnAPe7lCtlwzQmFfewdIBnqUbwf2gUcT3gnFl73dxTjNN+nS4=
X-Received: by 2002:a9d:3666:: with SMTP id w93-v6mr2201519otb.394.1529104763660; Fri, 15 Jun 2018 16:19:23 -0700 (PDT)
MIME-Version: 1.0
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>
In-Reply-To: <CACpbDcdbTKKEh8dcshWM6-7vq2hBFJC1myL1+H6etpMMjth+wg@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
Date: Fri, 15 Jun 2018 16:19:13 -0700
Message-ID: <CABkgnnV_thWcAi=AdwV+Za5rXywiUvtOYpsNNp1y7=RvL2MvWA@mail.gmail.com>
Subject: Re: Proposal to replace ACK block count with ACK length
To: Jana Iyengar <jri.ietf@gmail.com>
Cc: Praveen Balasubramanian <pravb@microsoft.com>, Eric Rescorla <ekr@rtfm.com>, QUIC WG <quic@ietf.org>, "Deval, Manasi" <manasi.deval@intel.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/xmD6kdsWsK3QuC1z-lKw4U4_I6I>
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: Fri, 15 Jun 2018 23:19:38 -0000

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.
>>
>>