Live data from Hacker News

Comparing HTTP/3 vs. HTTP/2 Performance

blog.cloudflare.com

71–80 of 84 posts

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#71
post #2

> With HTTP/2, any interruption (packet loss) in the TCP connection blocks all streams (Head of line blocking). This issue is really noticeable on my crappy home mobile internet when loading web pages, in combination with the timeout being absurdly long for reasons I don't understand.

So why are we doing DNS over HTTP?

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#72
post #28

So, as far as the results: In their synthetic benchmarks, they find negligible to no improvement: > For a small test page of 15KB, HTTP/3 takes an average of 443ms to load compared to 458ms for HTTP/2. However, once we increase the page size to 1MB that advantage disappears: HTTP/3 is just slightly slower than HTTP/2 on our network today, taking 2.33s to load versus 2.30s And in their closer to real world benchmarks,…

There's something else, performance aside, that's really exciting about HTTP/3: Fixing a decades old layering violation that has made truly mobile internet impossible. In TCP, a connection is uniquely identified by the following tuple: (src ip, src port, dst ip, dst port) The issue is that we depend not only on layer 4 details (port numbers) but also on layer 3 information (IP addresses). This means we can not ever k…

> This means we can not ever keep a connection alive when moving from one network and hence IP address into another.

One of the things I was looking forward to from IPv6 was the mobility of IPs [1].

[1] - https://en.wikipedia.org/wiki/Mobile_IP#Changes_in_IPv6_for_...

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#73
I'm curious as to how good the bandwidth estimation is. That's something that can certainly be improved from TCP, but it's also something that has a lot of corner cases and is not usually done super well in UDP protocols (e.g. WebRTC)

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#74
post #48
post #28

Earlier quoted context omitted.

There's something else, performance aside, that's really exciting about HTTP/3: Fixing a decades old layering violation that has made truly mobile internet impossible. In TCP, a connection is uniquely identified by the following tuple: (src ip, src port, dst ip, dst port) The issue is that we depend not only on layer 4 details (port numbers) but also on layer 3 information (IP addresses). This means we can not ever k…

Part of me consider HTTP/3 as an application protocol and disagree with this. This is not a problem for HTTP to solve but a problem for the routing protocol to solve. Is it desirable to reinvent a routing protocol at the application layer, so that we can use it as another transport protocol and so on? Shouldn't we be using a single, unique 128bit address for every device regardless of which physical network it is att…

Yes, this shouldn't be done at the application layer. This is why it's done in QUIC, which is layer 4.5-ish. HTTP/3 runs on top of that.

The "flat address space" idea however is completely ridiculous. That would mean every node on the internet keeping track of the path to every singe other node. This is what ethernet does and it barely scales to ten or so thousand nodes. Routers are already struggling hard with the 700k table entries we have for the IPv4 internet. To the point where providers actually wrap IP packets inside of simpler protocols once they enter the network.

We need some kind of hierarchical addressing that expresses the location of a node in the network. We know this works. We just need the layers above not to rely on those addresses staying constant.

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#75
post #72
post #28

Earlier quoted context omitted.

There's something else, performance aside, that's really exciting about HTTP/3: Fixing a decades old layering violation that has made truly mobile internet impossible. In TCP, a connection is uniquely identified by the following tuple: (src ip, src port, dst ip, dst port) The issue is that we depend not only on layer 4 details (port numbers) but also on layer 3 information (IP addresses). This means we can not ever k…

> This means we can not ever keep a connection alive when moving from one network and hence IP address into another. One of the things I was looking forward to from IPv6 was the mobility of IPs [1]. [1] - https://en.wikipedia.org/wiki/Mobile_IP#Changes_in_IPv6_for_...

I think the idea of mobile IP is fundamentally flawed and I'm not surprised it didn't catch on. The whole point of IP addresses is to be a hierarchical address describing a location in the network. Once you can move IPs, they become completely meaningless. Mobile IP proposals just hack around this by running everything through a glorified VPN.

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#76
post #52
post #48

Earlier quoted context omitted.

Part of me consider HTTP/3 as an application protocol and disagree with this. This is not a problem for HTTP to solve but a problem for the routing protocol to solve. Is it desirable to reinvent a routing protocol at the application layer, so that we can use it as another transport protocol and so on? Shouldn't we be using a single, unique 128bit address for every device regardless of which physical network it is att…

Each Ethernet interface has a unique address; using them is widely regarded as a privacy violation.

That can be solved, but more importantly, Ethernet can not scale beyond 10k or so nodes because the addresses are meaningless and there's no way to tell what the next hop for an address you've never seen before should be beyond just sending it everywhere and hoping for the best. There's also no way to prevent spoofing, which would be a huge nuisance.

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#77
post #41

Earlier quoted context omitted.

There’s also Multipath TCP that intends to solve that problem.

SCTP gets closer to it with multi-homing.

Still incredibly disappointed this didn't catch on widely before NAT prevented any new protocols. There'd be so many problems we wouldn't have today.

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#78
post #2

> With HTTP/2, any interruption (packet loss) in the TCP connection blocks all streams (Head of line blocking). This issue is really noticeable on my crappy home mobile internet when loading web pages, in combination with the timeout being absurdly long for reasons I don't understand.

This is a major set back introduced with HTTP/2 and I'm not sure why this is not mentioned often. Under firefox you can set "network.http.sdpy.enable" to false to switch back to HTTP/1. The improvement I have with HTTP2 is hardly noticeable, but HOL blocking is very tangible as soon as you have occasional random packet loss.

> Under firefox you can set "network.http.sdpy.enable" to false to switch back to HTTP/1.

Thanks! I might have to try that out, currently relegated to tunneling everything over sshuttle which of course makes things slower but reliable since it decompiles the TCP packets making them appear to work flawlessly to HTTP... HTTP1 may be a faster solution.

[edit]

Trying this now. Correction on parent comment for Firefox:

  goto:
  about:config

  search:
  network.http.spdy.enabled.http2

Re: Comparing HTTP/3 vs. HTTP/2 Performance

#80
post #77

Earlier quoted context omitted.

SCTP gets closer to it with multi-homing.

Still incredibly disappointed this didn't catch on widely before NAT prevented any new protocols. There'd be so many problems we wouldn't have today.

I tend to say the OSI model got it wrong because TCP should live on top of TCP and use its mechanism for ports. That also would have made it easier to launch new protocols with connection and reliability semantics.
Post reply on HN