This crate implements reading and writing
warts(5)
files produced by CAIDA's Scamper tool.
It relies on the excellent deku crate for serializing and deserializing the binary format.
You can run one of the examples in examples/
:
cargo run --release --example dump data/trace_google_dns_v6_default.warts
cargo run --release --example read_traceroute data/trace_google_dns_v6_default.warts
cargo run --release --example write_traceroute > test.warts
To use in your own project, add the following dependency to Cargo.toml
:
[dependencies]
warts = "0.4"
The following features are currently not implemented:
- DoubleTree and PMTUD data
-
tsprespec
data - Streaming reading
Time to parse and print the traceroutes from abz-uk.team-probing.c009127.20210202.warts
(52MB).
Measured with hyperfine on a 2020 M1 MacBook Air.
Library | Time (s) |
---|---|
warts / read_traceroute |
0.797 |
Scamper / sc_warts2text |
1.125 |
pywarts / parse_from_stdin.py |
12.405 |
cmand/scamper / sc_warts2text.py |
21.207 |
Type | Structure | Name | Implemented |
---|---|---|---|
0x0001 |
scamper_list_t |
List | Y |
0x0002 |
scamper_cycle_t |
Cycle start | Y |
0x0003 |
scamper_cycle_t |
Cycle definition | Y |
0x0004 |
scamper_cycle_t |
Cycle stop | Y |
0x0005 |
scamper_addr_t |
Address (deprecated) | Y |
0x0006 |
scamper_trace_t |
Traceroute | Y |
0x0007 |
scamper_ping_t |
Ping | Y |
0x0008 |
scamper_tracelb_t |
MDA traceroute | Y |
0x0009 |
scamper_dealias_t |
Alias resolution | N |
0x000a |
scamper_neighbourdisc_t |
Neighbour discovery | N |
0x000b |
scamper_tbit_t |
TCP behaviour inference tool | N |
0x000c |
scamper_sting_t |
Sting | N |
0x000d |
scamper_sniff_t |
Sniff | N |