1.Background
- Google is in control of future web protocol development, from SPDY that was eventually standardized as HTTP/2 to QUIC being standardized as HTTP/3.
- HTTP/2 cannot be seen sniffing with tcpdump because it’s encrypted with SSL. All the implementations of HTTP/2 actually use it over SSL, although the standard allows HTTP/2 run over TCP.
2.headline features
- QUIC doesn’t change HTTT/2 as much as change how the transport works.
Just focus on transport issues.
A. Latency
- QUIC reduces round-trips to set up connections more quickly while TCP sets up connection slowly when there is a lot of network delay.
B. Bandwidth
- Congestion will cause bandwidth limitation between source and destination. Bandwidth estimation means sending packets at a proper rate.
- HTTP/1 cannot estimate bandwidth when browsers open multi connections to web servers simultaneously because each tcp connection tries to work independently as if others don’t exist.
- HTTP/2 uses multiplexing features that can calculate one bandwidth limitation for multi interactions between browser/server. However, one interaction may block another.
- HTTP/3 extend multiplexing without any interaction blocking another.
3.Other features
A. User-mode stack performance issues
- One of TCP problems is performance issues caused by interaction between kernel and user mode. One of possible practical solutions is moving from Tcp to UDP that can achieve the same performance without user-mode driver.
- The key principle is recvmmsg() can receive a bunch of UDP packets at one time while the well-known function recv() can deal with one packet at once.
- BTW, RSS is the feature of network hardware that splits income packets into multi receive queues. QUIC take the advantages to let each core manage its own packets queue without the sharing problems.
B. Mobile support
- QUIC identify a connection with 64-bit ID instead of ip/port sets. So you can continue a video phone call when device ip changes
4.Influences for us
- We will use a higher level network programming API instead of the well-known transport layer API socket.That means programming to application layer(7) instead of transport layer(4) API.
- Google has driven us to application service elements that will handle communication(file/messages) in a standard way among different applications.
原文:https://blog.erratasec.com/2018/11/some-notes-about-http3.html#.W_juF5MzbOR