RE: Proposal to replace ACK block count with ACK length

"Deval, Manasi" <manasi.deval@intel.com> Tue, 12 June 2018 00:22 UTC

Return-Path: <manasi.deval@intel.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 66CEC130E7D for <quic@ietfa.amsl.com>; Mon, 11 Jun 2018 17:22:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=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 O0kJdchc5Rv6 for <quic@ietfa.amsl.com>; Mon, 11 Jun 2018 17:22:06 -0700 (PDT)
Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C7783130DC3 for <quic@ietf.org>; Mon, 11 Jun 2018 17:22:06 -0700 (PDT)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jun 2018 17:22:06 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.51,212,1526367600"; d="scan'208,217";a="207242152"
Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by orsmga004.jf.intel.com with ESMTP; 11 Jun 2018 17:22:05 -0700
Received: from orsmsx157.amr.corp.intel.com (10.22.240.23) by ORSMSX103.amr.corp.intel.com (10.22.225.130) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 11 Jun 2018 17:22:05 -0700
Received: from orsmsx111.amr.corp.intel.com ([169.254.12.50]) by ORSMSX157.amr.corp.intel.com ([169.254.9.202]) with mapi id 14.03.0319.002; Mon, 11 Jun 2018 17:22:05 -0700
From: "Deval, Manasi" <manasi.deval@intel.com>
To: Jana Iyengar <jri.ietf@gmail.com>, QUIC WG <quic@ietf.org>
Subject: RE: Proposal to replace ACK block count with ACK length
Thread-Topic: Proposal to replace ACK block count with ACK length
Thread-Index: AdP8YgwJ2vNnJzEFTfGDVpW0S5D9xAFc4mOAAA2Oe4AAC1gQUA==
Date: Tue, 12 Jun 2018 00:22:04 +0000
Message-ID: <1F436ED13A22A246A59CA374CBC543998B833B91@ORSMSX111.amr.corp.intel.com>
References: <1F436ED13A22A246A59CA374CBC543998B832414@ORSMSX111.amr.corp.intel.com> <20180611154244.GA27622@ubuntu-dmitri> <CACpbDcdxzRxeiN93kKoj__vo2TERm4QZKqaesL=jr4wQUN1gXA@mail.gmail.com>
In-Reply-To: <CACpbDcdxzRxeiN93kKoj__vo2TERm4QZKqaesL=jr4wQUN1gXA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMGQxNTBhNWYtNGQ1NC00NzY1LTg3YjMtM2RlN2Q1NWMwY2Y2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiWTZ5K2d6TWJjWWpFZzF1cHNMcXBTSEdmQ1BcLzh0VFRpXC9xNXc5TWxSbTdpbStIYXBHZVdXNTZ5eHJUT2ZrdGZnIn0=
x-ctpclassification: CTP_NT
dlp-product: dlpe-windows
dlp-version: 11.0.200.100
dlp-reaction: no-action
x-originating-ip: [10.22.254.139]
Content-Type: multipart/alternative; boundary="_000_1F436ED13A22A246A59CA374CBC543998B833B91ORSMSX111amrcor_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/8nAdBUSoG4TWAs8GDgn38TiiF_w>
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: Tue, 12 Jun 2018 00:22:11 -0000

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