HTTP/3 is not working, not behind a firewall or restrictive DNS
Categories
(Core :: Networking: HTTP, defect, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox99 | --- | fixed |
People
(Reporter: u673061, Assigned: kershaw)
References
(Blocks 1 open bug)
Details
(Whiteboard: [necko-triaged])
Attachments
(2 files)
My firewall and network and ISP don't block QUIC/HTTP3 traffic and UDP port 443 outgoing is normal because I can use quiche to connect to those QUIC/HTTP3 supported servers
However, https://cloudflare-quic.com
is still showing that I am not using QUIC/HTTP/3
I have tried flipping the following prefs on and off
network.echconfig.enabled
network.dns.http3_echconfig.enabled
and adjusting network.dns.httpssvc.http3_fast_fallback_timeout
to much higher values, but it still is no use.
But surprising HTTP/3 or QUIC works intermittently when just starting up and first visits a website
How is this supposed to happen?
Interestingly on, another Android phone with Firefox Nightly installed on the same Wi-Fi network, HTTP/3 is working
Assignee | ||
Comment 2•3 years ago
|
||
Based on the log, I can see two reasons that prevent Firefox using HTTP/3 to connect.
Shift Reload
happened, in this case, Firefox clears allalt-svc
mappings. Without the mapping ofh3
andcloudflare-quic.com
, FIrefox can only use HTTP/2 to connect.
2022-02-22 22:04:16.759149 UTC - [Parent 7373: Socket Thread]: V/nsHttp nsHttpConnectionMgr::OnMsgDoShiftReloadConnectionCleanup
2022-02-22 22:04:16.759151 UTC - [Parent 7373: Socket Thread]: V/nsHttp ConnectionEntry::ClosePersistentConnections [ci=.S.......[tlsflags0x00000000]cloudflare-quic.com:443 <ROUTE-via cloudflare-quic.com:443> {NPN-TOKEN h3}^partitionKey=%28https%2Ccloudflare-quic.com%29]
- There is already a HTTP/2 connection to
cloudflare-quic.com
and we receivedalt-svc
response (alt-svc: h3=":443"
) fromcloudflare-quic.com
indicates that this site supports HTTP/3, so Firefox tries to create a speculative connection to verify HTTP/3. But, Firefox fails to create to this speculative connection since there is already an HTTP/2 connection.
2022-02-22 22:04:16.848008 UTC - [Parent 7373: Socket Thread]: V/nsHttp ConnectionEntry::RestrictConnections 144f7ec80 .S.......[tlsflags0x00000000]cloudflare-quic.com:443 <ROUTE-via cloudflare-quic.com:443> {NPN-TOKEN h3}^partitionKey=%28https%2Ccloudflare-quic.com%29 restricted due to active >=h2
2022-02-22 22:04:16.848009 UTC - [Parent 7373: Socket Thread]: V/nsHttp DoSpeculativeConnectionInternal Transport not created due to existing connection count:32
I think what we can improve is about the second reason above. We should allow Firefox to create a speculative connection to verify HTTP/3 even if there is already an available HTTP/2 connection.
Assignee | ||
Updated•3 years ago
|
Assignee | ||
Comment 3•3 years ago
•
|
||
It turns out that an AltSvcTransaction
supposes not to have NS_HTTP_ALLOW_KEEPALIVE flag. Looks like the purpose of this is to bypass the RestrictConnection check.
However, in the constructor of NullHTTPTransaction, NS_HTTP_ALLOW_KEEPALIVE
is set again.
I think we need to fix this.
Assignee | ||
Comment 4•3 years ago
|
||
With this patch, we'll skip the RestrictConnections
cehck when creating a speculative connection for Alt-svc validation.
Hmmm, in Chrome it is the complete opposite - even after Shift or Ctrl+F5 reload, HTTP/3 still works
Comment 7•3 years ago
|
||
bugherder |
Description
•