Re: Is the invariants draft really standards track?

Ted Hardie <ted.ietf@gmail.com> Fri, 19 June 2020 22:05 UTC

Return-Path: <ted.ietf@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 E6C043A0EE3 for <quic@ietfa.amsl.com>; Fri, 19 Jun 2020 15:05:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.997
X-Spam-Level:
X-Spam-Status: No, score=-1.997 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 NzZ_Q2RTkHjr for <quic@ietfa.amsl.com>; Fri, 19 Jun 2020 15:05:42 -0700 (PDT)
Received: from mail-ot1-x329.google.com (mail-ot1-x329.google.com [IPv6:2607:f8b0:4864:20::329]) (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 5B63A3A0F1E for <quic@ietf.org>; Fri, 19 Jun 2020 15:05:40 -0700 (PDT)
Received: by mail-ot1-x329.google.com with SMTP id n5so8484405otj.1 for <quic@ietf.org>; Fri, 19 Jun 2020 15:05:40 -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; bh=7zAdIQYgmCoQDPGwx921lv5h/Yn261qQ8dODQnrHg4E=; b=dBrBhOJCihOnuOtqyh0y2ak1Yvq/5zrX4BJ3RDCUJgCvC8m52MJpHlOYMbPEdWisF3 0rDfzXhSh05eIiw7fegunIBoblFUIeeAk+WM+H20m8x42y5gvYHcwvczAil4/HTSWU9M AVSAGXUUztT7bXlrYW9+9JUTguNkHWL/6aINkz5MMNdo0F1Qvl88huLrnlB0ZsS0zF4/ 89AdlCk78UCg8jWjDfmXQayb1htN3Mw0s4+5/By5b4aMQw9CZ6wbtiFIhNNeTP55ShYT TWrJoUMjjVFZEDd6E3qcxk2/FTXFTaWhs+cFScfDvyU/2KPPyaob8QWVqqQy0OFN8M2e JOKg==
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; bh=7zAdIQYgmCoQDPGwx921lv5h/Yn261qQ8dODQnrHg4E=; b=Vyt73q6VuBSuwJJ5GvXmTdGwOZ9TgS/WG0ypAQb+W0JEhwGS2E376W5miEY2W+Y7j1 rS8b8jwE8KR8FZqPolhsTPXxEfQQ6GHHYV3uKaAKIoZwAZe64mPVmh2d+R9vJp8MiAdD B70tGTZa/DMxlFuhz3YMEqLJSjB9UJQ3V6eww+jdumR6AZRf9UsSdRkubhWT7A20Hvyl qENvzg4hgRa2chLdS5ENHbCd1MnE5T3FP2mBP1169LUgSYuTWVfqYPRfwD2CJM+m7/d4 gjgliRRTLBfG5kcuPTKeqFjP6zMH/leP0uJd/DFOCGslQRlcCuoaz/YBg973Nhbu4P8C vHxw==
X-Gm-Message-State: AOAM532vJM/P6TCsLIU7V9OtsyGbL3PV3JUk5tPJTKrmHA2MwuElt0Gn i52xXKoa+axqhTUvKH9H6TlrCBT3V8DYB+m96Ss=
X-Google-Smtp-Source: ABdhPJxB6Zk9Lt4xn4imCkRITXCnZq9PCpffoaWBMF7JiS8zUg/Ic3wAPbtfXoPG9s3BcR5WefxwrzCqDKdEPhMtM0o=
X-Received: by 2002:a9d:aaa:: with SMTP id 39mr4555472otq.269.1592604339577; Fri, 19 Jun 2020 15:05:39 -0700 (PDT)
MIME-Version: 1.0
References: <CAM4esxQBqfrz24riPQA_VGKcGp_TzW0pqb97KfFMtNdW9pUfDg@mail.gmail.com> <833A693C-62E6-4889-9954-FCE65A839A7C@eggert.org> <CAKcm_gPMO2DtqvKucqVw0zDjSniSOmFD4p1Tp4YLjr9WSWdEUw@mail.gmail.com> <CAJU8_nUN42gGmQof24XD9-EjXedyzcarDyRP8MGe1qW-BZ=+Aw@mail.gmail.com> <9cd91c24-c730-22a4-7aa0-baf61613b3ce@huitema.net> <f4922cdb59014202900de44cc5fea0ff@usma1ex-dag1mb5.msg.corp.akamai.com> <CAM4esxQvwkTvpUcu6-+W5zWo22m-R1jvN7DcCpXfuw8Hb55qsw@mail.gmail.com> <95dd02c92b32472d9cab0dd47b98c637@usma1ex-dag1mb5.msg.corp.akamai.com> <CAM4esxQxxXn27rZEY75-AsHD5VF0fqiV1VDyeSrzQ=-sM7JNCg@mail.gmail.com> <9c2e300c30f74d1794d11cf4334ea07b@usma1ex-dag1mb5.msg.corp.akamai.com> <2c40f3d9-fa40-9834-ac30-36bc9a1a6303@huitema.net>
In-Reply-To: <2c40f3d9-fa40-9834-ac30-36bc9a1a6303@huitema.net>
From: Ted Hardie <ted.ietf@gmail.com>
Date: Fri, 19 Jun 2020 15:05:13 -0700
Message-ID: <CA+9kkMBQt001xOVgT=9G8YOOTOJ+9S=OWDwGEeYuKVm46Cq3iQ@mail.gmail.com>
Subject: Re: Is the invariants draft really standards track?
To: Christian Huitema <huitema@huitema.net>
Cc: "Lubashev, Igor" <ilubashe=40akamai.com@dmarc.ietf.org>, Martin Duke <martin.h.duke@gmail.com>, IETF QUIC WG <quic@ietf.org>, Lars Eggert <lars@eggert.org>, Kyle Rose <krose@krose.org>, Ian Swett <ianswett=40google.com@dmarc.ietf.org>, Jared Mauch <jared@puck.nether.net>
Content-Type: multipart/alternative; boundary="000000000000edac6605a8771764"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/Vpmve31uAjadB3AbCN4WHfJ1dzE>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
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, 19 Jun 2020 22:05:49 -0000

Hi Christian,

A question in-line,

On Fri, Jun 19, 2020 at 2:49 PM Christian Huitema <huitema@huitema.net>
wrote:

> When under DOS attack, you want to "minimize blowback", i.e., as much as
> possible avoid generating packets in response to attack traffic. So, yes, a
> server may choose to not send stateless resets to anyone when under attack;
> in fact, my recommendation would be that a server SHOULD NOT send stateless
> resets to anyone when under attack.
>
> That said, Igor raised an interesting point about return traffic. It would
> be very nice if DOS protection boxes could distinguish between "validated
> traffic" that the server presumably intends to process, and "unsolicited
> traffic" that will just consume resource. The box can then reserve some
> share of the resource for validated traffic, and place the rest of the
> traffic in a lower priority queue. Fine, but there needs to be a test. The
> classic test is that incoming traffic is "validated" if the protection box
> can match it with return traffic coming from the server -- for some
> definition of matching.
>
> From that point of view, stateless reset is definitely not helpful. But
> problematic traffic goes beyond that. The server will reply to a client's
> initial with a server's initial packet. Does that validate the response
> traffic? OK, maybe the protection box can programmed to only validate
> traffic if it sees 1RTT packets. But many servers will send 1-RTT packets
> as 0.5 RTT. Does that validate the response traffic?
>
> We might say that traffic is validated when the handshake is confirmed,
> but the protection box does not understand the TLS handshake, it just sees
> packet types and packet sizes. It cannot distinguish between 0.5RTT data
> and 1RTT data, and thus the closest approximation of "validation" would be
> seeing more than an initial window worth of traffic coming back from the
> server. That does not sound great.
>
> On the other hand, things get much better if the server under attack can
> adopt a defensive posture and help the DOS protection box do its job.
> Suppose that a server can detect that it is under attack -- or be
> explicitly configured so. The simplest defensive posture would be to (1)
> disable stateless reset and (2) not send any 0.5RTT packet, including in
> response to 0-RTT. The protection boxes can at that point take the 1-RTT
> packets from the server as indicating validation.
>
Perhaps I'm misreading you here, but this sounds like you expect the
protection boxes to be able to distinguish when servers see themselves as
under DOS from when they don't, so that they can tell that the lack of
0.5RTT is an indication of an attack response.  Given distribution patterns
of DOS attacks, I'm struggling to see whether that will commonly be the
case.

You could, of course, always put handshake traffic into low-priority queues
until you see the 1-RTT packets that validate the server's interest.  That
would make 1-RTT traffic effectively a path signal of validation.  My
concern with that is that using those low priority queues during the
handshake phase seems likely to result in worse latency and increased risk
of packet loss (which can be tricky during that phase).  That seems a heavy
price to pay during non-attack times for better protection when under
attack.

Am I misunderstanding how this is distinguished?

Clue appreciated,

Ted



> Maybe we should specify that.
>
> -- Christian Huitema
> On 6/19/2020 1:42 PM, Lubashev, Igor wrote:
>
> > There is no need for servers to decrypt CIDs in QUIC-LB. Presumably the
> server has a lookup table for its CIDs.
>
>
>
> Sending a stateless reset in response to a junk packet would cost more CPU
> than verifying CID integrity.  But, yes, a server may choose to not send
> stateless resets to anyone when under attack.
>
>
>
>
>
> *From:* Martin Duke <martin.h.duke@gmail.com> <martin.h.duke@gmail.com>
> *Sent:* Friday, June 19, 2020 2:44 PM
>
> >Unfortunately, Retry system protects only server's memory state and some
> CPU cycles spent on crypto.  (Servers still need to decrypt CID to decide
> it is invalid, and if the attacker is clever enough to establish one valid
> connection and use that CID in a flood, the server will also be decrypting
> packets.)
>
>
>
> There is no need for servers to decrypt CIDs in QUIC-LB. Presumably the
> server has a lookup table for its CIDs.
>
>
>
> It is true that Retry Services (and indeed, the Retry concept as a whole)
> does nothing to protect network capacity.
>
>
>
> On Fri, Jun 19, 2020 at 8:08 AM Lubashev, Igor <ilubashe@akamai.com>
> wrote:
>
> It looks like
> https://tools.ietf.org/html/draft-ietf-quic-load-balancers-02#section-5
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__tools.ietf.org_html_draft-2Dietf-2Dquic-2Dload-2Dbalancers-2D02-23section-2D5&d=DwMFaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=Djn3bQ5uNJDPM_2skfL3rW1tzcIxyjUZdn_m55KPmlo&m=eTT-BoZ1fMitywKRVSxpU3js0lhO0qkspYTKljvj-ys&s=1x7AN2a51X_zV5xSyK0uCL8vZ5cugD3n4lbFWZDqVQg&e=>
> is an excellent discussion of Retry mechanics.  It definitely deserves a
> reference from this manageability draft.
>
>
>
> The Retry mechanisms described in LB draft are all cooperating boxes, and
> servers must be aware of them.  Unfortunately, Retry system protects only
> server's memory state and some CPU cycles spent on crypto.  (Servers still
> need to decrypt CID to decide it is invalid, and if the attacker is clever
> enough to establish one valid connection and use that CID in a flood, the
> server will also be decrypting packets.)  Retry does nothing to protect
> network resources.
>
>
>
> The PR I opened (https://github.com/quicwg/ops-drafts/pull/94
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_quicwg_ops-2Ddrafts_pull_94&d=DwMFaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=Djn3bQ5uNJDPM_2skfL3rW1tzcIxyjUZdn_m55KPmlo&m=eTT-BoZ1fMitywKRVSxpU3js0lhO0qkspYTKljvj-ys&s=VpvhQ9n79rANIk3O5Sm7PZyToFQEennoPt9iqFpWbq8&e=>)
> is about uncooperating devices that try to mitigate volumetric network
> attacks.
>
>
>
>
>
> *From:* Martin Duke <martin.h.duke@gmail.com>
> *Sent:* Wednesday, June 17, 2020 8:16 PM
>
> Hi Igor, you might want to check out the "Retry Services" bit of the
> QUIC-LB draft. This has something to do with the DDoS use case you discuss.
>
>
>
> On Wed, May 27, 2020 at 9:07 AM Lubashev, Igor <ilubashe@akamai.com>
> wrote:
>
> I’m working on a manageability draft PR for this (how to rate limit UDP to
> reduce disruption to QUIC if you have to rate limit UDP).  ETA end of the
> week (if I do not get pulled into something again).
>
>
>
> The relevant observation is that DDoS with UDP that is indistinguishable
> from QUIC will happen.  UDP is already the most prevalent DDoS vector,
> since it is easy for a compromised non-admin app to send a flood of huge
> UDP packets (with TCP you get throttled by the congestion controller).  So
> there WILL be DDoS protection devices out there to try to mitigate the
> problem, possibly by observing both directions of the flow and deciding
> whether a packet belongs to a valid flow or not.
>
>
>
> Since such middle boxes will be created, the more explicit and normative
> Invariants are about what one can expect, the less such middle boxes may
> decide for themselves.  For example (I did not think long about it), if
> some elements of path validation could land into Invariants (roughly, “no
> more than X packets/bytes can be sent on a new path w/o a return packet”),
> a DDoS middle box may use this fact and active connection migration might
> still have a chance during an attack (NAT rebinding could be linked by DDoS
> boxes to an old connection via unchanged CID).
>
>
>
>    - Igor
>
>
>
>
>
> *From:* Christian Huitema <huitema@huitema.net>
> *Sent:* Wednesday, May 27, 2020 11:34 AM
>
> On 5/27/2020 8:28 AM, Kyle Rose wrote:
>
> On Wed, May 27, 2020 at 10:34 AM Ian Swett <ianswett=
> 40google.com@dmarc.ietf.org> wrote:
>
> I was agreeing with MT, but I'm happy to see some more MUSTs added if
> people feel that'd be helpful.
>
>
>
> Coincidentally, we were just talking about this internally at Akamai
> yesterday. IMO, an invariants document isn't really helpful if it isn't
> normative, and for it to be normative it (or a related practices doc for
> operators) really needs to spell out clear boundaries for operators with
> MUSTs..
>
>
>
> The example that came up yesterday was around operators filtering QUIC in
> the event of a DDoS: one recommendation based on some conversations going
> back at least to Prague 2019 was to hash packets on 4-tuple and filter
> those below a hash value chosen for a desired ingress limit instead of
> doing what most operators do with UDP today, which is to cap UDP throughput
> and just drop packets randomly or tail drop.
>
> Interesting. Did they consider using the CID, or a fraction of it? This
> looks entirely like the scenario for which we developed stateless retry.
>
>
>
> This recommendation certainly imposes some constraints on future protocol
> development that motivate new invariants: for instance, it would preclude
> sharding a connection across multiple source ports (not that there is
> necessarily a reason to do this; it's just an example). But more
> importantly, it goes beyond invariants: it's one among many practices
> compatible with the current set of invariants, some reasonable and some
> terrible.
>
> This would break the "preferred address" redirection. Preferred address
> migration may or may not be spelled out in the invariants.
>
>
>
> Operators are going to do things to QUIC traffic, so it would be good to
> offer them recommendations that are compatible with broad deployability.
>
>
>
> Yes, we do need the invariants for that.
>
> -- Christian Huitema
>
>