Hi,
First a question then another question
Does haproxy support HTTP/2 Prioritization?
I’m guessing it doesn’t, but does it intend to?
My scenario is Haproxy in front of a lot of caching servers, (using H1 currently with http-reuse always
in 2.0.10 + master patches).
But when I test my setup using Patrick Meenan’s http2 priorities test the server come as fail:
It isn’t the worst case scenario (request number 34 taking the longest), but it’s definitely not the best-case scenario.
Since haproxy.org is working with 2.1.0, I’ve also tried it there, with the same results:
This is the test using webpagetest.org with Patrick’s recommendations:
https://webpagetest.org/result/191203_7M_9b3c21e5ba9d620ae9392d29bd6daf12/
As you can see, in the 1st try it does indeed fall in the worst-case scenario:
https://webpagetest.org/result/191203_7M_9b3c21e5ba9d620ae9392d29bd6daf12/1/details/#waterfall_view_step1
Thanks
@lukastribus , do you have any insight about this?
Thanks
I don’t think we consider H2 priority, at least it doesn’t look like it:
if (!copy) {
TRACE_DEVEL("failed to allocate temporary buffer", H2_EV_RX_FRAME|H2_EV_RX_HDR|H2_EV_H2C_ERR, h2c->conn);
h2c_error(h2c, H2_ERR_INTERNAL_ERROR);
goto fail;
}
memcpy(copy->area, b_head(&h2c->dbuf), wrap);
memcpy(copy->area + wrap, b_orig(&h2c->dbuf), h2c->dfl - wrap);
hdrs = (uint8_t *) copy->area;
}
/* Skip StreamDep and weight for now (we don't support PRIORITY) */
if (h2c->dff & H2_F_HEADERS_PRIORITY) {
if (read_n32(hdrs) == h2c->dsi) {
/* RFC7540#5.3.1 : stream dep may not depend on itself */
TRACE_STATE("invalid stream dependency!", H2_EV_RX_FRAME|H2_EV_RX_HDR|H2_EV_H2C_ERR|H2_EV_PROTO_ERR, h2c->conn);
h2c_error(h2c, H2_ERR_PROTOCOL_ERROR);
goto fail;
}
if (flen < 5) {
TRACE_STATE("frame too short for priority!", H2_EV_RX_FRAME|H2_EV_RX_HDR|H2_EV_H2C_ERR|H2_EV_PROTO_ERR, h2c->conn);
@willy any input about H2 stream prioritization?
willy
December 9, 2019, 9:25pm
4
Confirmed, we don’t implement it, and currently H2 prioritization is in the process of being redesigned because most implementations are not happy with it, I’d say I was almost encouraged not to waste my time on it :-/
1 Like