flowscope
Passive flow & session tracking for packet capture.
flowscope is a runtime-free, cross-platform Rust library for observing
what's happening on the wire. It pairs with any source of &[u8] frames:
netring (Linux AF_PACKET / AF_XDP),
pcap files, tun/tap, eBPF, embedded — anywhere bytes show up.
No tokio, no futures, no async runtime in the core. (For tokio integration,
see netring's AsyncCapture::flow_stream etc., which consume this crate's
traits.)
What's here
PacketView → FlowExtractor → FlowTracker → Reassembler → SessionParser / DatagramParser
↑ ↓
anything typed L7 messages
Core (always on):
FlowExtractortrait + built-in extractors (5-tuple, IP-pair, MAC-pair) + decap combinators (VLAN, MPLS, VXLAN, GTP-U, GRE) +AutoDetectEncapcombinator +FlowLabelIPv6 augmentation.FlowTracker— bidirectional flow accounting, TCP state machine, idle timeouts, LRU eviction.Reassembler— sync per-(flow, side) hook for TCP byte streams.SessionParser/DatagramParser— typed L7 message parsing per flow.
Protocol parsers (each behind its own feature):
| Feature | What you get |
|---|---|
http |
HTTP/1.x request/response parsing — both HttpFactory (callback) and HttpParser (SessionParser) |
tls |
TLS handshake observer (ClientHello/ServerHello/Alert) — passive only, no decryption |
ja3 |
JA3 client fingerprinting (sub-feature of tls) |
dns |
DNS message parser, per-flow query/response correlator. UDP via DnsUdpParser (DatagramParser); TCP via DnsTcpParser (SessionParser, RFC 1035 §4.2.2 length-framed) |
pcap |
pcap file source for offline replay |
full |
All of the above |
Quick start
[]
= { = "0.1", = ["full"] }
use FiveTuple;
use PcapFlowSource;
use FlowEvent;
#
For HTTP / TLS / DNS examples and the typed SessionParser / DatagramParser
APIs, see examples/ and the per-module documentation on docs.rs.
Tokio integration
flowscope itself is runtime-free. To consume a live capture into a stream
of FlowEvent / SessionEvent via tokio, use netring:
use AsyncCapture;
use FiveTuple;
use HttpParser;
use StreamExt;
# async
Status
0.1.0 published — the API is settled. The core flow APIs
(FlowExtractor, FlowTracker, Reassembler) and
SessionParser / DatagramParser traits are stable; future
additions will be additive. Major breaking changes will require a
1.0 / 0.2 bump.
See docs/SESSION_GUIDE.md for the
decision-flow on which API to pick.
License
MIT OR Apache-2.0, your choice.