YASS results / UC2 — Continuous LOS Relay
Use Case

UC2 — Continuous LOS Relay

Abstract

Every satellite produces exactly one file at the start of the run. While the constellation is operating, we inject a continuous, randomised stream of hardware faults (network failures, bandwidth reductions, disk full / disk failure) on satellites and ground stations alike. The experiment measures how long it takes for every produced file to reach at least one ground station, and which fraction never makes it inside the time budget. Compares EDFS against TUS.

Success Condition

The run ends successfully once a single ground station holds at least 95% of the produced files. Every satellite produces exactly one file, so the file count x equals sat_count; the generator sets the ground-station receive-only agent to a fixed SUCCESS_AFTER_FILES = floor(0.95·x) − 1 (clamped to ≥ 1) with SUCCESS_BROADCAST=true. The first GS to reach that many distinct files publishes experiment/end-request{SUCCESS}, which the experiment-executor confirms against the authoritative crud-events stream and records as Success.

If max_duration (6h) fires first, the run ends TimedOut and the fraction of files that did arrive is the delivery-success rate — that partial-delivery outcome is itself a data point (see Main goal).

The − 1 margin pulls the effective threshold below 95% at small sat_count (6/8 at n08, 1/2 at n02) and converges to ~95% as the file count grows (94/100, 189/200).

Detailed description

At t=0 every satellite agent writes one file of fixed size and exits — so the number of distinct files in flight is sat_count. The seven ESTRACK ground stations run a multi-receiver agent that keeps logging RECEIVED events for every distinct file it sees and stays alive until the experiment ends.

A per-fsNode hardware-event schedule is generated up front and stamped into each Behaviour.hardwareEvents so the run is fully reproducible (the operator's CRD validation already ensures Destroy is rejected for recurring schedules; we use only the non-terminal fault types). Default fault intensity: on every fsNode, on every fault type, one occurrence every 5m (intervalJitterPercent: 50) lasting 30s-60s (durationJitterPercent: 50). This produces "roughly 10-15% of fsNodes in some kind of fault state at any given moment" — degraded but not crippled.

Fault menu (no Destroy here; that's UC4's domain):

The run ends when (a) all files are received by at least one GS, or (b) the maxDuration (default 6h) timer fires — whichever comes first. The latter case is itself a data point.

Main goal

Quantify delivery completeness and time-to-all-delivered under realistic operational faults. The hypothesis is:

KPI: delivery success rate ≥ 95% for EDFS at every sat_count; TUS is expected to fall below.

Parameters

Parameter Values Notes
engine tus, edfs Both engines are tested under the same fault schedule.
priority low, default, high Set via the producer agent's FILE_PRIORITY.
sat_count 1, 2, 8, 21, 100, 200 Same Walker-like sweep as UC1.
RF 1, 3, 5 — EDFS only Probes "is more replication actually helpful here?"
gs_count fixed at 7 (ESTRACK)
file_size 32M One regime per UC2 run; we sweep RF/sat_count rather than file size to keep the deliverable set focused.
max_duration 6h Tight enough that "still in flight at the deadline" actually counts against the success rate.

TUS parameter coverage. TUS has no notion of file priority or replication factor — priority and RF are ignored by the engine. For TUS we therefore only sweep (sat_count) (under the same per-run fault schedule), pin priority=default and omit RF. Each TUS run is compared against the full (priority, RF) matrix of EDFS runs at the same sat_count and the same fault seed.

Assumptions

Additional metrics

Beyond yass_file_delivery_seconds histogram (filtered to "any-GS delivery"):

Charts

Delivery success (% of produced files reaching a GA): EDFS vs TUS by constellation size (EDFS = default priority, mean over RF). Dashed line = success threshold (white-background copy: charts/delivery_pct_compare_light.png)
Delivery success (% of produced files reaching a GA): EDFS vs TUS by constellation size (EDFS = default priority, mean over RF). Dashed line = success threshold (white-background copy: charts/delivery_pct_compare_light.png)

Variants (20)

variantenginepriorityRFsatproducedfiles→GSall?lastGS(s)statusdelivered %
uc2-edfs-pdefault-n01-rf3 edfsdefault3111yes754 Success 100%
uc2-edfs-pdefault-n02-rf3 edfsdefault3200non/a Failed 0%
uc2-edfs-pdefault-n08-rf1 edfsdefault1861no9 Failed 12%
uc2-edfs-pdefault-n08-rf3 edfsdefault3866yes1283 Failed 75%
uc2-edfs-pdefault-n08-rf5 edfsdefault5874no837 Failed 50%
uc2-edfs-phigh-n08-rf3 edfshigh3800non/a Failed 0%
uc2-edfs-plow-n08-rf3 edfslow3866yes6309 Failed 75%
uc2-edfs-pdefault-n21-rf3 edfsdefault3212120no833 Success 95%
uc2-edfs-pdefault-n100-rf1 edfsdefault11001005no283 Failed 5%
uc2-edfs-pdefault-n100-rf3 edfsdefault31001005no548 Failed 5%
uc2-edfs-pdefault-n100-rf5 edfsdefault51004646yes1836 Failed 46%
uc2-edfs-phigh-n100-rf3 edfshigh310030100yes2290 Failed 30%
uc2-edfs-plow-n100-rf3 edfslow310010016no21076 Failed 16%
uc2-edfs-pdefault-n200-rf3 edfsdefault3200200200yes4424 Success 100%
uc2-tus-n01 tus-111yes742 Success 100%
uc2-tus-n02 tus-222yes2817 Success 100%
uc2-tus-n08 tus-888yes4122 Success 100%
uc2-tus-n21 tus-211919yes4961 Success 90%
uc2-tus-n100 tus-10000non/a Failed 0%
uc2-tus-n200 tus-20000non/a Failed 0%