Skip to content

miolad/netto

Repository files navigation

Netto

Example output from Netto

Netto is an eBPF-based network monitoring tool for Linux that measures the CPU cost of the Linux network stack.

Features

  • Measurement of the on-CPU time of the main networking entry points in kernel
  • Breakdown of the NET_RX_SOFTIRQ entry point into the basic network functions by stack trace-based profiling of the kernel
  • Low overhead
  • Real time operation
  • Minimum Linux version supported: 5.11 (BPF_MAP_TYPE_TASK_STORAGE)

Compilation

To build Netto you'll need:

  • Latest Rust toolchain (stable or nightly)
  • wasm_pack (for the web frontend)

Compile and run with:

cargo xtask run [--release]

Usage

$ ./netto -h
eBPF-based network diagnosis tool for Linux

Usage: netto [OPTIONS]

Options:
-f, --frequency <FREQUENCY>
        Perf-event's sampling frequency in Hz for the NET_RX_SOFTIRQ cost breakdown [default: 1000]
-a, --address <ADDRESS>
        Bind address for the web frontend [default: 0.0.0.0]
-p, --port <PORT>
        Bind port for the web frontend [default: 8080]
    --user-frequency <USER_FREQUENCY>
        User-space controller update period in ms [default: 500]
-h, --help
        Print help
-V, --version
        Print version

Netto exposes the real time results as a Wasm-powered web page accessible on http://localhost:8080

Repository structure

Folder Contents
images Images used on this README
netto Main Rust binary crate
netto/src/bpf BPF-C programs
metrics-common Bridge Rust library crate for main and web-frontend
web-frontend Rust WebAssembly frontend
www Static files for the web frontend
xtask Utility binary crate for managing coordination between the other crates

About

eBPF-based network diagnosis tool for Linux

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published