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

[FEATURE REQUEST] HTTP/3 support #4760

Closed
pdiaz opened this issue Nov 19, 2019 · 51 comments
Closed

[FEATURE REQUEST] HTTP/3 support #4760

pdiaz opened this issue Nov 19, 2019 · 51 comments
Labels
kind/feature Categorizes issue or PR as related to a new feature. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. triage/accepted Indicates an issue or PR is ready to be actively worked on.

Comments

@pdiaz
Copy link

pdiaz commented Nov 19, 2019

Several companies are working on HTTP/3 support, including on NGINX.

What are the plans related to support this new and exciting protocol?

One first step would be to enable it with https://github.com/cloudflare/quiche/blob/master/extras/nginx/nginx-1.16.patch

@aledbf
Copy link
Member

aledbf commented Nov 19, 2019

@pdiaz we use the openresty distribution so this feature requires support from that project first. Someone already asked a similar question here openresty/openresty#556

@pdiaz
Copy link
Author

pdiaz commented Nov 22, 2019

The controller is currently build using openresty but seems that everything is contained on this repository. A first step would be to build nginx with the Cloudflare patch...

https://github.com/kubernetes/ingress-nginx/blob/master/images/nginx/rootfs/build.sh#L444

@aledbf
Copy link
Member

aledbf commented Nov 23, 2019

No, sorry. This must be present in openresty firsts. We cannot add this feature without the QA process they have to ensure nothing breaks.

That said, you can fork the repository and build and maintain the feature in your fork.

@pdiaz
Copy link
Author

pdiaz commented Nov 23, 2019

Sure I can fork it. It's also better to collaborate with other people instead of trying to make all this on my own. Is anyone interested in joining forces?

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Feb 21, 2020
@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Mar 22, 2020
@fejta-bot
Copy link

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot
Copy link
Contributor

@fejta-bot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ernst77
Copy link

ernst77 commented Mar 3, 2021

So no http3 support?

@iakat
Copy link

iakat commented Mar 17, 2021

/reopen

@k8s-ci-robot
Copy link
Contributor

@sim1: You can't reopen an issue/PR unless you authored it or you are a collaborator.

In response to this:

/reopen

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@pdiaz
Copy link
Author

pdiaz commented Mar 18, 2021

/reopen

@k8s-ci-robot
Copy link
Contributor

@pdiaz: Reopened this issue.

In response to this:

/reopen

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot reopened this Mar 18, 2021
@iakat
Copy link

iakat commented Mar 24, 2021

/remove-lifecycle rotten

@k8s-ci-robot k8s-ci-robot removed the lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. label Mar 24, 2021
@francescov1
Copy link

When can we expect HTTP3 to be supported? Is there any changes in configuration that will need to be made, or will it simply require upgrading versions?

@Kullu14
Copy link

Kullu14 commented Mar 30, 2021

I am also looking for HTTP3 support in openresty. Is it supported yet ?

@strongjz
Copy link
Member

/kind feature

@k8s-ci-robot k8s-ci-robot added the kind/feature Categorizes issue or PR as related to a new feature. label Apr 29, 2021
@k8s-triage-robot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 28, 2021
@pdiaz
Copy link
Author

pdiaz commented Jul 28, 2021

/remove-lifecycle stale

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 28, 2021
@unixfox
Copy link

unixfox commented Jul 28, 2021

/remove-lifecycle stale

@stalkerg
Copy link

stalkerg commented May 6, 2022

HTTP/3 has some issues with SSL implementations it's why difficult to add it into NGINX. Basically, the responsibility between SSL lib and HTTP server became is dramatically different because we should support UDP protocol QUIC.

@strongjz
Copy link
Member

strongjz commented Jul 2, 2022

/lifecycle frozen

@k8s-ci-robot k8s-ci-robot added the lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. label Jul 2, 2022
@henricook
Copy link

henricook commented Jul 20, 2022

How do you think this issue will be resolved across webservers as a whole, it sounds like it might be a problem for software other than NGINX that does a similar thing (e.g. Apache) if I'm understanding correctly?

TL;DR Please let me know what/where I can file my upvotes so that I can cover up my website's performance woes with the new, faster protocol

@cdobbyn
Copy link

cdobbyn commented Aug 15, 2022

Now that rfc9114 is published as a proposed standard theoretically webserver devs will probably be working on making this no longer experimental. Looks like traefik has it in experimental state for use with their ingress now, not that it helps ingress-nginx users.

@cdobbyn
Copy link

cdobbyn commented Aug 15, 2022

Looks like it saw quite a bit of iteration but not merged / released yet unless I'm reading that wrong.
https://hg.nginx.org/nginx-quic/graph/tip

@strongjz
Copy link
Member

We are in the middle of a stabilization project, working reducing chess, making release faster and prepping for the gateway api. Right now an experimental is counterintuitive to that.

We support it eventually but right it is not a priority.

@dockercore
Copy link

Expect to support http3.0 as soon as possible
2022年08月19日 星期五 14时53分28秒 -0.422328 秒

