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