Skip to content

TR 101 290 monitoring: requirements (broadcast/contribution health metrics) #1838

Description

@t0ms

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:

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)
  • Sync_byte_error (sync byte != 0x47)
  • PAT_error / PAT_error_2 (PAT absent, repetition > 0.5 s, PID 0 wrong table_id, scrambled)
  • Continuity_count_error (CC discontinuity / wrong increment / illegal duplicate)
  • PMT_error / PMT_error_2 (PMT repetition > 0.5 s, scrambled)
  • PID_error (a referenced PID not seen within a user-defined window)

Priority 2 (recommended continuous monitoring)

  • Transport_error (TEI bit set)
  • CRC_error (PAT/PMT/CAT/NIT/EIT/BAT/SDT CRC)
  • PCR_repetition_error (PCR interval > 40 ms)
  • PCR_discontinuity_indicator_error (> 100 ms jump w/o discontinuity_indicator)
  • PCR_accuracy_error (PCR drift outside +/- 500 ns)
  • PTS_error (PTS repetition interval > 700 ms)
  • CAT_error (CAT required when scrambling present)

Priority 3 (application dependent; mostly opaque-lane only)

  • NIT/SDT/EIT/TDT/RST_error, SI_repetition_error, unreferenced_PID

Surfacing

  • 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

  1. Does monitoring live in a dedicated moq-ts/moq-monitor crate, or inside the
    ingest/egress crates that already touch TS?
  2. Which subset is MVP, P1 + the PCR/CC/PTS parts of P2?
  3. 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions