Skip to main content

create_udp_trace

Function create_udp_trace 

Source
pub fn create_udp_trace(
    src: &Address,
    dst: &Address,
    sport: u16,
    dport: u16,
    identifier: u16,
    desired_checksum: u16,
    id: &TraceDnsId<'_>,
) -> Vec<u8> 
Expand description

Creates a UDP (Paris) traceroute probe packet with a DNS payload

When the probe reaches its destination DNS server, the server replies to the DNS query, resulting in the traceroute being terminated (destination reached).

Encoding scheme:

  • IPv4 IP identification (16b) / IPv6 flow label (16b of 20b): (worker_hi_2 << 14) | timestamp_14b
  • UDP checksum (16b): (ttl << 8) | worker_lo_8

§Arguments

  • src / dst - source / destination address
  • sport / dport - configured ports (constant across probes for Paris)
  • identifier - IP identification / flow label (worker_hi + timestamp)
  • desired_checksum - value forced into the UDP checksum (ttl + worker_lo)
  • id - probe identity encoded in the QNAME (worker, measurement, send time, TTL)