p-quic / pquic

The PQUIC implementation, a framework that enables QUIC clients and servers to dynamically exchange protocol plugins that extend the protocol on a per-connection basis
https://pquic.org
MIT License
126 stars 20 forks source link

What are the differences between plugins with & without "cond" #31

Closed ArthurCChen closed 2 years ago

ArthurCChen commented 2 years ago

For provided plugins, there are some with "cond", maybe for "conditional"? but no docs indicated this. What are the differences? E.g. plugins/multipath/multipath_rtt_cond.plugin plugins/multipath/multipath_rtt.plugin

ArthurCChen commented 2 years ago

Till now, I just have the experience that these two can't be used -P simultaneously at one client. rtt_cond.plugin will continue transmitting data until manually shut the progress; while rtt.plugin automatically shuts after some bytes(about 1.25s).

qdeconinck commented 2 years ago

The conditional version (cond) negotiates the extension through transport parameters while the non-conditional one uses the extension without negotiating it. This means that if a PQUIC host with the conditional plugin interacts with another host not supporting multipath, it will fallback to single path QUIC but the connection can continue. With the other version, the PQUIC host will trigger connection errors at the other end (unknown frame types,...). Apart from that, there should not have any difference between them.