@clywm520
Copy link

clywm520 commented Apr 8, 2023

什么时候支持HTTP3.0呢 traefik已经支持HTTP3.0了

@clywm520
Copy link

clywm520 commented Apr 8, 2023

When will HTTP3.0 be supported? Traefik has already supported HTTP3.0.

@jkroepke
Copy link
Contributor

For all the people that ask, wenn HTTP/3 is available:

Subscribe

Once merged and released on Openresty, come back.

@clywm520
Copy link

nginx-1.25.0 已经支持http3.0.  nginx-ingress 什么时候支持呢

@tao12345666333
Copy link
Member

There is a new PR to upgrade OpenResty core to NGINX v1.25+.
openresty/openresty#920

@alextes
Copy link

alextes commented Aug 22, 2023

PR landed! 🎉 - openresty/openresty#920

What work remains to be done? Perhaps others could contribute the implementation (:

@anyidea
Copy link

anyidea commented Nov 24, 2023

any progress?

@tao12345666333
Copy link
Member

#10668

Upgraded NGINX to v1.25.3

@koehn
Copy link

koehn commented Feb 29, 2024

The current 1.10.0 release doesn’t seem to include http3 support:

nginx version: nginx/1.25.3
built by gcc 13.2.1 20231014 (Alpine 13.2.1_git20231014) 
built with OpenSSL 3.1.4 24 Oct 2023
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --modules-path=/etc/nginx/modules --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_gzip_static_module --with-http_sub_module --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-threads --with-http_secure_link_module --with-http_gunzip_module --without-mail_pop3_module --without-mail_smtp_module --without-mail_imap_module --without-http_uwsgi_module --without-http_scgi_module --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wno-deprecated-declarations -fno-strict-aliasing -D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -DTCP_FASTOPEN=23 -fPIC -Wno-cast-function-type' --with-ld-opt='-fPIE -fPIC -pie -Wl,-z,relro -Wl,-z,now' --user=www-data --group=www-data --add-module=/tmp/build/ngx_devel_kit --add-module=/tmp/build/set-misc-nginx-module --add-module=/tmp/build/headers-more-nginx-module --add-module=/tmp/build/ngx_http_substitutions_filter_module --add-module=/tmp/build/lua-nginx-module --add-module=/tmp/build/stream-lua-nginx-module --add-module=/tmp/build/lua-upstream-nginx-module --add-dynamic-module=/tmp/build/nginx-http-auth-digest --add-dynamic-module=/tmp/build/ModSecurity-nginx --add-dynamic-module=/tmp/build/ngx_http_geoip2_module --add-dynamic-module=/tmp/build/ngx_brotli

Also ngx_http_v3_module is not in /etc/nginx/modules. If you try turning on quic you get an error:

2024/02/29 14:59:29 [emerg] 347#347: the "quic" parameter requires ngx_http_v3_module in /etc/nginx/nginx.conf:288

This is probably a good thing, as nginx 1.25.4 fixes some http3-related security CVEs.

@zengyuxing007
Copy link
Contributor

Looking forward to Ingress support for HTTP/3.

@koehn
Copy link

koehn commented Apr 23, 2024

Recent(-ish) fixes to OpenResty allow it to be built with http3 support. Hopefully that will trickle down to ingress-nginx shortly.

@H0llyW00dzZ
Copy link

Any new progress ?

@Mmx233
Copy link
Contributor

Mmx233 commented Sep 12, 2024

Any new progress ?

According to nginx-1.25 readme, we will be close to the goal after the final release of OpenSSL 3.4.0. The OpenSSL final release is currently scheduled for 2024/10/14 according to OpenSSL 3.4.0 Project Schedule. It is worth celebrating that OpenSSL 3.4.0 alpha has been successfully released on schedule. I believe HTTP/3 will be usable in about one or two months.

@Mmx233
Copy link
Contributor

Mmx233 commented Oct 16, 2024

It seems like support for Quic Server is moved to OpenSSL 3.5.

See: openssl/project#52

@strongjz
Copy link
Member

Im go to close this as we wont want to add support for this as we are migrating to Ingate.

More discussion here https://www.youtube.com/watch?v=KLwsV6_DntA

@passcod
Copy link

passcod commented Nov 24, 2024

Uhhh can you clarify whether Ingate (also I can't find the ingate repo???) will have HTTP/3 support and please link the issue tracking that if it's not already implemented?

@strongjz
Copy link
Member

strongjz commented Nov 25, 2024

Uhhh can you clarify whether Ingate (also I can't find the ingate repo???) will have HTTP/3 support and please link the issue tracking that if it's not already implemented?

We'll have it on the 27th to start the implementation.

https://groups.google.com/g/kubernetes-sig-network/c/klXafeV2lPA/m/ZgLIW0n0BgAJ

Again, once openssl and nginx support, InGate should be able to. Whether it will be in ingress, gateway, or both, we will have to discuss it in the repo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

No branches or pull requests