Re: Expected Client Response to SERVER_BUSY

Ian Swett <ianswett@google.com> Wed, 20 February 2019 13:34 UTC

Return-Path: <ianswett@google.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 706401286E7 for <quic@ietfa.amsl.com>; Wed, 20 Feb 2019 05:34:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.501
X-Spam-Level:
X-Spam-Status: No, score=-17.501 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 8k35xjcFhqkr for <quic@ietfa.amsl.com>; Wed, 20 Feb 2019 05:34:32 -0800 (PST)
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) (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 B6B6A124408 for <quic@ietf.org>; Wed, 20 Feb 2019 05:34:31 -0800 (PST)
Received: by mail-wr1-x42f.google.com with SMTP id r5so12621698wrg.9 for <quic@ietf.org>; Wed, 20 Feb 2019 05:34:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=VAKrr0fGAiCTO4ik8HPLiPbuQ1MElRv2Gq/dJs0giLQ=; b=ohh3+HSdWglBNO1MhgjTCnls1ieeyy0pg9MfxkR6MBubLlY/gD0tQMocdEn1QJ6FiC FyUPQw51n20y8nX3kF6KsA5VGDusCaB+acZwCIvGVtt5qZbGq/QjP7tUqgaE/dGS15UT A05q8dFwBiLVkm8Lk8hcmQ0PWFsoom6i+L4b//4+LOqPJwwURI30fsnELYMEExe9XxMH raN2xlU54+X0ES3Sq6bSU/GIfsN8wyafQJnH+2Bw8qJPFe2E8HjIJZC91GG6vB8nzyUC YigQyvg8wFuYE63qOIYVUrgwGoEMjtF+8nRbzuryzqGLtZ854Bv+A1h5xc36Esa1QCg7 iKnA==
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=VAKrr0fGAiCTO4ik8HPLiPbuQ1MElRv2Gq/dJs0giLQ=; b=cABN/mri27ivmGqToeW+U6qQVm8Radof4AclascXxrJr9BFbruSU6ZI4gS731Y7fhd YwxRdsrashK2jQEEL3N7kmyffiKiFwLt20qZffE19H1afOraRweeen0M1WEbSqTFFKiD G1egOnGh8Ylv4dfzPQpLJ4pqi8ZSFW192IvFS5iTjore++hPzE2yaaQ09n46MrXjDvxQ XaI0L7wluMPmuGuRvXCengAB27DggmCI74P+bQqwuZEjFESmejY3J2JhgBJtsHjS3KLQ 4ICCWytp2Eft2KVNAzic1m4WqXehygCfO7y3NjSepdmYGKTp3e8eBr656qHMZRmibWyO cGmA==
X-Gm-Message-State: AHQUAubaQoZCj1r9myTJe+8kN7/z5t+0Nd405pGTfjaRMy+P9qT1VfJO 3Onn21HlUN8YVjkeKs7Obn3YFOsSI3anbsuPsqs7924e3AU+/Q==
X-Google-Smtp-Source: AHgI3IaHq8YB1o1WiIqWRwkZnR0KAG06uvzTErWZN7yosoPUgBy7w5InsS0cbMvceFGacRN1eltrM9f/O26RGClP2MM=
X-Received: by 2002:adf:eb84:: with SMTP id t4mr11403832wrn.100.1550669669804; Wed, 20 Feb 2019 05:34:29 -0800 (PST)
MIME-Version: 1.0
References: <CY4PR21MB0854341128C64E450E7C2DA2B37C0@CY4PR21MB0854.namprd21.prod.outlook.com>
In-Reply-To: <CY4PR21MB0854341128C64E450E7C2DA2B37C0@CY4PR21MB0854.namprd21.prod.outlook.com>
From: Ian Swett <ianswett@google.com>
Date: Wed, 20 Feb 2019 08:34:17 -0500
Message-ID: <CAKcm_gPmQiMhzfXnkEB4u+X+84bCbL8FE3Lj3ZdPPQBBu+4uPg@mail.gmail.com>
Subject: Re: Expected Client Response to SERVER_BUSY
To: Nick Banks <nibanks=40microsoft.com@dmarc.ietf.org>
Cc: IETF QUIC WG <quic@ietf.org>, Mirja Kühlewind <mirja.kuehlewind@tik.ee.ethz.ch>
Content-Type: multipart/alternative; boundary="000000000000d5b89e0582536a12"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/TSYWdBQFQSG5FF8uaXYJoQ6kqXc>
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: Wed, 20 Feb 2019 13:34:35 -0000

For HTTP/3, my intent was to close the connection immediately with a
connection close as you suggest, then the client would fall back to TCP,
and then ensure the next Alt-Svc advertisement via TCP cleared any existing
Alt-Svc entry so QUIC wasn't tried again in the immediate future.

I hadn't thought of assigning semantics to a specific error code, but I'm
reluctant to do so.  In our case, I think a more likely error code would
indicate the infrastructure doesn't support QUIC, rather than DDoS, but the
desired behavior of falling back to TCP and not attempting QUIC for a while
is the same.

The assumption I made above is that the client immediately falls back to
TCP.  That of course depends upon the type of client it is.  I'd expect a
browser to fall back, but I wouldn't expect curl or wget to.

There is a decent amount of text on fallback in the Applicability draft:
https://github.com/quicwg/ops-drafts/blob/master/draft-ietf-quic-applicability.md



On Tue, Feb 19, 2019 at 5:11 PM Nick Banks <nibanks=
40microsoft.com@dmarc.ietf.org> wrote:

> Hello Folks,
>
>
>
> I’ve been looking at interim DDoS mitigation strategies for QUIC until we
> can have a more complete and QUIC aware DDoS and LB solution. One thing I
> came up with is just trying to force the client to fallback to TCP.
> Eventually, we will use Stateless Retry but that still requires a good bit
> of design work and cooperation between the offload device and the backend
> server. Until that is complete, a simple solution could be a device in path
> just responding to new QUIC connection attempts (while an attack is in
> progress) with a connection close frame containing the SERVER_BUSY error.
> The logic to implement a simple device to do that should be quite trivial.
>
>
>
> To that end, I was trying to figure out what the expected client response
> to any immediate (in the first RTT) connection close packets/frames would
> be and it seems we don’t have anything in the spec. What about SERVER_BUSY
> specifically? Is the client supposed to retry a new connection attempt?
> Should they fallback to TCP immediately? Should we say anything in the spec?
>
>
>
> Thanks,
>
> - Nick
>