Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HTTP/3] Developers can build libraries for HTTP/3 to meet their client/server needs #43546

Closed
12 of 28 tasks
samsp-msft opened this issue Oct 16, 2020 · 13 comments
Closed
12 of 28 tasks
Assignees
Labels
area-System.Net.Http Cost:XL Work that requires one engineer more than 4 weeks Priority:0 Work that we can't release without Team:Libraries User Story A single user-facing feature. Can be grouped under an epic.
Projects
Milestone

Comments

@samsp-msft
Copy link
Member

samsp-msft commented Oct 16, 2020

HTTP3 is the next major version of HTTP and the successor to HTTP2. It is in the final stages of standardization in the IETF. Some browsers (notably Chrome) already support draft versions of HTTP3. HTTP3 runs over QUIC, which replaces TCP as the underlying transport. QUIC is also in the final stages of standardization in the IETF. It provides secure, multiplexed streams over UDP. QUIC is a general-purpose, extensible transport protocol and we expect it to be used by other application protocols aside from HTTP3.

Work Items

  • A set of public classes for using the QUIC protocol on either client or server. This is System.Net.Quic. It is the equivalent of System.Net.Sockets for the QUIC protocol.
  • HTTP3 client support in HttpClient/SocketsHttpHandler.
  • Linux support
  • MacOS support

P0

P1

P2

We have already made some progress on this in .NET 5.0 and are delivering HTTP3 support in a “preview”, unsupported capacity. There is no public API for QUIC in .NET 5.0.

We intend to share as much HTTP3 code as is reasonably possible between the client and server implementation.

@samsp-msft samsp-msft added area-Meta User Story A single user-facing feature. Can be grouped under an epic. labels Oct 16, 2020
@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added the untriaged New issue has not been triaged by the area owner label Oct 16, 2020
@terrajobst terrajobst added this to Proposed in .NET 6.0 Oct 20, 2020
@scalablecory scalablecory moved this from Proposed to In progress in .NET 6.0 Oct 20, 2020
@cathysull cathysull added the Priority:1 Work that is critical for the release, but we could probably ship without label Oct 30, 2020
@terrajobst terrajobst added Priority:0 Work that we can't release without and removed Priority:1 Work that is critical for the release, but we could probably ship without labels Oct 30, 2020
@danmoseley
Copy link
Member

@scalablecory @geoffkizer @karelz as a P0 story, we need to get a t-shirt cost for this by 11/13.

I am assuming that includes the first two of the list above.

@Pilchie who will cost the third one -- the work on the Kestrel side?

@Pilchie
Copy link
Member

Pilchie commented Nov 3, 2020

I expect @jkotalik is the best person on our side.

@jkotalik jkotalik added the Cost:XL Work that requires one engineer more than 4 weeks label Nov 3, 2020
@jkotalik
Copy link
Contributor

jkotalik commented Nov 3, 2020

I marked this as XL (it's XL even for just the Kestrel work).

@danmoseley
Copy link
Member

Is there some reasonable way to break this into child items, @jkotalik ? (For example, one item per entry in the list above, or more)

@jkotalik
Copy link
Contributor

jkotalik commented Nov 3, 2020

We are tracking this in the aspnetcore repo as well: dotnet/aspnetcore#15271. I'd put it on the runtime folks to determine if/how the want to split it up.

@jkotalik
Copy link
Contributor

jkotalik commented Nov 3, 2020

I'd cost adding HTTP/3 to Kestrel at ~20 weeks for everything (including perf/stress tests, implementation, abstractions, etc.)

@danmoseley
Copy link
Member

Alright, I parented that under this. It's labeled Epic, but fine.

@scalablecory
Copy link
Contributor

I think 12 weeks is enough for QUIC (MsQuic implementation) and client-side H3. @geoffkizer how do you feel about that?

@geoffkizer
Copy link
Contributor

That seems a bit short to me.

I also think we should break out the MsQuic work vs the H3 work.

@danmoseley
Copy link
Member

@scalablecory (or @geoffkizer ) could you please open (or link) appropriate user stori(es) for our work, similar to how the Kestrel one is linked above? Just tag with "User Story". Then we have a place for our own cost.

@samsp-msft
Copy link
Member Author

@geoffkizer - Can we flush this out to sub issues?

@marek-safar marek-safar changed the title User Story: Support HTTP3 in .NET 6 User Story: Developers can build libraries for HTTP3 to meet their client/server needs Nov 27, 2020
@marek-safar marek-safar removed the untriaged New issue has not been triaged by the area owner label Nov 27, 2020
@karelz karelz changed the title User Story: Developers can build libraries for HTTP3 to meet their client/server needs Developers can build libraries for HTTP3 to meet their client/server needs Jan 12, 2021
@ghost
Copy link

ghost commented Jan 12, 2021

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

Issue Details

HTTP3 is the next major version of HTTP and the successor to HTTP2. It is in the final stages of standardization in the IETF. Some browsers (notably Chrome) already support draft versions of HTTP3. HTTP3 runs over QUIC, which replaces TCP as the underlying transport. QUIC is also in the final stages of standardization in the IETF. It provides secure, multiplexed streams over UDP. QUIC is a general-purpose, extensible transport protocol and we expect it to be used by other application protocols aside from HTTP3.

Work Items

  • A set of public classes for using the QUIC protocol on either client or server. This is System.Net.Quic. It is the equivalent of System.Net.Sockets for the QUIC protocol.
  • HTTP3 client support in HttpClient/SocketsHttpHandler.

We have already made some progress on this in .NET 5.0 and are delivering HTTP3 support in a “preview”, unsupported capacity. There is no public API for QUIC in .NET 5.0.

We intend to share as much HTTP3 code as is reasonably possible between the client and server implementation.

Author: samsp-msft
Assignees: geoffkizer, samsp-msft
Labels:

Cost:XL, Priority:0, Team:Libraries, User Story, area-System.Net.Http

Milestone: -

@karelz karelz added this to the 6.0.0 milestone Jan 12, 2021
@karelz karelz changed the title Developers can build libraries for HTTP3 to meet their client/server needs [HTTP/3] Developers can build libraries for HTTP/3 to meet their client/server needs Jul 1, 2021
@karelz
Copy link
Member

karelz commented Aug 17, 2021

6.0 work has been finished -- all features we wanted are in. HTTP/3 is opt-in Preview feature in 6.0.

We will keep working on HTTP/3 and QUIC (incl. public APIs) during .NET 7.0 timeframe. This is being tracked with #57600, #57601.
Closing.

@karelz karelz closed this as completed Aug 17, 2021
.NET 6.0 automation moved this from In Progress to Completed Aug 17, 2021
@dotnet dotnet locked as resolved and limited conversation to collaborators Sep 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-System.Net.Http Cost:XL Work that requires one engineer more than 4 weeks Priority:0 Work that we can't release without Team:Libraries User Story A single user-facing feature. Can be grouped under an epic.
Projects
.NET 6.0
  
Completed
Development

No branches or pull requests