This PR implements Rush transport mode in QUICRQ, and adds the required tests to verify behavior. The implementation broadly follows the Rush spec, with a couple particularities:
as in Rush, each object is sent in a dedicated unidir stream.
the stream priority is derived from the stream flags
the stream priorities are set to FIFO, instead of round robin in Warp. the round robin variant was tried, but causes really bad delays in case of congestion.
the Rush streams are formatted just like Warp stream, with a group header followed by an object header. This is a bit suboptimal, as a single header is needed, but it is good enough to compare the performance of multiple variants.
The frame delays for both Rush and Warp are worse than datagrams, or even single streams. This ought to be addressed in a separate PR, implementing pipelining of objects in relays instead of only relaying whole objects.
This PR implements Rush transport mode in QUICRQ, and adds the required tests to verify behavior. The implementation broadly follows the Rush spec, with a couple particularities:
The frame delays for both Rush and Warp are worse than datagrams, or even single streams. This ought to be addressed in a separate PR, implementing pipelining of objects in relays instead of only relaying whole objects.