Skip to content

maxmouchet/caracat

Repository files navigation

caracat

crates.io docs.rs test

caracat (always in lowercase) is a port of caracal from C++ to Rust.

The initial motivation was to benefit from a saner build system to make the project easier to maintain. The architecture is very similar between the two projects and the input/output format is the same. Versions > 1.0.0 might break this compatibility to fix some idiosyncrasies inherited by caracal.

Multiple example binaries are provided:

# Traceroute tool
cargo run --example traceoute -- --help
# Implementation of caracal command-line interface
cargo run --example caracal -- --help
# (Partial) implementation of yarrp
cargo run --example yarrp -- --help

Example traceroute run:

# cargo run --example traceroute -- --as-path-lookups --first=3 google.com
traceroute to 2a00:1450:4007:80e::200e (google.com), 30 hops max, ?? byte packets
 3  2a01:cfc0:200:8000:193:252:102:135 (2a01:cfc0:200:8000:193:252:102:135) [AS5511] 8.9ms
 4  bundle-ether149.pastr4.paris.opentransit.net (2a01:cfc4:0:400::3) [AS5511] 83.6ms
 5  2001:4860:1:1::524 (2001:4860:1:1::524) [AS15169] 9.0ms
 6  2a00:1450:80a9::1 (2a00:1450:80a9::1) [AS15169] 9.0ms
 7  2001:4860:0:1::7002 (2001:4860:0:1::7002) [AS15169] 10.7ms
 8  2001:4860:0:1::1f95 (2001:4860:0:1::1f95) [AS15169] 9.4ms
 9  par10s42-in-x0e.1e100.net (2a00:1450:4007:80e::200e) [AS15169] 10.6ms

For more information, please refer to the caracal documentation and to the API documentation.