Subject: Significant milestone on HAProxy's H3/QUIC

From: Willy Tarreau <[email-masked]>
Date: Thu, 23 Sep 2021 17:30:22 +0200

Hi all,

I'm really glad to say that my coworkers Fred and Amaury are seeing
their long tireless work on H3+QUIC start to pay off. Today I was
pleased to see an H3 request from curl pass through HAProxy, being
forwarded to Apache in H2, and the H2 response being routed and
translated back to H3 so that curl could print it.

They would have preferred that I remain discrete about it given the
extremely fragile state of the current code, but I'm really glad as
the project's maintainer and I'm also glad from an interoperability
perspective, because the more implementations we see, the faster we'll
spot and fix bugs, so I was not going to keep that for me :-)

Of course our implementation still has many limitations and bugs, but I
know by experience that once requests and responses start to flow back
and forth, the development tremendously speeds up. I clearly don't
expect anything great for the 2.5 release due in 1.5 month but if it can
at least help us progress faster and help others test their code against
yet another server implementation, that will be great already (for now
the client code is disabled, there's enough work to do with the server
one :-)).

I've posted a screenshot of curl's and haproxy's debug outputs
side-by-side here for those interested:

   https://twitter.com/WillyTarreau/status/1441051288997924870

Obviously there's still a long way to go before it can be considered
production ready, but we're seeing some faint light at the end of this
long tunnel, it's pleasant :-)

Willy

---

From: Lucas Pardue <[email-masked]>
Date: Thu, 23 Sep 2021 17:02:43 +0100

Hey Willy,

Congrats to you and the team.

> spot and fix bugs, so I was not going to keep that for me :-)

In case you missed it, the QUIC interop runner (https://interop.seemann.io/)
supports
automated interop of lots of clients and servers. If you're familiar with
Docker, it isn't
too much work to set up an image for your implementation that can be used
to test
locally or get added to the interop runner itself. Instructions are here
[1]. You can tailor
test cases towards the bits you actively support and develop.

Cheers
Lucas

P.S. and as always hat-tip to Marten et al who help keep the interop
runner... running

[1] -
https://github.com/marten-seemann/quic-interop-runner/blob/master/README.md#building-a-quic-endpoint

---

From: Willy Tarreau <[email-masked]>
Date: Thu, 23 Sep 2021 18:09:32 +0200

Hi Lucas,

> Congrats to you and the team.

Thanks for them :-)

> In case you missed it, the QUIC interop runner (https://interop.seemann.io/)

Oh I completely forgot about it when it was shared a long time ago! Thanks
for the reminder (probably they already know about it and will have a great
laugh at me).

> test cases towards the bits you actively support and develop.

That's indeed something we should consider once we have something that
looks more robust. For now it's still limited to being used by haproxy
developers.

> P.S. and as always hat-tip to Marten et al who help keep the interop

Definitely! Such interop tests are crucial for any protocol and are very
hard to perform by each individual project's developers.

Cheers,
Willy