Re: UDP source ports for HTTP/3 and QUIC

Toerless Eckert <tte@cs.fau.de> Fri, 16 July 2021 21:53 UTC

Return-Path: <eckert@i4.informatik.uni-erlangen.de>
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 56BCF3A0C46 for <quic@ietfa.amsl.com>; Fri, 16 Jul 2021 14:53:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.118
X-Spam-Level:
X-Spam-Status: No, score=-1.118 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779] autolearn=no 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 5LwEfePxMFBc for <quic@ietfa.amsl.com>; Fri, 16 Jul 2021 14:53:18 -0700 (PDT)
Received: from faui40.informatik.uni-erlangen.de (faui40.informatik.uni-erlangen.de [IPv6:2001:638:a000:4134::ffff:40]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 025833A0C45 for <quic@ietf.org>; Fri, 16 Jul 2021 14:53:17 -0700 (PDT)
Received: from faui48e.informatik.uni-erlangen.de (faui48e.informatik.uni-erlangen.de [131.188.34.51]) by faui40.informatik.uni-erlangen.de (Postfix) with ESMTP id 4F36354804C; Fri, 16 Jul 2021 23:53:11 +0200 (CEST)
Received: by faui48e.informatik.uni-erlangen.de (Postfix, from userid 10463) id 42A734E7A72; Fri, 16 Jul 2021 23:53:11 +0200 (CEST)
Date: Fri, 16 Jul 2021 23:53:11 +0200
From: Toerless Eckert <tte@cs.fau.de>
To: Willy Tarreau <w@1wt.eu>
Cc: 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: <20210716215311.GP24216@faui48e.informatik.uni-erlangen.de>
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>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <20210716060644.GA3469@1wt.eu>
User-Agent: Mutt/1.10.1 (2018-07-13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/A8qHDRstd1Yaln0Tz7ONrgYwnKM>
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 21:53:20 -0000

On Fri, Jul 16, 2021 at 08:06:44AM +0200, Willy Tarreau wrote:
> > Unless scale is a problem its somewhat hard to say whats better or worse.
> 
> 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.

That would be an example getting more resources on a load-balanced
server farm when you use multiple 5-tuple flows to the same
(cluster) server by reson of client UDP port. 

The same (more/different) resource allocation could also occur for
network bandwidth along the path when there is any type of per-flow
traffic operation, even if heuristically, such as attempts for
bandwidth fairness. Or even alternative paths choosen when there
is 5-tuple load-spliting along the path.

We have been around this block pre-HTTP2.0, using multiple
sockets to increase performance. But any HTTP2.0 fixes did
not change the network or server-farm aspects.

> > Using separate sockets/port-numbers even within a sinle app allows
> > to distinguish the connections easier with the usual suspsects such
> > as per-socket kernel diagnostics, network tools such a IPfix or the
> > like.
> 
> Sure, but at the application level it does require to check the
> connection ID anyway.

This again would be on the network side.

Cheers
    Toerless

> > If i where to implement a stack for clients i'd certainly
> > wanted to offer the option of whether to allocate separate sockets
> > (source ports) per connection or not - and see what users do with it.
> 
> Yep, at least as a debug option to help with captures or to trace
> file descriptors activities.
> 
> Willy