feat(measurement): add IRTT engine

This commit is contained in:
Nils Andreas Svee committed 2026-10-13 00:42:58 +07:00
1 parent 8c923f373d
commit 8dbae6df91
5 files changed
+475 -4

No files matched your search

+10 -3
View File
@@ -22,6 +22,7 @@ mod util;
use crate::baseliner::Baseliner;
use crate::controller::Controller;
use crate::measurement::icmp::IcmpEngine;
use crate::measurement::irtt::IrttEngine;
use crate::metrics::{Metric, Metrics, MetricsSender};
use crate::platform::{TrafficControlBackend, traffic_control_backend, warn_platform_limitations};
use crate::ratecontroller::Ratecontroller;
@@ -236,6 +237,7 @@ fn run(settings: &Settings) -> anyhow::Result<()> {
let (control_snapshot_tx, control_snapshot_rx) = flume::unbounded();
let (error_tx, error_rx) = flume::unbounded::<anyhow::Error>();
let (icmp_binding_tx, icmp_binding_rx) = flume::unbounded();
let (irtt_binding_tx, irtt_binding_rx) = flume::unbounded();
let (measurement_tx, measurement_rx) = flume::unbounded();
let (reflector_tx, reflector_rx) = flume::unbounded();
let (reselect_tx, reselect_rx) = flume::bounded(1);
@@ -247,17 +249,22 @@ fn run(settings: &Settings) -> anyhow::Result<()> {
};
let controller = Controller::new(reflector_rx, icmp_binding_tx);
let engine = {
let icmp_engine = {
let _guard = rt.enter();
IcmpEngine::new(
start_time,
&settings.network,
measurement_tx,
measurement_tx.clone(),
icmp_binding_rx,
)?
};
let (_irtt_task, irtt_engine) = {
let _guard = rt.enter();
IrttEngine::new(start_time, measurement_tx, irtt_binding_rx)?
};
spawn_task(&rt, &error_tx, engine.run());
spawn_task(&rt, &error_tx, icmp_engine.run());
spawn_task(&rt, &error_tx, irtt_engine.run());
let dropped = Arc::new(AtomicU32::new(0));