chisel icon indicating copy to clipboard operation
chisel copied to clipboard

Add Support for HTTP/3 and WebTransport

Open lleyton opened this issue 1 year ago • 2 comments

As the title says. Still a work in progress, currently running into some weird QUIC/HTTP3 quirks which I'm having issues debugging. Besides that.. should almost be done.

Semi related to #375

lleyton avatar May 21 '23 13:05 lleyton

Thank you :) definitely will consider this - on mobile haven’t looked at all the code yet though few Qs though

  • how does the performance compare to the web socket transport? 1. Throughout? 2. With / without high packet loss? (I expect quic to perform better with a bad connection)
  • I’m wondering if it should listen on the given port on both tcp (websockets) and Udp (quic) by default - ignore Udp listen failures. And then a flag to choose either/both explicitly - where failures are not ignored.
  • I can it handle it on quic without the request path check? Makes it more transparent, and more friendly with the backend fallback flag

jpillora avatar May 22 '23 03:05 jpillora

Thanks! As for your questions:

  • I haven't run benchmarks yet, but I expect QUIC to perform better on flakier connections or where network congestion may be high.
  • Hmm, currently it will automatically listen on UDP (QUIC) if a TLS certificate is set, as QUIC requires that. I could definitely add a flag to set the option explicitly though.
  • I assume you're talking about the /wt handler? Hm, I could probably detect if it's a WebTransport connection by checking the headers. I could also check if the request came over UDP.

lleyton avatar May 27 '23 03:05 lleyton