Skip to main content

Crate multiprobe

Crate multiprobe 

Source
Expand description

§multiprobe

Enterprise-grade multi-protocol network probing library with advanced path analytics.

§Features

§Protocol Probes

  • ICMP ping - Standard ICMP echo requests with timing
  • TCP probe - TCP connect probes to any port
  • UDP probe - UDP packet probes with response detection
  • TLS probe - TLS handshake timing and cipher analysis

§Path Discovery

  • Traceroute - Standard path discovery with hop-by-hop analysis
  • Paris Traceroute - ECMP-aware traceroute that maintains flow consistency
  • Multi-path discovery - Find all paths through load balancers

§Path Analytics

  • Jitter analysis - Statistical latency metrics (min/max/mean/p95/p99)
  • MTU Discovery - Path MTU detection with binary search
  • Bufferbloat detection - Measure latency under load
  • Packet reordering - Detect out-of-order delivery

§Classification

  • Path classification - Fingerprint network paths
  • Protocol Differential Score - Quantify cross-protocol behavior differences
  • Load balancing detection - Identify ECMP routing

§Quick Start

use multiprobe::{Probe, Protocol};

#[tokio::main]
async fn main() -> Result<(), multiprobe::Error> {
    // TCP probe with timing
    let result = Probe::tcp("example.com", 443).send().await?;
    println!("Latency: {:.2}ms", result.timing.total_ms());

    // Multi-protocol analysis
    let multi = Probe::multi("example.com")
        .tcp(80).tcp(443).udp(53)
        .send().await?;
    println!("Classification: {}", multi.classify());

    // Paris Traceroute (ECMP-aware)
    let trace = Probe::paris("example.com")
        .max_hops(30)
        .send().await?;
    println!("Load balancing: {}", trace.load_balancing);

    Ok(())
}

Re-exports§

pub use paris::ParisTraceResult;
pub use paris::ParisHop;
pub use paris::ParisOptions;
pub use paris::ParisMode;
pub use paris::FlowId;
pub use paris::LoadBalancingType;
pub use paris::paris_traceroute;
pub use paris::discover_paths;
pub use analytics::LatencyStats;
pub use analytics::PmtudResult;
pub use analytics::PmtudOptions;
pub use analytics::BufferbloatResult;
pub use analytics::BufferbloatGrade;
pub use analytics::BufferbloatOptions;
pub use analytics::ReorderingResult;
pub use analytics::measure_latency;
pub use analytics::discover_path_mtu;
pub use analytics::detect_bufferbloat;
pub use analytics::analyze_reordering;
pub use tls::TlsProbeResult;
pub use tls::TlsProbeOptions;
pub use tls::TlsTimingBreakdown;
pub use tls::TlsVersion;
pub use tls::probe_tls;
pub use tls::compare_tls;
pub use bidirectional::BidirectionalResult;
pub use bidirectional::BidirectionalOptions;
pub use bidirectional::BidirectionalServer;
pub use bidirectional::DirectionStats;
pub use bidirectional::probe_bidirectional;
pub use bidirectional::DEFAULT_PORT as BIDIRECTIONAL_PORT;
pub use divergence::DivergenceResult;
pub use divergence::DivergenceOptions;
pub use divergence::DivergenceHop;
pub use divergence::DivergenceProtocol;
pub use divergence::HopStatus;
pub use divergence::ProtocolHopResult;
pub use divergence::analyze_divergence;

Modules§

analytics
Advanced Path Analytics
bidirectional
Bidirectional path probing for detecting reverse-path asymmetry
divergence
Protocol Divergence Localization
paris
Paris Traceroute Implementation
tls
TLS Handshake Timing and Analysis

Structs§

Classifier
Classifier for network path behavior based on probe results
MultiProbeResult
Result of multi-protocol probe
Probe
Entry point for creating probes
ProbeOptions
Options for probe operations
ProbeResult
Result of a single probe operation
ProtocolDifferentialScore
Protocol Differential Score - quantifies behavioral differences across protocols
TimingBreakdown
Timing breakdown for a probe operation
TracerouteBuilder
Traceroute builder
TracerouteHop
A single hop in a traceroute
TracerouteOptions
Traceroute configuration
TracerouteResult
Complete traceroute result

Enums§

Error
Main error type for multiprobe operations
NetworkBehavior
Detected network behavior based on protocol analysis
PathClassification
Path classification based on multi-protocol probe results
Protocol
Protocol used for probing

Functions§

traceroute
Perform a traceroute to the target

Type Aliases§

Result
Result type alias for multiprobe operations