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;

Modules§

analytics
Advanced Path Analytics
bidirectional
Bidirectional path probing for detecting reverse-path asymmetry
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