Expand description
flowscope — passive flow & session tracking for packet capture.
Cross-platform, runtime-free library for observing what’s
happening on the wire. Pair with any source of &[u8] frames:
netring (Linux AF_PACKET / AF_XDP), pcap files, tun-tap,
eBPF, embedded.
§What’s here
Core (always on):
PacketView/Timestamp— the abstract input.FlowExtractor— turn a frame into a flow descriptor.FlowTracker— bidirectional flow accounting + TCP state machine + idle/eviction policy. Hot-cache fast path on monoflow workloads.Reassembler— sync per-(flow, side) TCP byte stream hook. Optional per-side buffer cap withOverflowPolicy(sliding-window or drop-flow).SessionParser/DatagramParser— typed L7 message parsing per flow.FlowDriver— sync wrapper combining the tracker with a reassembler factory; optional anomaly emission viaFlowDriver::with_emit_anomalies.FlowSessionDriver— sync mirror of netring’ssession_streamfor offline / no-tokio session-event consumers.
Built-in extractors and decap combinators (extractors feature):
extract::FiveTuple,extract::IpPair,extract::MacPairextract::StripVlan,extract::StripMpls,extract::InnerVxlan,extract::InnerGtpU,extract::InnerGre,extract::AutoDetectEncap,extract::FlowLabel
Protocol parsers (each behind its own feature):
| Feature | Module | What you get |
|---|---|---|
http | http | HTTP/1.x request/response parser |
tls | tls | TLS handshake observer (ClientHello/ServerHello/Alert), optional JA3 |
dns | dns | DNS-over-UDP and DNS-over-TCP message parsers + query/response correlator |
pcap | pcap | pcap file source for offline replay |
Observability (each behind its own feature, zero-cost when off):
| Feature | What you get |
|---|---|
metrics | Prometheus / OpenTelemetry counters, gauges, histograms (see obs) |
tracing | Structured events on flow lifecycle + anomalies |
§Tokio integration
For async iteration over flow / session / datagram events, see
netring’s AsyncCapture::flow_stream
/ .session_stream / .datagram_stream. Those depend on this
crate’s traits. The sync analogue for session_stream is
FlowSessionDriver.
Re-exports§
pub use extractor::Extracted;pub use extractor::FlowExtractor;pub use extractor::L4Proto;pub use extractor::Orientation;pub use extractor::TcpFlags;pub use extractor::TcpInfo;pub use event::AnomalyKind;trackerpub use event::EndReason;trackerpub use event::FlowEvent;trackerpub use event::FlowSide;trackerpub use event::FlowState;trackerpub use event::FlowStats;trackerpub use event::OverflowPolicy;trackerpub use history::HistoryString;trackerpub use tracker::FlowEntry;trackerpub use tracker::FlowEvents;trackerpub use tracker::FlowTracker;trackerpub use tracker::FlowTrackerConfig;trackerpub use tracker::FlowTrackerStats;trackerpub use driver::FlowDriver;reassemblerpub use reassembler::BufferedReassembler;reassemblerpub use reassembler::BufferedReassemblerFactory;reassemblerpub use reassembler::Reassembler;reassemblerpub use reassembler::ReassemblerFactory;reassemblerpub use session::DatagramParser;sessionpub use session::DatagramParserFactory;sessionpub use session::SessionEvent;sessionpub use session::SessionParser;sessionpub use session::SessionParserFactory;sessionpub use session_driver::FlowSessionDriver;reassemblerandsession
Modules§
- dns
dns - Passive DNS observer (UDP/53).
- driver
reassembler FlowDriver— sync wrapper that bundles aFlowTrackerwith aReassemblerFactoryand dispatches TCP segments to the right reassembler.- event
tracker - Events emitted by
crate::FlowTrackeras packets flow through it. - extract
extractors - Built-in flow extractors and decap combinators.
- extractor
FlowExtractortrait and its supporting types.- history
tracker - Compact lifecycle representation à la Zeek’s
conn.loghistory. - http
http - Passive HTTP/1.x observer.
- obs
tracker - Observability hooks —
metricscounters andtracingevents. - pcap
pcap - pcap file source for offline replay.
- reassembler
reassembler - Sync TCP reassembly hooks.
- session
session - Pluggable L7 message parsers.
- session_
driver reassemblerandsession - Sync companion to netring’s async
session_stream. Bundles aFlowTracker+ per-(flow, side)BufferedReassembler+ per- flowSessionParserand yieldsSessionEvents. - tcp_
state trackerand (test-helpers) - TCP state machine used internally by
crate::FlowTracker. - tls
tls - Passive TLS handshake observer.
- tracker
tracker FlowTracker— a hashtable of live flows with a TCP state machine and idle-timeout sweep.
Structs§
- Packet
View - What a
crate::FlowExtractoris given. - Timestamp
- Nanosecond-precision kernel timestamp.