Replies: 1 comment
Flow rendezvous across nodes and platformsThis extends question 2 in the RFC: how does a selected flow become readable in the viewer's domain when the writer is elsewhere? The single-node IS-05 decision stays as written. This follow-up asks whether and how dmfdeploy should add cross-node replication, and what boundary would let a separately managed platform participate. What we know
Candidate directionEvaluate mxl-k8s as an optional Media Exchange component inside a dmfdeploy-managed cluster. Keep NMOS connection intent, the function lifecycle, Kubernetes scheduling, and flow replication under explicit ownership. Compare it with the existing demo and a no-cross-node baseline before choosing an implementation. This is an evaluation proposal. The current operator decision still defers adoption in v0.2. The evaluation would not itself change that decision, the v0.1 freeze, or the committed AWX actuator. An adopted design may need an ADR-0017 amendment and a review of the AWX/NetBox boundaries in ADR-0037. Questions
Evidence before a decisionOn an isolated two-node ARM64 k3s environment, compare a pinned mxl-k8s release with the existing TCP demo. Record image digests and MXL versions, CPU and memory cost, placement and isolation, flow visibility, mirror readiness, writer/gateway restart recovery, teardown and failure reporting. Test an NMOS A/B selection against a flow that must be mirrored, including the case where replication cannot be established. A separate RDMA test needs suitable hardware and a stated network profile; no RDMA or cross-vendor claim follows from the TCP test. The separate inter-platform question needs a named partner and a concrete interface to test. A standards-based media connection is one candidate. Direct Fabrics needs an agreed setup mechanism and a cross-implementation test before any interoperability claim. What evidence or constraints would change this direction? In particular, is there already a suitable platform-level interface in the MXL or AMWA work that this proposal should follow? |
Uh oh!
There was an error while loading. Please reload this page.
Summary
dmfdeploy is an independent, open prototype of a Dynamic Media Facility. It proves its claims with conformance checks against published specifications and shares what it learns upstream as evidence. It does not call itself a reference.
This RFC proposes how the v0.2 workload switches a viewer between two MXL flows with NMOS IS-05. It proposes a small nmos-cpp node beside each MXL source and the viewer, and an MXL-capable controller that sends the IS-05 requests. It also proposes a test that can prove the design wrong before anyone builds the rest.
Tracking issues: #624 (the test), #627, #628, #629 (the pieces). The milestone outcome is in docs/WORKING-MODEL.md.
The problem
The v0.2 outcome is a multi-function workload switched by NMOS IS-05. Today the console switches a source through an AWX playbook that reconnects and re-points the pod. That path works, but no receiver is controlled through IS-05. A control-plane matrix built on it would look like NMOS and behave like a restart.
BCP-007-03 defines how IS-04 and IS-05 describe MXL. In that spec:
urn:x-nmos:transport:mxl.mxl_domain_idandmxl_flow_idparameters./transportfileendpoint returns 404.master_enabletrue starts the MXL read.The project needs a design that follows this spec, runs on one ARM64 node, and keeps the shipped reconnect path as a fallback.
Proposed decision
Use a small dmfdeploy-owned nmos-cpp node (a sidecar) beside each existing MXL source and beside the viewer. Pair it with an MXL-capable NMOS controller, pinned by image digest and source commit. #629 records the controller choice.
The console's new
nmos-is05actuator sends the controller's authenticatedmakeConnectioncommand. It never sends a PATCH to the receiver itself. The console and the controller UI then drive the same chain:Details:
Why the process restarts
The viewer reads its flow ID once, when it starts. We expect to change the ID by restarting the preview process, not by retuning it while it plays. We have not confirmed this against the MXL GStreamer elements, so the restart is part of what #624 tests.
Work breakdown
The items depend on each other in this order. Each has an acceptance test in its issue.
/constraints,/stagedand/activevalidate against IS-05 v1.2.nmos-is05actuator./active. A failed switch shows asfailed_rollback_required, never as success.Items 6 to 8 count toward the v0.2 outcome only after role gating (#186, #389, #436) and per-workload operation scoping land.
Alternatives considered
Consequences
What would prove this wrong
The design is wrong if nmos-cpp accepts an MXL PATCH and reports it in
/active, but the sidecar cannot reliably drive the existing consumer to the selected flow, or the preview restart is too slow or too unreliable. Then the control plane only looks compliant.#624 tests this first. On one ARM64 node, run the new sidecar, two existing test-pattern sources and the current viewer in one MXL domain. Send the IS-05 PATCH directly to the receiver, select flow A, then flow B, and assert within a bounded interval:
/stagedand the resolved/activehold the selectedmxl_domain_idandmxl_flow_id.A negative case changes
/activewithout the supervisor and must fail the preview assertion. If #624 fails, we stop and decide again. We do not switch designs automatically. The test has a time box of about five working days.The AMWA
nmos-testingsuites for IS-05 and BCP-007-03 check API behavior only. We plan to run them as a second gate, in warn mode first, pinned by image digest because the BCP-007-03 suites have no tagged release. These decisions are recorded on #624.Questions for discussion
/activeand send PATCH requests to the receiver's control address?How this gets decided
Discussion here shapes the design. After #624 reports, a decision record (ADR) captures the outcome, following the RFC to ADR path. Related decisions: ADR-0046 and ADR-0047.
Evidence
All reactions