trippy does not reach destination against QUIC targets
Describe the bug
When you trace towards a HTTP/3 server using trippy (i.e. 443/udp), the destination hop will be ???. This happens on IPv4 and IPv6; against Facebook, Google, and Cloudflare; and on MacOS and Linux.
To Reproduce
for dst in facebook.com google.com cloudflare.com; do
for ver in 4 6; do
sudo ./trip --target-port=443 --udp --first-ttl=7 --mode=markdown --max-samples=10 --max-ttl=64 -$ver $dst | tee /tmp/out-$ver-$dst.md
done
doneExpected behavior
The last hop reaches the destination instead of ???
Screenshots
Markdown tables returned by trippy from that command (VERY LONG)| Hop | IPs | Addrs | Loss% | Snt | Recv | Last | Avg | Best | Wrst | StdDev |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 172.30.2.229 | 172.30.2.229 | 0.0 | 10 | 10 | 5.1 | 3.9 | 2.8 | 5.1 | 0.8 |
| 8 | 206.197.187.62 | as13335.sfmix.org | 20.0 | 10 | 8 | 5.1 | 12.1 | 5.1 | 35.8 | 8.0 |
| 9 | 172.68.188.96 | 172.68.188.96 | 0.0 | 10 | 10 | 9.0 | 11.0 | 4.7 | 20.2 | 4.9 |
| 172.68.188.115 | 172.68.188.115 | |||||||||
| 172.68.188.119 | 172.68.188.119 | |||||||||
| 172.68.188.80 | 172.68.188.80 | |||||||||
| 172.68.188.22 | 172.68.188.22 | |||||||||
| 172.68.188.98 | 172.68.188.98 | |||||||||
| 172.68.188.94 | 172.68.188.94 | |||||||||
| 10 | ??? | ??? | 100.0 | 10 | 0 | ??? | 0.0 | ??? | ??? | 0.0 |
| Hop | IPs | Addrs | Loss% | Snt | Recv | Last | Avg | Best | Wrst | StdDev |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 172.30.9.121 | 172.30.9.121 | 60.0 | 10 | 4 | 10.8 | 252.5 | 10.8 | 363.3 | 140.4 |
| 8 | 206.197.187.92 | as32934.sfmix.org | 0.0 | 10 | 10 | 7.7 | 8.0 | 4.2 | 14.9 | 2.9 |
| 9 | 157.240.46.114 | po121.asw04.sjc1.tfbnw.net | 0.0 | 10 | 10 | 9.2 | 7.2 | 4.4 | 10.8 | 2.1 |
| 31.13.24.38 | po121.asw01.sjc1.tfbnw.net | |||||||||
| 157.240.112.86 | po121.asw02.sjc1.tfbnw.net | |||||||||
| 10 | 163.77.253.66 | 163.77.253.66 | 0.0 | 10 | 10 | 4.1 | 7.4 | 4.1 | 11.2 | 2.5 |
| 129.134.116.137 | usw02.sjc6.tfbnw.net | |||||||||
| 163.77.253.65 | 163.77.253.65 | |||||||||
| 11 | 163.77.194.200 | 163.77.194.200 | 0.0 | 10 | 10 | 7.1 | 10.2 | 7.1 | 14.4 | 2.4 |
| 163.77.194.179 | 163.77.194.179 | |||||||||
| 163.77.252.179 | 163.77.252.179 | |||||||||
| 163.77.194.174 | 163.77.194.174 | |||||||||
| 163.77.244.93 | 163.77.244.93 | |||||||||
| 163.77.194.202 | 163.77.194.202 | |||||||||
| 129.134.119.92 | msw1ac.01.sjc6.tfbnw.net | |||||||||
| 163.77.244.97 | 163.77.244.97 | |||||||||
| 163.77.244.95 | 163.77.244.95 | |||||||||
| 12 | ??? | ??? | 100.0 | 10 | 0 | ??? | 0.0 | ??? | ??? | 0.0 |
| Hop | IPs | Addrs | Loss% | Snt | Recv | Last | Avg | Best | Wrst | StdDev |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 172.30.9.121 | 172.30.9.121 | 0.0 | 10 | 10 | 2.9 | 9.9 | 2.9 | 53.2 | 12.9 |
| 8 | 208.76.187.13 | cr1-200p-a-be100.bb.spectrumnet.us | 0.0 | 10 | 10 | 6.7 | 12.6 | 6.0 | 43.1 | 9.7 |
| 9 | 192.175.30.217 | be4.cr4-11greatoaks.bb.as11404.net | 0.0 | 10 | 10 | 9.7 | 11.0 | 5.8 | 33.1 | 6.7 |
| 10 | 209.85.168.110 | 209.85.168.110 | 0.0 | 10 | 10 | 8.4 | 10.6 | 6.7 | 23.0 | 4.1 |
| 11 | 142.251.231.97 | 142.251.231.97 | 0.0 | 10 | 10 | 6.9 | 9.1 | 6.9 | 12.9 | 1.6 |
| 142.251.231.101 | 142.251.231.101 | |||||||||
| 12 | 142.251.241.103 | 142.251.241.103 | 0.0 | 10 | 10 | 6.0 | 7.5 | 6.0 | 8.8 | 0.9 |
| 142.251.241.105 | 142.251.241.105 | |||||||||
| 13 | ??? | ??? | 100.0 | 10 | 0 | ??? | 0.0 | ??? | ??? | 0.0 |
| Hop | IPs | Addrs | Loss% | Snt | Recv | Last | Avg | Best | Wrst | StdDev |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 2607:f598:b010::1 | 2607:f598:b010::1 | 0.0 | 10 | 10 | 3.1 | 4.9 | 3.1 | 8.2 | 1.9 |
| 8 | 2001:504:30::ba01:3335:2 | as13335.sfmix.org | 30.0 | 10 | 7 | 55.3 | 21.1 | 5.0 | 55.3 | 16.7 |
| 9 | 2400:cb00:1232:3:: | 2400:cb00:1232:3:: | 0.0 | 10 | 10 | 7.9 | 12.1 | 6.0 | 33.4 | 6.5 |
| 2400:cb00:467:3:: | 2400:cb00:467:3:: | |||||||||
| 2400:cb00:4:3:: | 2400:cb00:4:3:: | |||||||||
| 2400:cb00:464:3:: | 2400:cb00:464:3:: | |||||||||
| 2400:cb00:466:3:: | 2400:cb00:466:3:: | |||||||||
| 2400:cb00:465:3:: | 2400:cb00:465:3:: | |||||||||
| 10 | ??? | ??? | 100.0 | 10 | 0 | ??? | 0.0 | ??? | ??? | 0.0 |
| Hop | IPs | Addrs | Loss% | Snt | Recv | Last | Avg | Best | Wrst | StdDev |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 2607:f598:b010::1 | 2607:f598:b010::1 | 0.0 | 10 | 10 | 8.0 | 9.9 | 3.1 | 47.4 | 12.5 |
| 8 | 2001:504:30::ba03:2934:2 | as32934.sfmix.org | 0.0 | 10 | 10 | 4.9 | 9.1 | 4.1 | 38.8 | 9.9 |
| 9 | 2620:0:1cff:dead:beef::3e48 | po121.asw02.sjc1.tfbnw.net | 0.0 | 10 | 10 | 4.1 | 8.0 | 4.1 | 28.7 | 6.9 |
| 2620:0:1cff:dead:beef::c2 | po121.asw01.sjc1.tfbnw.net | |||||||||
| 2620:0:1cff:dead:beef::2064 | po121.asw04.sjc1.tfbnw.net | |||||||||
| 10 | 2620:0:1cff:dead:beef::82a3 | po1000.usw04.sjc6.tfbnw.net | 0.0 | 10 | 10 | 4.1 | 7.5 | 4.1 | 19.3 | 4.2 |
| 2620:0:1cff:dead:beef::82a9 | po1001.usw03.sjc6.tfbnw.net | |||||||||
| 2620:0:1cff:dead:beef::82ab | po1001.usw04.sjc6.tfbnw.net | |||||||||
| 2620:0:1cff:dead:beef::82a1 | po1000.usw03.sjc6.tfbnw.net | |||||||||
| 2620:0:1cff:dead:beef::82b7 | po1003.usw02.sjc6.tfbnw.net | |||||||||
| 2620:0:1cff:dead:beef::82bb | po1003.usw04.sjc6.tfbnw.net | |||||||||
| 2620:0:1cff:dead:beef::829f | po1000.usw02.sjc6.tfbnw.net | |||||||||
| 2620:0:1cff:dead:beef::82b9 | po1003.usw03.sjc6.tfbnw.net | |||||||||
| 11 | 2620:0:1c00:c::1b3 | be6.msw1bc.01.sjc6.tfbnw.net | 0.0 | 10 | 10 | 12.7 | 9.6 | 6.7 | 13.5 | 2.1 |
| 2620:0:1c00:c::1c7 | be8.msw1ax.01.sjc6.tfbnw.net | |||||||||
| 2620:0:1c00:c::91 | be2.msw1aq.01.sjc6.tfbnw.net | |||||||||
| 2620:0:1c00:c::ab | be7.msw1ac.01.sjc6.tfbnw.net | |||||||||
| 2620:0:1c00:c::1ab | be6.msw1ba.01.sjc6.tfbnw.net | |||||||||
| 2620:0:1c00:c::1ad | be5.msw1bb.01.sjc6.tfbnw.net | |||||||||
| 2620:0:1c00:c::135 | be4.msw1ar.01.sjc6.tfbnw.net | |||||||||
| 2620:0:1c00:c::169 | be3.msw1au.01.sjc6.tfbnw.net | |||||||||
| 2620:0:1c00:c::185 | be3.msw1bb.01.sjc6.tfbnw.net | |||||||||
| 2620:0:1c00:c::137 | be8.msw1ar.01.sjc6.tfbnw.net | |||||||||
| 12 | ??? | ??? | 100.0 | 10 | 0 | ??? | 0.0 | ??? | ??? | 0.0 |
| Hop | IPs | Addrs | Loss% | Snt | Recv | Last | Avg | Best | Wrst | StdDev |
|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 2607:f598:b010::1 | 2607:f598:b010::1 | 0.0 | 10 | 10 | 3.2 | 4.3 | 3.2 | 6.8 | 0.9 |
| 8 | 2607:f060:c000::1 | 2607:f060:c000::1 | 0.0 | 10 | 10 | 8.5 | 35.0 | 7.6 | 77.1 | 23.4 |
| 9 | 2001:4860:1:1::686 | 2001:4860:1:1::686 | 20.0 | 10 | 8 | 12.7 | 8.6 | 7.1 | 12.7 | 1.8 |
| 10 | 2001:4860:0:1::63db | 2001:4860:0:1::63db | 0.0 | 10 | 10 | 6.4 | 8.7 | 6.4 | 13.8 | 2.0 |
| 2001:4860:0:1::63df | 2001:4860:0:1::63df | |||||||||
| 11 | 2001:4860:0:1::69c1 | 2001:4860:0:1::69c1 | 0.0 | 10 | 10 | 6.1 | 8.2 | 6.1 | 10.1 | 1.4 |
| 2001:4860:0:1::69bf | 2001:4860:0:1::69bf | |||||||||
| 12 | ??? | ??? | 100.0 | 10 | 0 | ??? | 0.0 | ??? | ??? | 0.0 |
Environment Info
- OS: MacOS aarch64, Linux x86_64
- Trippy version: 0.13.0
- Installation method: precompiled binaries on trippy.rs
- Terminal / Console: not relevant
Additional context
pcap.zip contains a packet capture run on MacOS. The payload sent (36 zeroes) doesn't even seem to yield a response from the server. Dmitry Butskoy's traceroute variant does yield a response, however, though the payload it sends is not a QUIC packet either -- it's @ABCDEF... up the ASCII character set until it reaches the payload length.
I think a viable solution to this issue could be to make PayloadPattern an enum, and add a variant that's just an simple QUIC initialization handshake, and use that either when the user provides it explicitly as a CLI flag, or implicitly when 443/udp is detected as the destination. I would be happy to contribute such a change.
Source: fujiapple852/trippy