Repository navigation
v0.1.0-beta
Pre-releaseZero-Copy Multicast-to-Kafka, ANSSI-Ready 🦀
Nothing But Data (NBD) is a lightweight, high-performance, security-hardened daemon that ingests real-time UDP multicast traffic and relays it to Apache Kafka — built in Rust for sub-millisecond latency in sensitive production environments.
This is the project's first tagged release: a beta, feature-complete for its core use case but still collecting real-world mileage before a stable 1.0.
✨ Highlights
- 🚀 Zero-copy pipeline —
bytes::BytesMutsplit-and-freeze pattern from socket to Kafka producer, no unnecessary allocations on the hot path - 📡 Multi-channel UDP multicast ingestion via
socket2, with per-provider topic/group/interface configuration - ⚙️ Two-stage TOML config validation — parse then validate, with sensible defaults and diagnostic warnings
- 🛑 Graceful shutdown via
CancellationToken, draining in-flight messages before exit - 📈 Optional Prometheus exporter (
metrics-exporterfeature) for packet, byte, and error counters - 🖥️ Cross-platform — Linux and Windows, Tier 1 targets
- 🧰 CLI —
--config-file,--check-config-file(dry-run validation),--about
🔐 Security & Compliance
- Tracks the ANSSI Secure Rust Development Guide — see
SECURITY.mdfor the full compliance matrix #![forbid(unsafe_code)], overflow checks enabled in release builds, nounwrap()on production paths- Supply-chain policy enforced via
cargo-deny(license allowlist, no unvetted registries, yanked-crate ban) - Ships a production-ready, hardened
systemdunit (DynamicUser,ProtectSystem=strict, capabilities dropped)
📊 Performance
Benchmarked with a dedicated integration test suite (steady-state, burst, and multi-channel scenarios) reporting p50–p99.9 latency distributions. Full methodology and results in PERFORMANCE.md.
🚧 Beta status
This is a single-maintainer, best-effort project. The core pipeline is stable and tested, but the configuration schema and public API may still move before 1.0. Bug reports and feedback are very welcome — see CONTRIBUTING.md to get started, and SECURITY.md for responsible disclosure.
📦 Getting started
cargo build --release --features metrics-exporter
./target/release/nothing_but_data --config-file /path/to/config.tomlSee the README for the full configuration reference and deployment guidance.
📝 Full changelog: CHANGELOG.md