Description
The QUIC transport currently only supports the quic-v1 codepoint in multiaddresses. This codepoint was recently added to represent QUIC version 1 / RFC 9000, whereas the previous codepoint quic should be interpreted as QUIC version draft-29. See multiformats/multiaddr#145.
quinn supports the versions draft-29..34 and version 1. On the server side this means that our users could already advertise each quic-v1 address also as quic address.
For dialing however we have to set one version, right now we use the default v1. We can add support for quic(-draft-29) by checking the multiaddress on dials and set the current version in the quinn_proto::ClientConfig.
Motivation
go-libp2p does not support quic-v1 yet, although there is WIP to add support in the very near future: libp2p/go-libp2p#1841. However, even when support is added we won't be able to communicate via QUIC with any go-libp2p nodes that did not upgrade to the newest version. cc @dignifiedquire.
Requirements
- Allow dialing
quic multiaddresses
- Use QUIC draft-29 version when dialing
quic addresses, use version 1 for quic-v1
- To be discussed: support
quic codepoint in listening addresses
Open questions
go-libp2p is planning a transition period (6 months?) before removing support for quic. @marten-seemann raised a valid point on whether it even makes sense for rust-libp2p to add support, if ideally eventually the quic codepoint dies out because all new nodes run on v1.
I am in favor of at least adding support for dialing quic addresses so that we can connect to old go-libp2p nodes. I don't see any drawbacks in that.
I would propose to not add support for quic listening addresses. However, since in practice we still support draft-29 as servers, users are still free to announce a quic-v1 address also as quic if they need it. They can already do this right now anyway unless we explicitly remove support for draft-29 in our config.
Wdyt @marten-seemann @mxinden?
Are you planning to do it yourself in a pull request?
Yes (if folks agree with this).
Description
The QUIC transport currently only supports the
quic-v1codepoint in multiaddresses. This codepoint was recently added to represent QUIC version 1 / RFC 9000, whereas the previous codepointquicshould be interpreted as QUIC version draft-29. See multiformats/multiaddr#145.quinnsupports the versions draft-29..34 and version 1. On the server side this means that our users could already advertise eachquic-v1address also asquicaddress.For dialing however we have to set one version, right now we use the default v1. We can add support for
quic(-draft-29)by checking the multiaddress on dials and set the current version in thequinn_proto::ClientConfig.Motivation
go-libp2pdoes not supportquic-v1yet, although there is WIP to add support in the very near future: libp2p/go-libp2p#1841. However, even when support is added we won't be able to communicate via QUIC with any go-libp2p nodes that did not upgrade to the newest version. cc @dignifiedquire.Requirements
quicmultiaddressesquicaddresses, use version 1 forquic-v1quiccodepoint in listening addressesOpen questions
go-libp2p is planning a transition period (6 months?) before removing support for
quic. @marten-seemann raised a valid point on whether it even makes sense for rust-libp2p to add support, if ideally eventually thequiccodepoint dies out because all new nodes run onv1.I am in favor of at least adding support for dialing
quicaddresses so that we can connect to old go-libp2p nodes. I don't see any drawbacks in that.I would propose to not add support for
quiclistening addresses. However, since in practice we still support draft-29 as servers, users are still free to announce aquic-v1address also asquicif they need it. They can already do this right now anyway unless we explicitly remove support for draft-29 in our config.Wdyt @marten-seemann @mxinden?
Are you planning to do it yourself in a pull request?
Yes (if folks agree with this).