You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For MoQ to replace satellite/contribution links and hand off to IRDs, it needs the
stream-health telemetry operators expect from SRT / Zixi / RIST. ETSI TR 101 290 is the
industry yardstick for MPEG-TS integrity. This issue specifies what to monitor and where to surface it, so we can agree scope before building a skeleton. Part of #1799.
No implementation here, requirements only.
Where monitoring runs (design question)
The relay core is media-agnostic by design, so TS-level monitoring belongs at the TS
edges, not in the relay:
Ingest (e.g. moq-srt, moq-cli publish ts): validate the incoming contribution
feed and expose its health.
Media-aware lane (today): PAT/PMT/PCR/CC are regenerated by our muxer, so at
egress TR 101 290 mostly validates our own output (still valuable, catches muxer
regressions like the DTS issue fix(moq-mux): author DTS for B-frame MPEG-TS export (decode timeline not emitted) #1836). SI tables beyond PAT/PMT don't exist in this
lane, so those checks are N/A.
Opaque whole-mux lane (future, Option B): the original PCR cadence, CC, and SI
survive, so TR 101 290 validates the real contribution feed faithfully. This is where
full P1/P2/P3 conformance is meaningful.
Proposed: implement the checks once over a TS byte/packet stream, run them at both edges,
and surface results through the existing stats plumbing (cf. feat(libmoq, moq-ffi): expose connection stats #1783 connection stats, feat(moq-net,moq-cli): per-track stats + moq-cli --stats usage display #1671 per-track stats; moq-net/moq-relay stats modules).
Checks to implement (configurable thresholds; ETSI defaults)
Priority 1 (loss of these = not decodable)
TS_sync_loss (loss of sync after N consecutive bad sync bytes; default 5)
Per-check counters + last-event timestamp, per PID where applicable.
Aggregate per-stream "health" suitable for an operator dashboard (green/amber/red per
priority, akin to an SRT/Zixi stats panel).
Exposed through the existing stats API so relay/CLI consumers can read it; no new
bespoke transport.
Out of scope (for now)
Remediation (FEC, 2022-7) - separate egress work.
Full DVB SI semantic validation beyond presence/repetition/CRC.
A GUI; this is the metrics source, not a dashboard.
Open questions for discussion
Does monitoring live in a dedicated moq-ts/moq-monitor crate, or inside the
ingest/egress crates that already touch TS?
Which subset is MVP, P1 + the PCR/CC/PTS parts of P2?
Configuration surface (thresholds, which PIDs, sampling) - CLI flags vs config file.
A private reference implementation of these checks exists and can inform thresholds and
edge cases; happy to share it as background (not as a code drop).
(Written by Claude)
Goal
For MoQ to replace satellite/contribution links and hand off to IRDs, it needs the
stream-health telemetry operators expect from SRT / Zixi / RIST. ETSI TR 101 290 is the
industry yardstick for MPEG-TS integrity. This issue specifies what to monitor and
where to surface it, so we can agree scope before building a skeleton. Part of #1799.
No implementation here, requirements only.
Where monitoring runs (design question)
The relay core is media-agnostic by design, so TS-level monitoring belongs at the TS
edges, not in the relay:
moq-srt,moq-cli publish ts): validate the incoming contributionfeed and expose its health.
moq-srtm=request,moq-cli subscribe --format ts): validate theTS we hand downstream.
Important nuance from the two-lane model (Proposal: broadcast contribution profile for MoQ (faithful TS / satellite replacement) #1799):
egress TR 101 290 mostly validates our own output (still valuable, catches muxer
regressions like the DTS issue fix(moq-mux): author DTS for B-frame MPEG-TS export (decode timeline not emitted) #1836). SI tables beyond PAT/PMT don't exist in this
lane, so those checks are N/A.
survive, so TR 101 290 validates the real contribution feed faithfully. This is where
full P1/P2/P3 conformance is meaningful.
Proposed: implement the checks once over a TS byte/packet stream, run them at both edges,
and surface results through the existing stats plumbing (cf. feat(libmoq, moq-ffi): expose connection stats #1783 connection stats,
feat(moq-net,moq-cli): per-track stats +
moq-cli --statsusage display #1671 per-track stats;moq-net/moq-relaystats modules).Checks to implement (configurable thresholds; ETSI defaults)
Priority 1 (loss of these = not decodable)
Priority 2 (recommended continuous monitoring)
Priority 3 (application dependent; mostly opaque-lane only)
Surfacing
priority, akin to an SRT/Zixi stats panel).
bespoke transport.
Out of scope (for now)
Open questions for discussion
moq-ts/moq-monitorcrate, or inside theingest/egress crates that already touch TS?
A private reference implementation of these checks exists and can inform thresholds and
edge cases; happy to share it as background (not as a code drop).
(Written by Claude)