One satellite produces one large file. We re-run the same scenario for each
of the three file priorities (low, default, high) on the same
constellation topology and measure how long it takes the file to reach at
least one ground station. The hypothesis is that the EDFS engine treats
high-priority files preferentially (faster replication, less aggressive
back-off under congestion), so a high-priority file should arrive
measurably faster than a low-priority one on otherwise identical runs.
This use case targets only EDFS — TUS has no notion of file priority on the wire, so the comparison is internal to EDFS, not engine-vs-engine.
Same mechanism as UC1: the run ends successfully the moment the first file reaches any ground station.
A single producer satellite writes one large file. The producer's agent
sets FILE_PRIORITY to one of low, default, high and writes a
.priority sentinel that fs_engine_wrapper propagates into the
file's Attributes map (read by EDFS at replication time).
For each constellation size we run three back-to-back experiments — one per
priority value — with deterministic simulationStartTime so the orbital
pass schedule and the GS visibility windows are bit-identical between runs.
Anything different that we observe in time-to-first-delivery is then
attributable to the priority handling, not orbital luck.
The seven ESTRACK ground stations are the receivers; each terminates on
the first RECEIVED with the configured END_ON_ANY=true.
Establish a quantitative answer to: does EDFS's priority handling actually move the needle? Specifically:
high file is statistically lower than that
of a low file at every sat_count we test.high < default < low is preserved at every sat_count
(monotonic).KPI: time_to_first_GS_delivery — at sat_count ≥ 8,
first_GS(high) ≤ 0.80 × first_GS(low) (high-priority delivers at least
20% faster than low — meaningful routing-preference, not noise).
Secondary: priority monotonicity first_GS(high) ≤ first_GS(default) ≤
first_GS(low) at every sat_count.
| Parameter | Values | Notes |
|---|---|---|
engine |
edfs only |
TUS has no priority semantics — out of scope. |
priority |
low, default, high |
The variable of interest. |
sat_count |
1, 2, 8, 21, 100, 200 | Same Walker sweep as UC1. |
RF |
fixed at 3 | A single RF value isolates the priority effect; sweeping both would confound the analysis. |
gs_count |
fixed at 7 (ESTRACK) | |
file_size |
256M (spec: 1G) |
Executed at 256M. The UC was specified at 1G — "large" so the transfer spans many passes and the priority weighting becomes visible (a tiny file delivers in one bounce, hiding priority). At 256M the transfer is ~4× shorter, weakening the priority signal: scope UC3 conclusions to the "256M regime" or re-run at 1G. |
simulationStartTime |
fixed across the three priority runs of one sat_count | Cancels orbital luck. Use the same pinned epoch as UC1 (2026-05-16T23:59:00.000Z) unless a sat_count needs a different one. |
max_duration |
4h |
Generous: large file × low priority × no faults could still take a while. |
HardwareEvent (e.g. NetworkFailure or
NetworkBandwidthReduced) on one of the two stations.Beyond the headline yass_file_delivery_seconds (with the priority label
exposed by the producer's agent on its own metrics):
rate(yass_network_tx_bytes_total) over the
producer's run, plotted side-by-side per priority. We expect higher
effective throughput for high.sum(yass_network_tx_bytes_total)
over the whole constellation. We expect high to ship roughly the same
byte volume as low (the file is the same size); a meaningful
difference here would mean the priority handling is also affecting
redundant transmissions, which is worth flagging.edfs_block):
for the same file at different priorities, how quickly does each block
get pulled by peers? Direct signal of routing preference.
| variant | engine | size | priority | sat | RF | firstGS(s) | state |
|---|---|---|---|---|---|---|---|
| uc3-edfs-pdefault-n01-rf3 | edfs | 256M | default | 1 | 3 | 854 | Success |
| uc3-edfs-phigh-n01-rf3 | edfs | 256M | high | 1 | 3 | 854 | Success |
| uc3-edfs-plow-n01-rf3 | edfs | 256M | low | 1 | 3 | 855 | Success |
| uc3-edfs-pdefault-n02-rf3 | edfs | 256M | default | 2 | 3 | 839 | Success |
| uc3-edfs-phigh-n02-rf3 | edfs | 256M | high | 2 | 3 | 862 | Success |
| uc3-edfs-plow-n02-rf3 | edfs | 256M | low | 2 | 3 | 846 | Success |
| uc3-edfs-pdefault-n08-rf3 | edfs | 256M | default | 8 | 3 | 844 | Success |
| uc3-edfs-phigh-n08-rf3 | edfs | 256M | high | 8 | 3 | 849 | Success |
| uc3-edfs-plow-n08-rf3 | edfs | 256M | low | 8 | 3 | 865 | Success |
| uc3-edfs-pdefault-n21-rf3 | edfs | 256M | default | 21 | 3 | 844 | Success |
| uc3-edfs-phigh-n21-rf3 | edfs | 256M | high | 21 | 3 | 883 | Success |
| uc3-edfs-plow-n21-rf3 | edfs | 256M | low | 21 | 3 | 846 | Success |
| uc3-edfs-pdefault-n100-rf3 | edfs | 256M | default | 100 | 3 | 234 | Success |
| uc3-edfs-phigh-n100-rf3 | edfs | 256M | high | 100 | 3 | 705 | Success |
| uc3-edfs-plow-n100-rf3 | edfs | 256M | low | 100 | 3 | 887 | Success |
| uc3-edfs-pdefault-n200-rf3 | edfs | 256M | default | 200 | 3 | 409 | Success |
| uc3-edfs-phigh-n200-rf3 | edfs | 256M | high | 200 | 3 | 338 | Success |
| uc3-edfs-plow-n200-rf3 | edfs | 256M | low | 200 | 3 | 877 | Success |