Live data from Hacker News

Some notes about HTTP/3

blog.erratasec.com

161–170 of 181 posts

Re: Some notes about HTTP/3

#161

Earlier quoted context omitted.

I don't know much about this, so do you mind elaborating? Wouldn't userspace implementations be safer and easier to update as we spend the next few years sussing out security and performance issues?

IDK about "safer", but they will be more numerous and harder to update. (It's not as simple as making sure your kernel is up-to-date.)

I am evidently wrong about something, but I'm not sure what.

Re: Some notes about HTTP/3

#162
post #72
post #63

Is it me or does this part make no sense > But moving from TCP to UDP can get you much the same performance without usermode drivers. Instead of calling the well-known recv() function to receive a single packet at a time, you can call recvmmsg() to receive a bunch of UDP packets at once. TCP is a streaming protocol, there are no datagrams to read one at a time. Nothing stops you from reading the entire kernel buffer…

HTTP requests are small, and a read() call only gets you the data from a single connection, so you get one to few packet(s) worth of data per syscall. In contrast, recvmmsg can get you a large bunch of packets across all "connections" in a single syscall.

TCP is not only used for HTTP

Re: Some notes about HTTP/3

#163
post #80
post #65

I hope we get in-kernel implementations of QUIC at some point because having to find a portable third-party library for userspace sounds about as appealing as installing Winsock on Windows 95.

But the whole point of QUIC is that it is a userspace implementation. From the QUIC viewpoint (and I take no sides in this) kernel implementation is death for a protocol because it freezes its specification and behaviour in slow-to-update systems. This is why they found they couldn't "just improve TCP".

That is called a standard. You want it to settle down.

Re: Some notes about HTTP/3

#164
post #147

Earlier quoted context omitted.

Under the hood, what's happening is that the physical layer is reporting that a packet failed to decode, and the link layer is attempting retransmission at a series of lower and lower fallback rates. It's designed this way because if it fails to deliver a packet, TCP will freak out. There's an RFC about the general case of designing link layers to hide random losses: https://tools.ietf.org/html/rfc3366

Packet loss is an essential part of TCP to determine max. throughput.

Not with BBR.

Re: Some notes about HTTP/3

#165
post #49

Not sure I understand it very well, but that mean http3 is going to use UDP, but does that mean there is going to be a new TCP named TCP/2?

> but that mean http3 is going to use UDP

Yes.

> there is going to be a new TCP named TCP/2

No.

There is a new protocol called QUIC, which runs on top of UDP. That is, to routers/firewalls/middleboxes etc. that are not specifically aware of QUIC, it will just look like UDP traffic.

QUIC provides TCP-like features (reliable streams, with retransmissions of dropped packets etc.) plus more. As to why QUIC instead of improving TCP; experience has suggested that TCP has essentially become ossified, meaning that middleboxes will drop TCP packets using new features (see e.g. ECN). Thus in QUIC there's a focus on ossification-resistance (mandatory encryption, and as little information as possible exposed outside the encryption, etc.).

HTTP3 runs on top of QUIC (which runs on top of UDP). Hopefully that makes it clearer.

Re: Some notes about HTTP/3

#166
post #87

Earlier quoted context omitted.

Eagerly waiting for you to start sending patches for every system, including proprietary and unmaintained ones, and ensuring that those get included by default.

Why would he start sending patches for them? He already benefits from BBR himself. He doesn’t need to lift everyone else to enjoy the benefits, unlike the IPv4 to IPv6 transition.

And I benefit from driving on the sidewalk, why should I have to care how my car interacts with those tcp-using pedestrians?

If you break TCP, and your answer is that "we'd be ok if every system switched to it", then you'd better start working on switching every system.

Re: Some notes about HTTP/3

#167
post #135

Earlier quoted context omitted.

Yes, http.sys is an http server implemented in the Windows Kernel it’s the http server IIS and all other http based windows services use and has an API for 3rd party servers. https://docs.microsoft.com/en-us/iis/get-started/introductio... The point being that there are advantages to implementing a kernel or hybrid mode HTTP server and Microsoft has done it on Windows some other implementations exist but other than MF…

The history of IIS vulnerabilities with in kernel execution and the time it takes to get comprehensive patching seem like pretty substantial disadvantages.

I don’t necessarily disagree that there are disadvantages as well that said I got by far more often root on boxes due to core server or application level vulns on Linux machines than system on Windows boxes through an IIS vuln (app vulns are still a problem as well as running your worker services as privileged users but that isn’t related to http.sys) since those are more often than not patched.

Re: Some notes about HTTP/3

#168
Is there much hope of this leading to us being able to set up QUIC transport connections (ie without HTTP) in the browser? This could be huge for browser games and other low latency apps.

WebRTC is powerful but seems to be limited by not having a good portable server implementation, due to complexity.

Re: Some notes about HTTP/3

#169
post #80
post #65

I hope we get in-kernel implementations of QUIC at some point because having to find a portable third-party library for userspace sounds about as appealing as installing Winsock on Windows 95.

But the whole point of QUIC is that it is a userspace implementation. From the QUIC viewpoint (and I take no sides in this) kernel implementation is death for a protocol because it freezes its specification and behaviour in slow-to-update systems. This is why they found they couldn't "just improve TCP".

> kernel implementation is death for a protocol because it freezes its specification and behaviour in slow-to-update systems

Maybe that’s a matter of opinion, but I consider that to be a feature.

I want protocols to remain stable, and not be subject to whatever whims-of-the-month the fruity people at Google LLC comes up with.

Re: Some notes about HTTP/3

#170
post #162
post #72

Earlier quoted context omitted.

HTTP requests are small, and a read() call only gets you the data from a single connection, so you get one to few packet(s) worth of data per syscall. In contrast, recvmmsg can get you a large bunch of packets across all "connections" in a single syscall.

TCP is not only used for HTTP

[deleted]
Post reply on HN