Re: Getting to consensus on packet number encryption

Benjamin Kaduk <bkaduk@akamai.com> Wed, 02 May 2018 12:10 UTC

Return-Path: <bkaduk@akamai.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 35A4B126FB3 for <quic@ietfa.amsl.com>; Wed, 2 May 2018 05:10:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.711
X-Spam-Level:
X-Spam-Status: No, score=-2.711 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=akamai.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 NSTSB1zixWdr for <quic@ietfa.amsl.com>; Wed, 2 May 2018 05:10:23 -0700 (PDT)
Received: from mx0a-00190b01.pphosted.com (mx0a-00190b01.pphosted.com [IPv6:2620:100:9001:583::1]) (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 6782C126D45 for <quic@ietf.org>; Wed, 2 May 2018 05:10:23 -0700 (PDT)
Received: from pps.filterd (m0122333.ppops.net [127.0.0.1]) by mx0a-00190b01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w42C4Qp8008160; Wed, 2 May 2018 13:10:23 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : content-transfer-encoding : in-reply-to; s=jan2016.eng; bh=NqdvoISDvRY1AkM6yi8+WvFwSiYZrrLhiLR3imSShd8=; b=VeS7T+wWAA0ZSw1R7MbpdgHSFwFfsWjrJkccyBi8orXZoBCoCVvJMKzCSv42Qh9otJ6B FnlPwkZnkw3xPK8bGV7489DR7E/WdcZchJ5l5JbBMTjBRNTxCCbnoJo5Gi0RGId1wduO 09/tXXOIa8qmwx4w07KaDDM9Bql3Z1gn8ES1uHzOnbzd+Us0+uGHTzoGJX3Ko4hccWPH wlGEZi6Zc6C/EYEfOtOqbYmUt4rnacrCQMdJmxhqJ3ghDNZ1cOgU8hdmOZmSI5NI0tMO NCdQKlyP43Q2zs+VZafOa0J9bBZtVErzVG+bq/II/7VbbEm1WmptsBYm0RSOo1L5ab4m tA==
Received: from prod-mail-ppoint2 (prod-mail-ppoint2.akamai.com [184.51.33.19]) by mx0a-00190b01.pphosted.com with ESMTP id 2hmpsprvdu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 May 2018 13:10:22 +0100
Received: from pps.filterd (prod-mail-ppoint2.akamai.com [127.0.0.1]) by prod-mail-ppoint2.akamai.com (8.16.0.21/8.16.0.21) with SMTP id w42C1QKU032400; Wed, 2 May 2018 08:10:21 -0400
Received: from prod-mail-relay10.akamai.com ([172.27.118.251]) by prod-mail-ppoint2.akamai.com with ESMTP id 2hmm9v17hp-1; Wed, 02 May 2018 08:10:20 -0400
Received: from bos-lpczi.kendall.corp.akamai.com (bos-lpczi.kendall.corp.akamai.com [172.19.17.86]) by prod-mail-relay10.akamai.com (Postfix) with ESMTP id 166831FCD8; Wed, 2 May 2018 12:10:19 +0000 (GMT)
Received: from bkaduk by bos-lpczi.kendall.corp.akamai.com with local (Exim 4.86_2) (envelope-from <bkaduk@akamai.com>) id 1fDqaQ-0000uj-GO; Wed, 02 May 2018 07:10:18 -0500
Date: Wed, 02 May 2018 07:10:18 -0500
From: Benjamin Kaduk <bkaduk@akamai.com>
To: Praveen Balasubramanian <pravb@microsoft.com>
Cc: IETF QUIC WG <quic@ietf.org>
Subject: Re: Getting to consensus on packet number encryption
Message-ID: <20180502121018.GF5742@akamai.com>
References: <01AE46C6-682C-4A21-84CD-1D8DAD6F49D9@fb.com> <CACpbDcdnmHrWMCShYd1pEDBervRKfO1pMUM8hb4tkK9nqH1Mdw@mail.gmail.com> <MWHPR21MB06386100B48E17A059B5A04EB6800@MWHPR21MB0638.namprd21.prod.outlook.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <MWHPR21MB06386100B48E17A059B5A04EB6800@MWHPR21MB0638.namprd21.prod.outlook.com>
User-Agent: Mutt/1.5.24 (2015-08-30)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-05-02_04:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=899 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1805020099
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-05-02_04:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=874 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1805020099
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/9Oj921-SUN7ceUMwfECtjOVTRc0>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
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: Wed, 02 May 2018 12:10:25 -0000

Hi Praveen,

On Wed, May 02, 2018 at 02:02:37AM +0000, Praveen Balasubramanian wrote:
> We can get (1) done but I disagree that we can decouple (2). It doesn’t make sense to require performance overhead all the time with no benefit. For the Internet, PNE can prevent ossification so it is seen as a reasonable trade-off. For the datacenter, there is no known benefit, only cost.

Most of why I am pushing back so hard on this point is that I am having a
*really* hard time getting the statement of "no benefit" (i.e., exactly zero)
to mesh with my understanding of the situation.  I don't know the best
way past this impasse -- it doesn't really seem right for me to make a
list of potential benefits and have you shoot them down, for example.  I
think maybe you are trying to make a slightly different point involving
something like ongoing operational benefits (as opposed to cost of
implementation/risk of bugs/ecosystem benefits), but I'm not entirely
sure.

> We know that there is a CPU cost, this is not speculation. Doesn’t matter if
> the cost is 1% or 10%. Hardware implementers have also raised concerns. Every

Well, I think it rather does matter for 1% vs. 10%.  If it was 0.1%
(unlikely, I suppose), then that might be "in the noise" and not worth
doing anything about, ever.  For a 1% cost, that's significant enough to
make me want to address it in my long-term plans, but it is not
necessarily a big enough impact to require immediate attention.  10%, on
the other hand, probably would require immediate attention and be a
show-stopper.

> CPU cycle we spend on things that add no value to the user should be
> questioned. Every extra instruction we execute in the hot data path leaves
> less CPU for workloads, burns more power and makes for a worse comparison
> with HTTPS over TCP. The same argument as privacy holes holds here – just

The "burns more power" argument can be applied to every single CPU
instruction; relative measures (i.e., percentage of total CPU) from
actual deployment are what I find to be most compelling.

> because there are some existing perf bottlenecks doesn’t mean we add more,
> particularly ones we cannot mitigate. I said it before that there are lots of
> ways we can improve UDP perf but I don’t know of any technique for reducing
> crypto CPU cost other than hardware offload.

And I ask again, who is "we"?  (At this point I am mostly assuming "all
QUIC implementors", but it would be nice to be sure.)

> The cost is certainly worth saving with something as simple as a negotiation
> mechanism. Am I missing something about a transport parameter being

>From the rest of the discussion, I don't think you've really sold people
on "certainly", yet.

> complicated to implement? Implementations are free to support only PNE and
> not negotiate anything else. There is actually an even simpler mechanism if a
> transport parameter is deemed as costly: if the peer sends PN = 0 in the CI,
> then its requesting no PNE and the receiver can choose to proceed or drop and
> force TCP fall back. This should take only an extra if check on the receiver
> CI processing logic to implement. I am assuming here that PNE on input of 0
> will not produce 0 so it’s a safe sentinel value.

I think some people are worried not just about the complexity/simplicity
of the mechanism implemented, but broader-scope ecosystem and
architecture issues, whether that's a general complexity reduction
initiative or more subtle issues involving middleboxes attempting to
coerce certain sorts of behavior.

-Ben