On Sun, Jun 28, 2020 at 5:53 AM Graham Leggett <minf...@sharp.fm> wrote:

> On 27 Jun 2020, at 14:48, Luca Toscano <toscano.l...@gmail.com> wrote:
>
> > the challenges are the same one discussed in your previous email
> > thread (
> https://lists.apache.org/thread.html/eb086eafbd9309eb1efedac3bf3dcc410a95d06206c97e7ade01c254%40%3Cdev.httpd.apache.org%3E
> ).
> > I think that everybody would love to start working/helping on adding
> > HTTP/3 support but the work to be done is huge, involves invasive
> > changes to the httpd's source code and the current dev resources don't
> > have (rightfully) bandwidth to support the current codebase and plan a
> > major refactoring.
>
> I would be careful with wide reaching statements like this.
>
> I’ve been working on identifying and removing blockers in various parts of
> the httpd subsystems that prevent httpd to be cleanly event driven, and
> most of those blockers have been removed.
>
> The underlying architecture of httpd is very strong, and would support new
> protocols without too much trouble.
>
> The main point is that it must be done carefully and properly, but this is
> not a reason to not do it at all.
>

I didn't read anyone saying "don't do it", in fact all the communication
has said exactly the opposite.

Irrespective of getting the code into a state where true async behavior
"just works", and request handlers will have no problem with free threading
(this is not true of PHP and other third party modules), that still leaves
a huge hole.

Right now, we couple httpd <-> mod_ssl <-> mod_http2 <-> nghttp2 <-> httpd
filters and handler. This works, since the protocol layer exists apart from
the SSL stack.

What we are running up against at another project is the tight interconnect
between the ssl protocol implementation and the quic implementation. They
are almost insperable. You can't do this with mod_ssl out-of-the-box. There
are hacks of mod_ssl to enable the callbacks and sideways ingress points
which the quic transport protocol requires, but effectively it's a marriage
between Google's quiche and boringssl, or another quic implementation and
their elected ssl transport.

So it might be that mod_ssl almost entirely disappears in this scenario,
replaced by a triplet of httpd skin around one specific quic tightly
coupled to one specific tls provider.

The openssl project has published that following 3.0.0 GA, they are
devoting energies into implementing all of the hooks into openssl required
of a quic implementation (alongside building a FIPS crypto provider coupled
to 3.0.0.) These were simply things that current 3.0.0 release plan
couldn't accommodate, and they were further worried that the specifics of
the spec weren't sufficiently ironed out during their pre-alpha development
stage to commit to 10+ years of support for mangled API's.

Tatsuhiro himself has been contributing commits to
https://github.com/ngtcp2/nghttp3 although I have yet to read any specific
roadmap or plan on what direction he is taking his efforts. At $dayjob OSS
projects, it's largely been a matter of consuming his implementation of
nghttp2, while consuming boringssl+quic to get to http3 for the time being.

I don't think Luca's general guidance is off-base, nor that his cautions
are at all misplaced, and he has perhaps taken a fair assessment of the
complexity of this challenge.

Reply via email to