Tha patchset addresses the packet routing problem in current QUIC
implementation. The problem is how to route a QUIC datagram to the right nginx
worker. The simplest and currently available solution is to use SO_REUSEPORT
(SO_REUSEPORT_LB in FreeBSD) socket option, which allows to route a packet
# HG changeset patch
# User Roman Arutyunyan
# Date 1670322119 0
# Tue Dec 06 10:21:59 2022 +
# Branch quic
# Node ID 1038d7300c29eea02b47eac3f205e293b1e55f5b
# Parent b87a0dbc1150f415def5bc1e1f00d02b33519026
QUIC: ignore server address while looking up a connection.
The server connecti
# HG changeset patch
# User Roman Arutyunyan
# Date 1670428292 0
# Wed Dec 07 15:51:32 2022 +
# Branch quic
# Node ID 8a7f2c71db202141d169f3ab292027bfc16ff8ec
# Parent 1038d7300c29eea02b47eac3f205e293b1e55f5b
QUIC: handle datagrams directly in ngx_quic_recvmsg().
Previously, ngx_quic_re
# HG changeset patch
# User Roman Arutyunyan
# Date 1670509141 0
# Thu Dec 08 14:19:01 2022 +
# Branch quic
# Node ID 779035cf3e1c7886d06e5d5295943f425f4aac60
# Parent afbac4ba4c75023e10e68bae39df5b1a0fdbd17b
QUIC: client sockets.
In client sockets mode, a new socket is created for each
# HG changeset patch
# User Roman Arutyunyan
# Date 1670494771 0
# Thu Dec 08 10:19:31 2022 +
# Branch quic
# Node ID afbac4ba4c75023e10e68bae39df5b1a0fdbd17b
# Parent de8bcaea559d151f5945d0a2e06c61b56a26a52b
QUIC: eBPF worker sockets.
For each nginx worker, a worker socket is created.
# HG changeset patch
# User Roman Arutyunyan
# Date 1670428974 0
# Wed Dec 07 16:02:54 2022 +
# Branch quic
# Node ID b5c30f16ec8ba3ace2f58d77d294d9b355bf3267
# Parent 8a7f2c71db202141d169f3ab292027bfc16ff8ec
QUIC: eliminated timeout handling in listen connection read event.
The timeout
# HG changeset patch
# User Roman Arutyunyan
# Date 1670256830 0
# Mon Dec 05 16:13:50 2022 +
# Branch quic
# Node ID de8bcaea559d151f5945d0a2e06c61b56a26a52b
# Parent b5c30f16ec8ba3ace2f58d77d294d9b355bf3267
QUIC: never disable QUIC socket events.
Unlike TCP accept(), current QUIC impl