quicwg / qlog

The IETF I-D documents for the qlog format
Other
77 stars 12 forks source link

Add extensibility for all events and official extension points #417

Closed rmarx closed 1 week ago

rmarx commented 3 months ago

Fixes #379. Also closes https://github.com/quicwg/qlog/issues/261, https://github.com/quicwg/qlog/issues/176, https://github.com/quicwg/qlog/issues/170, https://github.com/quicwg/qlog/issues/124, https://github.com/quicwg/qlog/issues/192, https://github.com/quicwg/qlog/issues/297.

Adds extensibility for all events through the * $$category-name-ext pattern first used in #400, now extended to ALL events as discussed in #379.

Makes all official protocol extension points also extensible in qlog. This was mostly already the case except for a few holdouts ($H3StreamType, $ProtocolType, $TransportError). The full list currently is:

I don't think we need to make QUIC's StreamType extensible (since that's also in the RFC as always just uni- or bidirectional, with no way to change that through IANA (or even wire image, due to looking at the 2 LSBs)). Thoughts on this @LPardue ?

rmarx commented 3 months ago

TODO for myself: we also need to make PacketHeader extensible (e.g., to be able to add lossbits, new fields for QUIC v3 etc.). Same for PacketType and PacketNumberSpace (TODO: also double-check others)

rmarx commented 1 week ago

Did some final work on this today. Should be ready for final review + merge @LPardue @marten-seemann

A note: as mentioned in the original PR message, this intentionally does NOT make QUIC Stream Type (uni vs bidi) extensible, since that's not supported by v1 and would require quite a different approach (though not really wire image changes I guess?). So still not sure if we should include this or not... would welcome some thoughts ;)