pub mod aggregator;
mod flow_hash;
mod manager;
mod nat;
mod path_discovery;
mod scheduler;
mod throughput;
mod uplink;
pub use aggregator::{
AggregationMode, AggregatorConfig, AggregatorStats, BandwidthAggregator, ReorderBuffer,
ReorderStats,
};
pub use manager::{MultipathConfig, MultipathEvent, MultipathManager};
pub use scheduler::{Scheduler, SchedulerConfig, SchedulingStrategy};
pub use throughput::{
BbrState, BdpEstimator, EffectiveThroughput, FrameBatcher, PmtudState, ThroughputConfig,
ThroughputOptimizer, ThroughputSummary, DEFAULT_MTU, MAX_MTU, MIN_MTU,
};
pub use uplink::{ConnectionParams, Uplink, UplinkConfig, UplinkState};
pub use flow_hash::{
calculate_flow_hash, flow_hash_from_addrs, EcmpPathEnumerator, FlowHashBucket, FlowId,
};
pub use nat::{
compute_udp_checksum, IpIdMarker, NatDetectionState, NatId, NatProbe, NatProbeResponse,
NatType, ProbeMatcher, UplinkNatState,
};
pub use path_discovery::{
DiscoveredPath, EcmpFlowSelector, Hop, PathDiscovery, PathDiscoveryConfig, PathDiversity,
};
use std::time::Duration;
pub const DEFAULT_PROBE_INTERVAL: Duration = Duration::from_secs(1);
pub const DEFAULT_UPLINK_TIMEOUT: Duration = Duration::from_secs(10);
pub const MIN_RTT_SAMPLES: usize = 3;
pub const EMA_ALPHA: f64 = 0.2;