diff --git a/rs/moq-shaper/README.md b/rs/moq-shaper/README.md index 6a746bf0790..6385aefa00f 100644 --- a/rs/moq-shaper/README.md +++ b/rs/moq-shaper/README.md @@ -148,7 +148,7 @@ delay = "5ms" ``` `--profile` takes a file's path, or one of the built-ins in `profiles/`, embedded in the binary. The -audio-quality lane (`test/audio-quality/`) uses `bursty` and `step`, plus its own flag profiles. +audio-quality lane (`test/audio-quality/`) uses `bursty`, `step`, and `congestion`, plus its own flag profiles. | Name | What it models | | --- | --- | @@ -156,6 +156,7 @@ audio-quality lane (`test/audio-quality/`) uses `bursty` and `step`, plus its ow | `mild` | A healthy wired LAN: 5ms delay, 5ms sigma, in order. | | `bursty` | A paced hop: seven datagrams per 160ms window, released together. | | `step` | 5ms for thirty seconds, then 60ms, with no recovery. | +| `congestion` | A 1 Mbit/s downlink behind a 1s queue that collapses to 16 kbit/s from 25s to 26.5s. | | `cellular-step` | A 2 Mbit/s uplink behind a 500ms queue that drops to 500 kbit/s at 10s and recovers at 20s. | | `cellular-bursty` | A 2 Mbit/s uplink released in scheduler grants of five datagrams or 20ms, at 1 Mbit/s from 10s to 20s. | | `cellular-deep` | A 1 Mbit/s uplink behind a 2s queue that drops to 300 kbit/s at 10s and recovers at 20s. | diff --git a/test/audio-quality/congestion.toml b/rs/moq-shaper/profiles/congestion.toml similarity index 100% rename from test/audio-quality/congestion.toml rename to rs/moq-shaper/profiles/congestion.toml diff --git a/rs/moq-shaper/src/preset.rs b/rs/moq-shaper/src/preset.rs index 0952fda6fca..39a8d850832 100644 --- a/rs/moq-shaper/src/preset.rs +++ b/rs/moq-shaper/src/preset.rs @@ -11,6 +11,7 @@ const BUILTIN: &[(&str, &str)] = &[ ("mild", include_str!("../profiles/mild.toml")), ("bursty", include_str!("../profiles/bursty.toml")), ("step", include_str!("../profiles/step.toml")), + ("congestion", include_str!("../profiles/congestion.toml")), ("cellular-step", include_str!("../profiles/cellular-step.toml")), ("cellular-bursty", include_str!("../profiles/cellular-bursty.toml")), ("cellular-deep", include_str!("../profiles/cellular-deep.toml")), diff --git a/test/audio-quality/README.md b/test/audio-quality/README.md index 31e2595447e..9327afc3bf3 100644 --- a/test/audio-quality/README.md +++ b/test/audio-quality/README.md @@ -50,7 +50,7 @@ response would make a failure hard to attribute. The `mild` and `wide` profiles shaper startup, before the page connects; the driver gives up on a row with no audio 20 s in, so the measured window starts before the step, and `--duration` must exceed 30 s so playback spans it. -`congestion` ([`congestion.toml`](congestion.toml)) is a queue that fills until it drops, as a +`congestion` ([`congestion.toml`](../../rs/moq-shaper/profiles/congestion.toml), built into moq-shaper) is a queue that fills until it drops, as a congested link's does, rather than random loss. The tone needs about 140 kbit/s, so for a second and a half the queue holds its full second of wait and drops the rest, longer than any row's target. When the rate returns, the transport delivers the backlog, the queue's and every retransmit. The @@ -388,7 +388,6 @@ run.sh builds, starts the relay and publishers, runs each row be ../lib/pulse.py the native rows' private PulseAudio null sink record.sh records traces/, by hand relay.toml anonymous relay, self-signed cert -congestion.toml the congestion profile's shaper treatment budgets.json a ceiling per metric per row traces/ recorded arrivals, one replay profile each clients/js/ diff --git a/test/audio-quality/run.sh b/test/audio-quality/run.sh index 6fd28fcc849..59c5845146f 100755 --- a/test/audio-quality/run.sh +++ b/test/audio-quality/run.sh @@ -178,8 +178,7 @@ shaper_of() { near-zero | fixed-250) ;; mild) echo "--delay 5ms --jitter 5ms --jitter-model gaussian --shared" ;; wide) echo "--delay 40ms --jitter 40ms --jitter-model gaussian --shared" ;; - bursty | step) echo "--profile $1" ;; - congestion) echo "--profile $AQ_DIR/congestion.toml" ;; + bursty | step | congestion) echo "--profile $1" ;; esac }