You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Receptor currently calls the quic-go shortcuts quic.Dial and quic.Listen which comes with some limitations.
From the quic-go README:
When using the shortcut, it's not possible to reuse the same UDP socket for outgoing connections.
...
The shortcut can not set the `StatelessResetToken`, which is recommended in order to quickly recover from crashes
/ reboots of our node (see [Section 10.3 of RFC 9000](https://datatracker.ietf.org/doc/html/rfc9000#section-10.3) .
The non shortcut path involves creating a quic.Transport object and using said object to create .Dial and .Listen connections. This .Transport will be reused for a given node.
I believe I am seeing an optimisation opportunity in using this .Transport approach. In debugging I am observing the connection between nodes being "cycled", closed and reopened in order to establish connections with other peers.
As well as using quic.Transport I have observed other quic.Config options that might be beneficial for receptor:
Allow0RTT bool Allow0RTT allows the application to decide if a 0-Round trip connection attempt should be accepted. This is sending the first payload along with the connection attempt.
TokenStore TokenStore The TokenStore stores tokens received from the server. Tokens are used to skip address validation on future connection attempts.
DisablePathMTUDiscovery bool This allows the sending of QUIC packets that fully utilize the available MTU of the path. If unavailable or disabled, packets will be at most 1252 (IPv4) / 1232 (IPv6) bytes in size.
Tracer func(...) This is a logging interface, allowing more data on the quic connection
The text was updated successfully, but these errors were encountered:
Receptor currently calls the quic-go shortcuts
quic.Dial
andquic.Listen
which comes with some limitations.From the quic-go README:
The non shortcut path involves creating a
quic.Transport
object and using said object to create.Dial
and.Listen
connections. This.Transport
will be reused for a given node.I believe I am seeing an optimisation opportunity in using this
.Transport
approach. In debugging I am observing the connection between nodes being "cycled", closed and reopened in order to establish connections with other peers.As well as using
quic.Transport
I have observed otherquic.Config
options that might be beneficial for receptor:Allow0RTT bool
Allow0RTT allows the application to decide if a 0-Round trip connection attempt should be accepted. This is sending the first payload along with the connection attempt.TokenStore TokenStore
The TokenStore stores tokens received from the server. Tokens are used to skip address validation on future connection attempts.DisablePathMTUDiscovery bool
This allows the sending of QUIC packets that fully utilize the available MTU of the path. If unavailable or disabled, packets will be at most 1252 (IPv4) / 1232 (IPv6) bytes in size.Tracer func(...)
This is a logging interface, allowing more data on the quic connectionThe text was updated successfully, but these errors were encountered: