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.
TODO: Link to documentation.
You can run one of the examples in examples/
:
bash
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 # TODO
To use in your own project, add the following dependency to Cargo.toml
:
toml
[dependencies]
warts = "0.1"
The following features are currently not implemented:
tsprespec
dataTime to parse and print the traceroutes from abz-uk.team-probing.c009127.20210202.warts
(52MB).
Measured 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) | N |
| 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 |