mod uplink;
mod scheduler;
mod manager;
mod flow_hash;
mod nat;
mod path_discovery;
mod throughput;
pub mod aggregator;
pub use uplink::{Uplink, UplinkConfig, UplinkState, ConnectionParams};
pub use scheduler::{Scheduler, SchedulerConfig, SchedulingStrategy};
pub use manager::{MultipathManager, MultipathConfig, MultipathEvent};
pub use aggregator::{
BandwidthAggregator, AggregatorConfig, AggregationMode,
ReorderBuffer, ReorderStats, AggregatorStats,
};
pub use throughput::{
ThroughputOptimizer, ThroughputConfig, ThroughputSummary,
EffectiveThroughput, BdpEstimator, PmtudState, BbrState,
FrameBatcher, DEFAULT_MTU, MIN_MTU, MAX_MTU,
};
pub use flow_hash::{
FlowId, FlowHashBucket, EcmpPathEnumerator,
calculate_flow_hash, flow_hash_from_addrs,
};
pub use nat::{
NatId, NatType, NatDetectionState, UplinkNatState,
IpIdMarker, NatProbe, NatProbeResponse, ProbeMatcher,
compute_udp_checksum,
};
pub use path_discovery::{
PathDiscovery, PathDiscoveryConfig, PathDiversity,
DiscoveredPath, Hop, EcmpFlowSelector,
};
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;