TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

QUIC and HTTP/3 Support Now in Firefox Nightly and Beta

502 pointsby cautionabout 4 years ago

16 comments

codetrotterabout 4 years ago
Is anyone else hyped about the possibility of tunneling traffic over QUIC?<p>Public networks in coffee shops and libraries that block outbound SSH and outbound Wireguard are the bane of my existence when I am traveling and I try to get some god damn work done.<p>With HTTP&#x2F;3 most public networks in coffee shops, libraries etc are eventually going to allow QUIC. This means UDP tunnels masquerading as QUIC traffic, as well as tunneling over QUIC itself, is probably going to work. Eventually.<p>I am cautiously optimistic :)
评论 #26839343 未加载
评论 #26839118 未加载
评论 #26839059 未加载
评论 #26838917 未加载
评论 #26839001 未加载
评论 #26841328 未加载
评论 #26839022 未加载
评论 #26838925 未加载
评论 #26841074 未加载
评论 #26839823 未加载
评论 #26839758 未加载
评论 #26838895 未加载
评论 #26839027 未加载
评论 #26839774 未加载
评论 #26838902 未加载
评论 #26842920 未加载
评论 #26838912 未加载
评论 #26839430 未加载
评论 #26846419 未加载
评论 #26839376 未加载
评论 #26841633 未加载
评论 #26868187 未加载
评论 #26853328 未加载
评论 #26841753 未加载
评论 #26856772 未加载
est31about 4 years ago
Btw, the QUIC library that Firefox relies on is written in Rust: <a href="https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;neqo" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;neqo</a><p>A bit weird though that they didn&#x27;t cooperate with existing Rust quic stacks like quinn. <a href="https:&#x2F;&#x2F;github.com&#x2F;quinn-rs&#x2F;quinn" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;quinn-rs&#x2F;quinn</a>
评论 #26843557 未加载
ivan4thabout 4 years ago
I have recently improved my rural multi-LTE setup by means of OpenMPTCPRouter [1]. MPTCP does a really great job at aggregating multiple paths for better throughput and reliability. Problem is, QUIC can’t do this, and while multipath QUIC exists [2], right now it’s more of a research project.<p>I’m afraid I’ll have to block UDP&#x2F;443 at some point to prevent browsers from downgrading to 1&#x2F;3 of available throughput...<p>[1] <a href="https:&#x2F;&#x2F;www.openmptcprouter.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.openmptcprouter.com&#x2F;</a> [2] <a href="https:&#x2F;&#x2F;multipath-quic.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;multipath-quic.org&#x2F;</a>
评论 #26840539 未加载
willhoyleabout 4 years ago
I spent the good part of last night compiling a previous version of nodejs to try out quic. I wanted to see if it could replace webrtc for a multiplayer game.<p>You have to compile a previous commit from the repo because the experimental implementation of quic was removed according to this issue: <a href="https:&#x2F;&#x2F;github.com&#x2F;nodejs&#x2F;node&#x2F;pull&#x2F;37067" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;nodejs&#x2F;node&#x2F;pull&#x2F;37067</a><p>Not sure when we can expect it to come back. You can just feel the pain in those comments. All that hard work.
评论 #26849041 未加载
newman314about 4 years ago
QUIC breaks Zscaler. See <a href="https:&#x2F;&#x2F;help.zscaler.com&#x2F;zia&#x2F;managing-quic-protocol" rel="nofollow">https:&#x2F;&#x2F;help.zscaler.com&#x2F;zia&#x2F;managing-quic-protocol</a> and Zscaler’s recommended solution.<p>I look forward to no longer using Zscaler once Infosec finally realizes this.
评论 #26849270 未加载
评论 #26849264 未加载
jeffrogersabout 4 years ago
Are the QUIC HTTP&#x2F;3 Connection Migration IDs an end run around limitations with cookies, ad blockers, MAC spoofing, and other forms of anti-tracking measures? My understanding is that these IDs survive network switching, sessions, etc.
评论 #26840955 未加载
enzabout 4 years ago
I use HTTP&#x2F;3 since a few releases ago. I had to set the &quot;network.http.http3.enabled&quot; to &quot;True&quot;. No issue so far (tested on a high-quality FTTH home connection and low-quality coax) with Google&#x27;s website (including YouTube) and some websites under Cloudflare HTTP&#x2F;3-ready CDN.<p>I use my own fork of the &quot;http-and-ip-indicator&quot; extension to know when HTTP&#x2F;3 is in use[1]. It shows an orange bolt when HTTP&#x2F;3 is in use for the top-level document.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;enzzc&#x2F;http-and-ip-indicator" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;enzzc&#x2F;http-and-ip-indicator</a> (Beware, I don&#x27;t maintain it actively)
Denatoniumabout 4 years ago
I&#x27;d be interested in knowing how QUIC deals with networks where an upstream link has a lower MTU than the LAN, and some intermediate routers are blocking ICMP.<p>With TCP, the router would be set up to clamp TCP MSS, but how&#x27;s this going to work with a UDP-based transport?
评论 #26839412 未加载
评论 #26839212 未加载
throwaway189262about 4 years ago
I&#x27;m not as excited about this as I was for HTTP&#x2F;2 . Every benchmark I&#x27;ve seen is &lt;5% performance improvement.<p>I&#x27;ve heard the difference is larger on cellular networks with packet loss but haven&#x27;t seen examples.<p>What we need more than HTTP&#x2F;3 is ESNI. Exposed server names are a real security risk.
评论 #26842207 未加载
mleonhardabout 4 years ago
I think HTTP&#x2F;2 and HTTP&#x2F;3 are unnecessarily complex and offer little benefit for most web users and websites.<p>We need our technology to be secure against criminals and spies. To accomplish that, we must reduce complexity. Moving from HTTP&#x2F;1.1 to HTTP&#x2F;3 adds a lot of complexity:<p>- TCP -&gt; UDP. Applications, proxies, and servers must implement complicated request stream processing logic. In TCP, this is handled by the OS kernel. The switch to UDP will bring many exploits and privacy leaks due to the huge amount of new code written for stream processing. Application performance will likely go down due to bugs and misconfiguration.<p>- Text -&gt; Protocol Buffers. Protocol buffer parsing requires a large amount of new code. Applications &amp; servers must either increase the complexity of their build systems by adding code generation or increase the complexity of their codebase by adding hand-coded parsing and serde (serializing &amp; deserializing). There are plenty of ways to achieve the precision of protobufs with text-based protocols. Even JSON would be better. Debugging protobuf-based applications is difficult, increasing the costs of deploying applications. These costs disproportionately affect startups and small organizations.<p>- Uniplex -&gt; Multiplex. With HTTP&#x2F;1.1, application servers are straightforward to code: read a request from the stream, process it, and write a response. With multi-plexing, servers must handle concurrent requests over a single stream. This is an order of magnitude increase in complexity. It affects all aspects of the server. There will be many exploits and privacy leaks due to bugs in this new concurrent request processing code. Many production systems are more difficult to implement for multiplex protocols: firewalls, monitoring, bandwidth controls, DoS mitigation, and logging. For Google, these are not new costs since they already use Stubby (gRPC) internally for everything. But for the rest of the world, especially startups and small organizations, the switch to multiplex adds huge development and operational complexity for negligible benefit.<p>I think we need a better text-based HTTP protocol. HTTP group is solving Google&#x27;s problems. We need it to solve our problems. Here&#x27;s what we should do:<p>- Remove the unused features from HTTP&#x2F;1.1. For example, multi-line headers.<p>- Eliminate ambiguity (and several classes of exploits):<p><pre><code> - Make header names case-sensitive. Define all well-known headers with lower-case names. - Forbid duplicate headers. - Forbid leading zeros and sign indicators on numeric fields. - Allow only lowercase hexadecimal. - Require content-type header and forbid user-agents from inferring content-type. </code></pre> - Make parsing simpler:<p><pre><code> - Make standard header values mandatory and move them to the request&#x2F;status line: content-length, content-encoding, content-type, transfer-encoding, and server name. - Put the target path on its own line, encoded in UTF-8. Remove percent-encoding. - Separate header names and values with a character that cannot occur in header names or values, like &#x27;\t&#x27;. - Use UTF-8 for header values. - Specify maximum sizes for request&#x2F;response (sans body), request&#x2F;status line, method name, content-type, server name, content-length field, target path, header key, header value, total header length, and number of headers. - Use only one transfer encoding: chunked. - Require content-length. Do not support uploads or responses of indeterminate length. - Represent numeric values (content-length, chunk-length) using one format, either decimal or hex. </code></pre> - Allow clients to detect tampering and corruption:<p><pre><code> - Replace &#x27;etag&#x27; header with a &#x27;digest-sha-256&#x27; header. - Add &#x27;checksum-xxhash&#x27; and &#x27;checksum-xxhash&#x27; headers for bodies and chunks. Pick an excellent hash function like xxHash. </code></pre> - Allow browsers to control authentication:<p><pre><code> - All connections are anonymous by default - Forbid the &quot;cookie&quot; header. Replace it with a single-valued auth token that is part of the request line. Or even better, use the client authentication protocol described below. Browsers can now add a &quot;log out&quot; button which switches back to anonymous mode. - Servers can request authentication (401). - Support password-less challenge &amp; response. This prevents phishing. It supports hardware tokens. - Add a way for browsers to enroll a new &quot;identity&quot; with the server. This could be stored on a hardware token or just software. The browser creates a new identity for each website the user logs into. When the user wants to log in to a site for the first time, they click the &quot;Login&quot; button next to the URL bar. The browser re-requests the page with the enrollment header. The server can either accept the new identity (2xx) or show a form asking for a security code. The server returns the form with a 4xx status so it can get the enrollment headers again. The &quot;Logout&quot; button appears next to the Login button. It switches back to anonymous mode for that site. - Remove HTTP Basic authentication (cleartext password). - Remove HTTP Digest authentication (passwords). </code></pre> - Replace TLS. It is mind-numbingly complex. Because of that, there are only a handful of implementations and most are buggy. TLS leaks private data. Replace it with three new protocols:<p><pre><code> - An unauthenticated privacy protocol. This does not protect against MITM. Signs every data block with session key. - Server authentication protocol. Client requests certificate by name. Server sends its certificate and signature of client-generated nonce. Every sent data block gets signed. Server sends another message with its certificate and signature of the privacy protocol session key and a nonce. Corporate MITM firewalls replace this message with their own certificate, which clients are configured to accept. - Client authentication protocol. Every sent data block gets signed. A browser can generate a new identity with a new key pair and send the public key to the server in the &#x27;enroll-rsa-2048&#x27; header. The server generates a certificate for the public key and returns it to the browser in the &#x27;certificate&#x27; header. The browser uses this certificate in the client authn protocol. - Do not support resuming sessions. - All three protocols get a new version every 3 months with updated lists of supported algorithms, parameters, and features. No &quot;extension&quot; data fields. Public internet hosts must support only the eight latest versions. This means that unmaintained software will stop working after 2 years. This will prevent many data thefts, ransomware attacks, malicious hacks, and Internet worms. - Encode certificates with human-readable JSON instead of ASN.1 DER. JER is not human-readable since it encodes DNS names in Base64. The ASN.1 format specification and DER encoding are unnecessarily complex. - Provide test servers and clients that exercise all of the edge cases of the algorithms and try known attacks.</code></pre>
评论 #26841224 未加载
评论 #26841435 未加载
评论 #26841949 未加载
评论 #26842879 未加载
评论 #26842228 未加载
yonrgabout 4 years ago
Isn&#x27;t syncthing using quic as one possible transport?
评论 #26844658 未加载
pmarreckabout 4 years ago
I’ve recently made Firefox Nightly my “main” browser. I’m quite impressed with it. Even imported my Chrome cookies AND logins
nextaccounticabout 4 years ago
does it use neqo? <a href="https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;neqo" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;mozilla&#x2F;neqo</a>
chrissnellabout 4 years ago
What server-side options do we have for QUIC?
评论 #26838931 未加载
评论 #26838928 未加载
评论 #26839413 未加载
评论 #26840262 未加载
评论 #26839450 未加载
评论 #26839754 未加载
评论 #26839161 未加载
评论 #26839319 未加载
Hard_Spaceabout 4 years ago
I wish this trend to start articles with &#x27;tl;dr&#x27; would stop. Opening with a summary paragraph predates the attention-deficit&#x2F;time-starved age by many years, and is not an innovation.
crypt0xabout 4 years ago
Does someone know if this includes the QuicTransport JS API?<p>Im still salty that Google scrapped the p2p mode from chrome, which could have been a nice alternative for webrtc, too.