igrigorik/hpbn.co

Forum to ask questions

hickford opened this issue · 3 comments

Hi. Is this a suitable forum to ask questions about the book content? If not, can you suggest anywhere that might be tolerant of stupid questions about networking?

A question about HTTP2 flow control

The book describes HTTP2 flow control https://hpbn.co/http2/#flow-control and explains it is 'hop by hop' in some way:

Flow control is hop-by-hop, not end-to-end. That is, an intermediary can use it to control resource use and implement resource allocation mechanisms based on own criteria and heuristics.

What kind of hops are these? If they're IP hops (as shown by traceroute), how is it possible for intermediaries to interact with HTTP2 flow control? As I understand, the HTTP2 connection and SETTINGS frame and are application layer. Given HTTP2 is usually layered over a TLS session, surely the SETTINGS frame is invisible to intermediaries?

What have I missed?

This is a good place to ask. For now, at least! Re, your question... from the spec:

Both types of flow control are hop by hop, that is, only between the two endpoints. Intermediaries do not forward WINDOW_UPDATE frames between dependent connections. However, throttling of data transfer by any receiver can indirectly cause the propagation of flow-control information toward the original sender.

So, no not TCP hops, this is at the application layer. Further, as you already pointed out, the intermediary needs to be able to decrypt the session to inspect the application bytes. Practically speaking: client > edge / CDN node > origin.. would be an example of two hops, assuming edge node is terminating client's TLS connection and then opening another h2 session to the origin.

Hope that answers it!

Thanks Ilya for your reply. That makes sense, got it.