12 releases

0.4.0 Mar 5, 2023
0.3.4 Dec 9, 2022
0.3.3 Aug 19, 2022
0.3.2 May 11, 2022
0.1.2 Mar 24, 2022

#1445 in Network programming

45 downloads per month
Used in 2 crates

MIT license

61KB
1K SLoC

💢 warts

Coverage crates.io docs.rs Tests

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.

Usage

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"

Limitations

The following features are currently not implemented:

  • DoubleTree and PMTUD data
  • tsprespec data
  • Streaming reading

Performance

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

Object types

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

Dependencies

~4MB
~88K SLoC