Skip to content
Permalink
master
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time

OONI traceroute

The OONI probe traceroute is a multiprotocol multiport traceroute test. The goal is to detect protocol/port based biases by doing a traceroute with different protocols and different ports.

It detects the hop for every protocol/port pair in the same round to minimize the risk of encountering route changes over time. At every round we send packets with the same TTL, but with different protocol/port combinations and wait to get back the TTL exceeded for all the send packets. Then we increment the TTL by one.

TODO:

  • There is a bad bug that makes everything work badly with more than 2! port combinations. Hunt it down and kill it!

  • Collect the timestamp of the response by adding the IP_TIMESTAMP option. This will make the device sending back the TTL exceeded packet add the timestamp of when it got the expired packet.

  • Add IP flag to get the MPLS VRF number of the Hop (if it exists)

  • Activate IP option 7 record route

Sample output from a run (with only port 0 and 80):

sudo python txtraceroute.py -o -n -g ooni.nu

01. 0.002s :: 192.168.80.1  (tcp, sport: 0 dport: 0)
01. 0.003s :: 192.168.80.1  (udp, sport: 0 dport: 0)
01. 0.003s :: 192.168.80.1  (tcp, sport: 80 dport: 0)
01. 0.003s :: 192.168.80.1  (udp, sport: 80 dport: 0)
01. 0.003s :: 192.168.80.1  (tcp, sport: 0 dport: 80)
01. 0.004s :: 192.168.80.1  (udp, sport: 0 dport: 80)
01. 0.004s :: 192.168.80.1  (tcp, sport: 80 dport: 80)
01. 0.006s :: 192.168.80.1  (udp, sport: 80 dport: 80)
01. - ??  (icmp, sport: 0 dport: 0)
02. 0.056s :: 194.78.139.81  (tcp, sport: 0 dport: 0)
02. 0.058s :: 194.78.139.81  (udp, sport: 0 dport: 0)
02. 0.059s :: 194.78.139.81  (tcp, sport: 80 dport: 0)
02. 0.060s :: 194.78.139.81  (udp, sport: 80 dport: 0)
02. 0.060s :: 194.78.139.81  (tcp, sport: 0 dport: 80)
02. 0.060s :: 194.78.139.81  (udp, sport: 0 dport: 80)
02. 0.060s :: 194.78.139.81  (tcp, sport: 80 dport: 80)
02. 0.060s :: 194.78.139.81  (udp, sport: 80 dport: 80)
02. 0.060s :: 194.78.139.81  (icmp, sport: 0 dport: 0)
03. 0.008s :: 172.22.69.69  (tcp, sport: 0 dport: 0)
03. 0.009s :: 172.22.69.69  (udp, sport: 0 dport: 0)
03. 0.010s :: 172.22.69.69  (tcp, sport: 80 dport: 0)
03. 0.012s :: 172.22.69.69  (udp, sport: 80 dport: 0)
03. 0.014s :: 172.22.69.69  (tcp, sport: 0 dport: 80)
03. 0.147s :: 172.22.69.69  (udp, sport: 0 dport: 80)
03. 0.147s :: 172.22.69.69  (tcp, sport: 80 dport: 80)
03. 0.148s :: 172.22.69.69  (udp, sport: 80 dport: 80)
03. 0.148s :: 172.22.69.69  (icmp, sport: 0 dport: 0)
04. 0.010s :: 91.183.246.103  (tcp, sport: 0 dport: 0)
04. 0.010s :: 91.183.246.103  (udp, sport: 0 dport: 0)
04. 0.010s :: 91.183.246.103  (tcp, sport: 80 dport: 0)
04. 0.011s :: 91.183.246.103  (udp, sport: 80 dport: 0)
04. 0.011s :: 91.183.246.103  (tcp, sport: 0 dport: 80)
04. 0.011s :: 91.183.246.103  (udp, sport: 0 dport: 80)
04. 0.011s :: 91.183.246.103  (tcp, sport: 80 dport: 80)
04. 0.011s :: 91.183.246.103  (udp, sport: 80 dport: 80)
04. 0.011s :: 91.183.246.103  (icmp, sport: 0 dport: 0)
05. 0.007s :: 91.183.246.102  (tcp, sport: 0 dport: 0)
05. 0.009s :: 91.183.246.102  (udp, sport: 0 dport: 0)
05. 0.009s :: 91.183.246.102  (tcp, sport: 80 dport: 0)
05. 0.009s :: 91.183.246.102  (udp, sport: 80 dport: 0)
05. 0.009s :: 91.183.246.102  (tcp, sport: 0 dport: 80)
05. 0.011s :: 91.183.246.102  (udp, sport: 0 dport: 80)
05. 0.047s :: 91.183.246.102  (tcp, sport: 80 dport: 80)
05. 0.048s :: 91.183.246.102  (udp, sport: 80 dport: 80)
05. 0.044s :: 91.183.246.102  (icmp, sport: 0 dport: 0)
06. 0.110s :: 91.183.246.115  (tcp, sport: 0 dport: 0)
06. 0.110s :: 91.183.246.115  (udp, sport: 0 dport: 0)
06. 0.111s :: 91.183.246.115  (tcp, sport: 80 dport: 0)
06. 0.113s :: 91.183.246.115  (udp, sport: 80 dport: 0)
06. 0.114s :: 91.183.246.115  (tcp, sport: 0 dport: 80)
06. 0.114s :: 91.183.246.115  (udp, sport: 0 dport: 80)
06. 0.113s :: 91.183.246.115  (tcp, sport: 80 dport: 80)
06. 0.113s :: 91.183.246.115  (udp, sport: 80 dport: 80)
06. 0.113s :: 91.183.246.115  (icmp, sport: 0 dport: 0)
07. 0.004s :: 80.84.21.34  (tcp, sport: 0 dport: 0)
07. 0.004s :: 80.84.21.34  (udp, sport: 0 dport: 0)
07. 0.005s :: 80.84.20.78  (tcp, sport: 80 dport: 0)
07. 0.005s :: 80.84.20.78  (udp, sport: 80 dport: 0)
07. 0.005s :: 80.84.20.78  (tcp, sport: 0 dport: 80)
07. 0.005s :: 80.84.20.78  (udp, sport: 0 dport: 80)
07. 0.006s :: 80.84.20.6  (tcp, sport: 80 dport: 80)
07. 0.006s :: 80.84.20.6  (udp, sport: 80 dport: 80)
07. 0.006s :: 80.84.21.34  (icmp, sport: 0 dport: 0)
08. 0.067s :: 94.102.162.123  (tcp, sport: 0 dport: 0)
08. 0.067s :: 94.102.162.123  (udp, sport: 0 dport: 0)
08. 0.068s :: 94.102.162.123  (tcp, sport: 80 dport: 0)
08. 0.068s :: 94.102.162.123  (udp, sport: 80 dport: 0)
08. 0.068s :: 94.102.162.123  (tcp, sport: 0 dport: 80)
08. 0.068s :: 94.102.162.123  (udp, sport: 0 dport: 80)
08. 0.067s :: 94.102.162.123  (icmp, sport: 0 dport: 0)
08. 0.068s :: 94.102.162.123  (tcp, sport: 80 dport: 80)
08. 0.068s :: 94.102.162.123  (udp, sport: 80 dport: 80)
09. 0.016s :: 195.69.144.113  (tcp, sport: 0 dport: 0)
09. 0.101s :: 195.69.144.113  (udp, sport: 0 dport: 0)
09. - ??  (tcp, sport: 80 dport: 0)
09. - ??  (udp, sport: 80 dport: 0)
09. - ??  (tcp, sport: 0 dport: 80)
09. - ??  (udp, sport: 0 dport: 80)
09. - ??  (tcp, sport: 80 dport: 80)
09. - ??  (udp, sport: 80 dport: 80)
09. - ??  (icmp, sport: 0 dport: 0)
10. 0.020s :: 85.90.238.45  (udp, sport: 0 dport: 0)
10. 0.070s :: 85.90.238.45  (tcp, sport: 0 dport: 0)
10. - ??  (tcp, sport: 80 dport: 0)
10. - ??  (udp, sport: 80 dport: 0)
10. - ??  (tcp, sport: 0 dport: 80)
10. - ??  (udp, sport: 0 dport: 80)
10. - ??  (tcp, sport: 80 dport: 80)
10. - ??  (udp, sport: 80 dport: 80)
10. - ??  (icmp, sport: 0 dport: 0)
11. 0.015s :: 217.20.44.218  (tcp, sport: 0 dport: 0)
11. 0.015s :: 217.20.44.218  (udp, sport: 0 dport: 0)
11. 0.020s :: 217.20.44.218  (tcp, sport: 80 dport: 0)
11. 0.020s :: 217.20.44.218  (udp, sport: 80 dport: 0)
11. 0.020s :: 217.20.44.218  (tcp, sport: 0 dport: 80)
11. 0.020s :: 217.20.44.218  (udp, sport: 0 dport: 80)
11. 0.021s :: 217.20.44.218  (tcp, sport: 80 dport: 80)
11. 0.021s :: 217.20.44.218  (icmp, sport: 0 dport: 0)
11. 0.024s :: 217.20.44.218  (udp, sport: 80 dport: 80)
12. 0.017s :: 212.111.33.234  (tcp, sport: 0 dport: 0)
12. 0.023s :: 212.111.33.234  (udp, sport: 0 dport: 0)
12. 0.024s :: 212.111.33.234  (udp, sport: 80 dport: 0)
12. 0.024s :: 212.111.33.234  (tcp, sport: 80 dport: 0)
12. 0.024s :: 212.111.33.234  (tcp, sport: 0 dport: 80)
12. 0.024s :: 212.111.33.234  (udp, sport: 0 dport: 80)
12. 0.025s :: 212.111.33.234  (tcp, sport: 80 dport: 80)
12. 0.025s :: 212.111.33.234  (udp, sport: 80 dport: 80)
12. 0.025s :: 212.111.33.234  (icmp, sport: 0 dport: 0)