dublin-traceroute

Dublin Traceroute is a NAT-aware multipath tracerouting tool

View project on GitHub
  • Implement UDP-DNS probes
  • Implement TCP-80/443
  • sniff traffic and react to failing probes
  • Support IPv6 (currently only in the Go implementation)
  • implement ICMP-paris
  • testing!
  • add min-ttl option done in commit 6b6be67
  • Implement merge of ICMP-paris, UDP-paris and TCP-paris probes
  • Implement Bellovin’s technique using response’s IP ID. paper and slides
  • use RocketFuel’s technique to identify different network interfaces on a router using IP ID
  • support MPLS, https://tools.ietf.org/html/rfc4950, done in https://github.com/insomniacslk/dublin-traceroute/issues/6
  • MPLS reconnaisance techniques, http://www.montefiore.ulg.ac.be/~bdonnet/mpls/
  • break on destination unreachable
  • improve documentation
  • put everything under a namespace
  • implement command line parser in main.cc done in commit 8a3ae75
  • Add an uninstall target in the Makefile for the python extension
  • Fix the memory leak where TracerouteResults is not freed
  • IP_ID_MATCHING must become a constructor parameter
  • SNIFFER_TIMEOUT must become a constructor parameter
  • Handle open UDP dst port responses
  • Explore the use of eBPF as a backend
  • Send 3 packets per hop
  • Convert the traceroute internal representation into a graph (use https://graph-tool.skewed.de/ maybe?)
  • Use both src and dst ports for tracerouting
  • Add path MTU discovery and measure fragmentation-induced latency
  • Use pyasn to look up AS by IP
  • Integrate the ASN graph with a world map (e.g. openstreetmap or google maps)
  • Add –webserver to the python CLI to expose a SimpleHTTPServer that serves a PNG with the traceroute diagram
  • heat map/flame graph of the network latencies over time (links history)
  • improve the build system (there is just a static Makefile now) done in commit ffa9d3c, using CMake