Re: UDP source ports for HTTP/3 and QUIC

Willy Tarreau <w@1wt.eu> Fri, 16 July 2021 07:17 UTC

Return-Path: <w@1wt.eu>
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 63D183A2A66 for <quic@ietfa.amsl.com>; Fri, 16 Jul 2021 00:17:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-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 yzI_bL9JH10g for <quic@ietfa.amsl.com>; Fri, 16 Jul 2021 00:17:17 -0700 (PDT)
Received: from 1wt.eu (wtarreau.pck.nerim.net [62.212.114.60]) by ietfa.amsl.com (Postfix) with ESMTP id 5BE873A2A65 for <quic@ietf.org>; Fri, 16 Jul 2021 00:16:56 -0700 (PDT)
Received: (from willy@localhost) by pcw.home.local (8.15.2/8.15.2/Submit) id 16G7GeB4003933; Fri, 16 Jul 2021 09:16:40 +0200
Date: Fri, 16 Jul 2021 09:16:40 +0200
From: Willy Tarreau <w@1wt.eu>
To: Poul-Henning Kamp <phk@phk.freebsd.dk>
Cc: Toerless Eckert <tte@cs.fau.de>, Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>, Mark Nottingham <mnot@mnot.net>, IETF QUIC WG <quic@ietf.org>, HTTP Working Group <ietf-http-wg@w3.org>
Subject: Re: UDP source ports for HTTP/3 and QUIC
Message-ID: <20210716071640.GB3469@1wt.eu>
References: <3985895D-D420-4995-831E-332E33693B79@mnot.net> <6F79A78A-1DF8-4A48-9B7F-334B309C9C26@gmail.com> <20210715092937.GC27830@1wt.eu> <20210716014010.GL24216@faui48e.informatik.uni-erlangen.de> <20210716060644.GA3469@1wt.eu> <202107160634.16G6YWat014024@critter.freebsd.dk>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <202107160634.16G6YWat014024@critter.freebsd.dk>
User-Agent: Mutt/1.10.1 (2018-07-13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/isW3Z1DLubDRU33W3Acpje-SfmQ>
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, 16 Jul 2021 07:17:20 -0000

On Fri, Jul 16, 2021 at 06:34:32AM +0000, Poul-Henning Kamp wrote:
> --------
> Willy Tarreau writes:
> 
> > Stefan made a good point about the problem that might result, with
> > inbound load balancing between multiple listeners (typically what's
> > achieved by L3 switches doing L3+L4 hash between multiple servers,
> > and operating systems hashing the source+destination port to pick a
> > different listening socket). Thus a suggestion might be to possibly
> > save resources by using a small amount of sockets, with "small" left
> > to the appreciation of the implementation.
> 
> We should run the question "few or many UDP ports?" past some some
> friendly 100G and 400G device driver maintainers.
> 
> The NICs I have been working with for the ESO ELT project all
> included UDP ports in the hash they used to decide which CPU core
> to deliver packets/interrupts to and we had to spread across UDP
> ports to or all the traffic would hit one single core.
> 
> I dont know if QUIC has registered with the NIC designers and device
> drivers writers yet, but given the opacity of QUIC packets, it is
> very hard to see what else than the UDP port they can feed into
> their hash, so I expect the answer to be "many".

That's true but queues are not the only parameter, as using many
sockets also results in a massive cache miss ratio and many more
syscalls. Even with TCP it's quite visible that using a few hundred
connections tends to be incredibly more efficient at 100Gbps than
using tens of thousands.

Ideally we want all queues to be used with a good balance while
limiting the amount of operations to transport these data.

Probably that some wording evocating that possibility offered by
the protocol and a suggestion to take various factors into account
(L4 LB, NIC queues, listeners, syscalls etc) is sufficient to let
implementors ask the relevant people for advice in their context.

Willy