Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Dublin multipath strategy for IPv6/UDP #272

Closed
Tracked by #274
fujiapple852 opened this issue Aug 19, 2022 · 1 comment · Fixed by #781
Closed
Tracked by #274

Support Dublin multipath strategy for IPv6/UDP #272

fujiapple852 opened this issue Aug 19, 2022 · 1 comment · Fixed by #781
Milestone

Comments

@fujiapple852
Copy link
Owner

Dublin traceroute for IPv6 (go implementation) uses payload length field of the IPv6 header to hold the sequence, see here.

@fujiapple852
Copy link
Owner Author

fujiapple852 commented Mar 24, 2024

Does not currently set a MAGIC prefix on payloads for IPv6/UDP/Dublin. This means an unrelated ICMP response with a UDP original datagram may be misinterpreted as being a response we should process.

Arguably this lack of MAGIC prefix checking is general UDP (and TCP) issue and not specific to IPv6/UDP/Dublin. For IPv4 we cannot check this as we are not going to receive enough of the original datagram (i.e. the payload) to be sure to be able to read the MAGIC prefix. For IPv6/UDP (classic & paris) we get a sequence number and so can use that to filter uninteresting responses.

Fixing this is tricky as we need to:

  • adjust the UDP payload length to subtract the MAGIC prefix if we added one
  • ignore ICMP responses with UDP original datagram if they do not have the MAGIC prefix in the UDP payload

The issue is that we do not know, when processing a received ICMP packet with UDP original datagram, if we are in Dublin mode. We either have to make the receiver aware of that or we have to always use the MAGIC prefix for IPv6/UDP.

Update: resolved by adding a has_magic flag to the probe response which is set when processing the incoming ICMP packet. The actual decision to reject the probe response is left to the tracer, which has the additional context. This means no change to existing non-IPv6/UDP/Dublin processing and also means the magic prefix (trippy does not need to be known or shared outside the net/ipv6.rs module).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant