Cost of parsing ACK frames in QUIC

"Deval, Manasi" <> Thu, 10 May 2018 14:25 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id DDF7F12EADE for <>; Thu, 10 May 2018 07:25:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.9
X-Spam-Status: No, score=-6.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 8yaSwRPlJ3hS for <>; Thu, 10 May 2018 07:25:40 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 3C22512EAD0 for <>; Thu, 10 May 2018 07:25:40 -0700 (PDT)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from ([]) by with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 May 2018 07:25:39 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos; i="5.49,385,1520924400"; d="scan'208,217"; a="39913301"
Received: from ([]) by with ESMTP; 10 May 2018 07:25:39 -0700
Received: from ( by ( with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 10 May 2018 07:25:39 -0700
Received: from ([]) by ([]) with mapi id 14.03.0319.002; Thu, 10 May 2018 07:25:39 -0700
From: "Deval, Manasi" <>
Subject: Cost of parsing ACK frames in QUIC
Thread-Topic: Cost of parsing ACK frames in QUIC
Thread-Index: AdPoaJzXsjis3gTFQX6IIe0OpT4RMg==
Date: Thu, 10 May 2018 14:25:38 +0000
Message-ID: <>
Accept-Language: en-US
Content-Language: en-US
dlp-product: dlpe-windows
dlp-reaction: no-action
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_1F436ED13A22A246A59CA374CBC543998B64E65DORSMSX111amrcor_"
MIME-Version: 1.0
Archived-At: <>
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 10 May 2018 14:25:42 -0000

Hi All,

The QUIC header definitions tend to use as few bits as possible by implementing the policy to use variable size fields. The result of this policy would be that each receiver needs to do a two part lookup to identify the field and this needs to be implemented serially in order to parse the whole frame time.

For example, in a case where no packets were dropped, a sender may receive an ACK for a single block. If a code path were trying to determine the size of an ACK, they would have to read 8 fields to determine the size of ACK.

A client only sees a few ACKs. Majority of the ACKs are seen on the server side. It would be good to simplify this scheme so ACK processing can be accelerated with SIMD instructions would be good.