quic-trace to qlog converter

There are currently two main logging formats for QUIC: quic-trace and qlog.
Since we hope to standardize on qlog, we provide this tool to help users of quic-trace make this easier.

Upload a .qtr binary file or protobuf .json file in the quic-trace format (code only looks for extension to determine type).
You will get an automated download of the file in .qlog json schema (or .qtr to protobuf .qtr.json if you opt for the second button).
You can also upload a proper .qlog file just to have it visualized.
You can also pass in a .qlog file URL as the "file" query parameter (e.g., ?file=http://example.org/test.qlog). Make sure to set proper CORS headers on the server hosting the .qlog files though!


Option 1 : Upload your own file : and (or, download this .qtr file as .qtr.json).

OR

Option 2 : Test with demo file : (Original .qtr file)


This area will contain a very rudimentary, low-interactive visualization based on quic-trace's tool.


This area will show some statistics on the input file.



The conversion is relatively straightforward: most event types are mapped 1-on-1 to qlog equivalents (e.g., PACKET_SENT stays PACKET_SENT).
The transportState parameters (rtt, cwnd, bytes_in_flight, etc.) are extracted and logged as separate qlog events.
For this, we do some custom logic to filter out repeated values of these parameters (i.e., we only log if the value changed since it was logged previously).
Finally, the congestionControlState metric is given a separate event if present.

Currently using quic-trace proto schema from this commit.
This tool runs 100% locally in your browser (thanks to protobuf.js), no data is sent to our servers.

If you encounter errors, please send the failing input file to robin.marx@uhasselt.be

This tool was developed for and only tested in Google Chrome.
The JavaScript was meant to be easily readable and changeable, so no weird webpack build steps or typescript present.
Source code available at https://github.com/quiclog/quictrace2qlog.