curl / Mailing Lists / curl-library / Single Mail

curl-library

Re: HTTP/3

From: Daniel Stenberg via curl-library <curl-library_at_cool.haxx.se>
Date: Sun, 9 Dec 2018 19:07:27 +0100 (CET)

On Sun, 9 Dec 2018, Vipin P R wrote:

> I want to start contributing to HTTP/3 development. This is my first open
> source project I am undertaking. Can u guide me on this, where to start.

Absolutely.

First: welcome and thanks for wanting to help out! This is still early days
with only the first stumbling attempts in place.

Then: clone the source tree and check out the development branch:

  https://github.com/curl/curl/tree/ngtcp2

The 'docs/HTTP3.md' file in there should document the status of the branch and
how to build it and test it. PR #3314 is also a good place if you want to
comment/discuss some h3 related details.

I've made the code build with both ngtcp2's master branch as well as the
draft-15 branch. It seems the draft-15 one is the more bleeding edge code.

Status:

I've worked the last week or so to get code added to make a first QUIC
connection when --http3-direct is used. See lib/quic.c and lib/quic-crypto.c.
I've based my code heavily on the ngtcp2 example code client.cc since there
aren't any actual documentation for ngtcp2 yet.

The branch builds and tests fine without ngtcp2, which is what I'm trying hard
to make sure. This way, we can merge this work early and only have it affect
the experimental builds that actually enable QUIC.

Next steps:

Start checking that we're using ngtcp2 correctly and add logic to libcurl to
make sure that QUIC connection is made to work (primarily against ngtcp2's own
test server).

This is pretty tricky work since ngtcp2's API is very QUIC/TLS-centric and
will probably require some insights in the protocols to fully grasp, and of
course comparing with what the client.cc code does in the comparable scenario.
I might also ask Tatsuhiro (lead dev of ngtcp2) to give it a look and perhaps
help us out a bit once that's deemed suitable.

Since nghq still isn't doing HTTP/3 (and neither is ngtcp2), there's also the
question how we should proceed and work on HTTP/3 support once we get the QUIC
connection worked out. There's clearly a few missing pieces here that we need
to join in and help make happen, but I'm not currently sure what the best
steps are to do this.

If you have any questions or feedback, take them here or in the PR!

-- 
  / daniel.haxx.se
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html
Received on 2018-12-09