quiclog / qvis

QUIC and HTTP/3 visualization tools
https://qvis.edm.uhasselt.be
MIT License
172 stars 25 forks source link

Visualizing Streams in Qlogs #60

Open iamPerfPro opened 2 years ago

iamPerfPro commented 2 years ago

Hi, I'm using aioquic to study the streams in qlogs. I wanted to make sure about where to study the streams in qlogs. I see the stream details in Multiplexing tab which tells me when did the stream start and when it ended.

I use aioquic client to send multiple requests within a connection and I see that the throughput of each subsequent request keeps on decreasing. I raised an issue on aioquic regarding this

https://github.com/aiortc/aioquic/issues/239

I was trying to visualize and figure out whether the streams are actually running in parallel or they are sequential ? Is there any place other than multiplexing tab where I can see the behavior of streams and confirm whether the requests are in parallel or in sequential manner. Secondly, if there is any feature in qlogs which can help me understand why the throughput keeps on decreasing ?

Thank You

Best,

Abhinav

rmarx commented 2 years ago

Hey @abnv418,

The multiplexing tab was specifically designed to give you an idea of whether the streams are being multiplexed/round-robined or sent in sequential order... could you maybe share a screenshot of what you're seeing so I can help interpret it for you? Or better yet a qlog file?

If that's not enough, you can of course also just use the sequence diagram. That should show you for each QUIC packet for which stream it carries data. If you always see the same Stream ID in a given burst of packets before you see another Stream ID there, that would indicate sequential. If you instead see Stream ID switching each X packets (say each 1, 2, 4, 10, 20 packets for example), then you'd have round-robin/multiplexing behaviour.

In terms of throughput, that's a difficult metric to define here, and what you're seeing might just be an artefact of how aioquic is measuring it internally (e.g., if it IS multiplexing, the bandwidth is divided between different streams, causing the per-stream throughput to be lower?). You might look at the congestion diagram to get an idea of how the bandwidth was for the entire connection. If that seems to be stable, then aioquic is lying to you/you're misinterpreting what it's telling you ;) If the entire connection's bandwidth drops (e.g., lots of packet loss, low congestion window overall, use the ruler tool to measure slopes), then it's not due to multiplexing but rather failing congestion control.

I hope that helps!