quinn
quinn copied to clipboard
feat: QUIC Address discovery extension
Implements the Quic Address discovery extension IETF draft
- Transport parameters are implemented with tests and 0rtt verification as spec'd
- The spec declares two frames, one for informing of IpV4 addresses and one for informing IpV6 frames. This is implemented as a single structure with tests.
- Transmission is done after the initial path has been established, when path validation is required, and sent with path responses. The last part is not required but provides a small reconfirmation of the observed external address to the peer, and it's allowed by the spec being observed address frames defined as probing frames. This is implemented with tests.
- Retransmission is done by sending a fresh frame if it's identified as lost. This ensures that the path over which the frame is sent is always the correct one, i.e. That the reported observed address is always sent using the path for which the address was observed. This is implemented with tests.
- Surfacing is done from the protocol implementation via Connection events.
- Configuration is done with two methods to independently turn on or off the receiving and sending of reports.