Experimental rewrite of Arkime capture core in Rust.
- Linux-first capture path.
- Pluggable capture backends (implemented today: a
libpcap-compatible path viapnetdatalink). - Planned backends:
pfring,raw_socket,dpdk,ebpfvia Linux runtime adapters. - Capture pipeline scaffold: capture -> parse -> filter -> session aggregation -> pcap/pcapng record -> metadata index.
- Config layering:
src/config.tomlmerged with environment variables. PrefixARKIME_RUST, separator__.
cargo run -- config --config src/config.toml
cargo run -- capture --config src/config.tomlEnvironment overrides example:
export ARKIME_RUST__CAPTURE__BACKEND=libpcap
export ARKIME_RUST__STORAGE__FORMAT=pcapng
export ARKIME_RUST__STORAGE__BACKEND=s3
export ARKIME_RUST__STORAGE__ENDPOINT=http://127.0.0.1:9000storage.backend:local_fs | s3 | ceph(currently the file writer is local; other backends are config scaffolding).storage.format:pcap | pcapngstorage.local_path: local output directoryindex.enabled: enable in-memory metadata indexindex.max_entries: max retained metadata entries
By default, capture listens on parent Ethernet interfaces and parses VLAN tags inside packets.
VLAN sub-interfaces (for example eth0.100) are ignored unless explicitly configured via net.link_patterns.
NOTE: You must place
Packet.libfrom the WinPcap Developers Pack in a directory namedlib, in the root of this repository. Alternatively, you can use any of the locations listed in the%LIB%/$Env:LIBenvironment variables. For the 64-bit toolchain it is inWpdPack/Lib/x64/Packet.lib, for the 32-bit toolchain, it is inWpdPack/Lib/Packet.lib.