Broadcast Standards: The NMOS Standards Deep Dive

An introduction to and summary of the NMOS standards. Although originally created to supplement ST 2110 architectures, NMOS standards are becoming increasingly relevant in practical implementations of software defined infrastructure.

This article provides an extensive reference resource for broadcast system designers, engineers and the community of product designers leveraging the NMOS standards to create effecitve, robust systems.

Introducing AMWA

The Networked Media Open Specifications (NMOS) specifications have been developed and published by the Advanced Media Workflow Association (AMWA). This is a broadcast industry association founded in 2000. AMWA collaborates with other organizations to create standards and guidance. Use them to help migration from conventional broadcast hardware infrastructure to an IP based solution. Prior to NMOS, AMWA developed other technology solutions and continues to work on new initiatives such as IPMX and ProAV:

  • FIMS - Framework for Interoperable Media Service provides a framework for integrating hardware and software in TV production environments.
  • AAF - The Advanced Authoring Format is a file format designed to carry multimedia assets. A sub-set of AAF is often carried in SMPTE MXF file containers which are designed to be portable across a variety of NLE systems. MXF is derived from the earlier Open Media Framework Interchange file format.
  • MXF & AAF - Specifications that facilitate the adoption of AAF and MXF files and how best to deploy them from production to distribution.

ST 2110 Benefits From NMOS Support

When SMPTE introduced ST 2110, the original design was scoped around the delivery of SDI video over an IP network. The main focus was transport and there was no support for routing and resource management. Revisions in 2022 stabilized and extended the scope. Other parts continue to be published occasionally as they are completed.

Some early detractors criticized ST 2110 claiming that it was incomplete. Standards often rely on other documents to provide additional context and coverage. This avoids the tendency for a standard to become too large and unwieldy and avoids re-inventing too many wheels. ST 2110 benefits from the complimentary NMOS standards developed by AMWA. Taking both into consideration creates a much more complete picture. ST 2110 is an essence transport technology while NMOS is the supporting metadata framework that helps to manage and deploy it.

About NMOS

NMOS describes features, message protocols and formats for the control plane in an IP enabled infrastructure. It is not a controller in itself. NMOS facilitates the interoperation of the connected media devices and software. This is fundamental to connecting senders and receivers in your ST 2110 environment.

Modern hardware with an embedded Ethernet RJ45 connector often has a web-based administration user interface (UI). Adding NMOS support is an incremental change to provide the additional URL endpoints to support the protocol handlers. Software based products can run in virtualized containers that host a web server to support the NMOS handlers. Some work is necessary to integrate the back end of the web server so the page requests can interact with the hardware or internal software services.

NMOS is an open-source solution designed to work with locally connected devices or cloud-based services. This open-source nature avoids vendor lock-in which improves the modular nature of your architecture. Solutions from a variety of vendors are more easily integrated because they behave in a consistent way. It also allows alternative vendor solutions to be plugged in as replacements when your needs change or when scaling is required.

There are many benefits to using AMWA NMOS protocols in your IP studio architecture:

  • There is now no need for manufacturers of hardware or software to develop proprietary protocols. This avoids locking customers into a single manufacturer.
  • Easier integration of products from different manufacturers.
  • Customers can choose the best solution for each part of the workflow.
  • Status and health monitoring is easier and can operate through a unified user interface.

Consult EBU document Tech 3371 to see how NMOS integrates into the Technology Pyramid for implementing Media Nodes. The JT-NM Technical Recommendation TR-1001 covers additional related material.

Although the NMOS specifications were initially created to supplement ST 2110 architectures, they are relevant to other activities outside of a ST 2110 environment. NMOS facilitates the management of IPMX, ProAV and AES67 resources as well as ST 2110. It is also an integral part of creating effective software defined systems, and workflows that leverage cloud compute infrastructure.

Drivers & Abstraction Layers

A significant proportion of software development normalizes disparate hardware and software interfaces. Low-level device drivers convert proprietary API calls that drive a hardware interface so that the application layer can interact with them using the same functional calls. Additional layers such as Metal in the macOS environment provide higher-level capabilities and completely hide the underlying hardware and software implementation.

Sometimes a driver will simulate features not supported by the target device in order to support the top-level API. This extends the life of older legacy devices that have been replaced by modern counterparts.

NMOS does a similar job to a device driver by providing a common API to proprietary hardware and software used for media delivery. This greatly simplifies the application layer and constructing dashboard consoles that exploit NMOS will be significantly easier.

Resource Management

NMOS manages a central inventory of the available and reachable resources across your infrastructure. Resources include the following:

  • Sources.
  • Flows.
  • Senders.
  • Receivers.
  • Nodes.
  • Controls.
  • Services.

Having an inventory makes it easier to find devices. Request their metadata and determine whether they support send or receive behaviors. Drilling down into the available detail reveals which media formats are supported. This level of granularity helps build flexible user interface consoles. Given a choice of media type and format, present the compatible senders and receivers to the user for selection. Streams can be gathered using a natural grouping to match the correct audio stream to a video, or possibly choose one of several alternatives for localization. Devices can be labelled so they are easy to find again later. Tag them to apply searches and filters. More detailed descriptive text attached to a device can describe special instructions for using it.

Refer to these NMOS documents for more information:

DocumentStatusDescription
IS-041.3.3Discovery & Registration.
IS-091.0.0System Parameters.
IS-13DraftAnnotation.
BCP-002-011.0.0Natural Grouping.
BCP-002-021.0.0Asset Distinguishing Information.
INFO-004DraftImplementation Guide for DNS-SD.
INFO-005DraftImplementation Guide for NMOS Controllers.

Signal Management

Having identified the devices, managing the signals routed between them is necessary. A node graph system would be an intuitive way to design a UI for this. Connect the senders and receivers to indicate the flows.

Joining senders to receivers is typically done via a virtualized matrix. This allows the same output to be routed to one or more inputs on other devices. This is conceptually the same as a hardware matrix switcher but uses IP routing instead.

NMOS manages these media types:

  • Video streams.
  • Multiple audio streams.
  • Timed-text streams.
  • Other timed metadata.
  • GPIO, events and triggers.
  • Tally information for control consoles.

Analytics and logging can take place in the NMOS environment to generate metadata for later performance and traffic studies.

Some of this activity may happen inside the devices whilst other things are transported between them.

NMOS can simplify the deployment of multicasting. Previously, this would need to be configured inside a device but NMOS externalizes it.

NMOS manages senders and receivers. Since it is just routing information from sources to destinations, it can control the routing of data and event triggers as well as media. A switch on a console can be used as a sender. An indicator lamp or tally display is a receiver. This is similar to the Scada system used for building industrial process control systems.

Routing a copy of an audio stream to a process that averages the audio level and emits a value periodically implements a basic VU meter. That could be built with a Raspberry PI or Arduino IoT device. NMOS would treat it as a receiver for audio streams and a sender for the audio level data value. It can route that data value onwards to an indicator on the console. Here is a conceptual design of this simple use-case:

The localizer represents that part of the virtualized routing matrix that selects the required audio language. The output is split two ways to different receivers.

Appropriate stream format selection is implicit in the connection of a sender to a receiver. AMWA provides Best Common Practice (BCP) documents. They describe how to use NMOS with streams other than ST 2110 carrying SDI content.

NMOS can pause and resume the output from a sender when necessary. If your NMOS resources are configured correctly, everything should work as expected.

Refer to these NMOS documents for more information regarding the connection of devices, mapping audio channels and compressed streams: 

DocumentStatusDescription
IS-051.1.2Device Connection Management.
IS-081.0.1Audio Channel Mapping.
BCP-004-011.0.0Receiver Capabilities.
BCP-006-011.0.0NMOS With JPEG XS.
BCP-006-02DraftNMOS With H.264.
BCP-006-03DraftNMOS With H.265.
BCP-007-01DraftNMOS With NDI.
INFO-003DraftSink Metadata Processing Architecture.
INFO-005PublishedImplementation Guide for NMOS Controllers.

These documents describe device control and status monitoring:

DocumentStatusDescription
IS-071.0.1Event & Tally.
IS-121.0.0Control Protocol.
MS-05-011.0.0NMOS Control Architecture.
MS-05-021.0.0AMWA NMOS Control Framework.
BCP-008-01DraftNMOS Receiver Status.
BCP-008-02DraftNMOS Sender Status.
INFO-006PublishedImplementation guide for NMOS Device Capabilities Control.

These documents contain guidance for configuring device and media parameters:

DocumentStatusDescription
IS-111.0.0Stream Compatibility Management.
IS-14DraftDevice Configuration.

User Interface Design

Be sure to observe the most important Prime-Directive when integrating user interface actions and indicators:

  1. The button triggers the event.
  2. The event performs the action.
  3. The observed change of state of the target triggers a UI update event.
  4. The UI update event calls a handler to action.
  5. The UI indicator appearance is only updated by that handler based on the observed state.

This ensures that indicators indicate the correct state after the action is completed. If you change the indicator as part of the initial call-to-action, the indicated state is not correctly synchronized if the action fails.

Security Recommendations

Read the guide to security implementation in NMOS document INFO-002. Other documents address specific aspects of security. All of these NMOS documents are relevant to securing your system against unwanted intrusions:

DocumentStatusDescription
IS-101.0.1Authorization.
BCP-003-011.0.1Secure Communications in NMOS Systems.
BCP-003-021.0.0Authorization in NMOS Systems.
BCP-003-031.0.0Certificate Provisioning in NMOS Systems.
INFO-002PublishedSecurity Implementation Guide.
INFO-005PublishedImplementation Guide for NMOS Controllers.

One of the output documents from the JT-NM Tested program is a Cyber-Security report. Consult this for basic guidance on security countermeasures that are important to implement.

There are other additional IP specific security countermeasures not covered by JT-NM. Consult the Open Worldwide Application Security Project (OWASP) for valuable guidance and intrusion testing tools.

The Building Blocks

Within an NMOS managed ST 2110 infrastructure there are various behaviors that the individual entities can adopt. Some devices may support multiple behaviors. For example, an ST 2110 sender is distinctly different to a receiver but a processing node might support both behaviors and consume incoming content and dispatch it onwards after processing.

Other services are provided by the network infrastructure. These are the principal component building blocks:

PlatformResolution
Media nodeA hosting device that can dispatch flows as a sender and consume them as a receiver.
SenderAn entity that generates media streams.
ReceiverAn entity that consumes media streams created by a sender.
DHCPThe Dynamic Host Configuration Protocol network service.
PTPThe Precision Time Protocol network service.
DNSThe Domain Name System network service.

The relationship between these components is illustrated by this diagram (based on a similar one in the AMWA documentation).

A Media Node is a physical or logical group of behaviors with a mix of Senders and Receivers. The discovery process is described by the NMOS IS-04 specification. Document IS-05 describes how they are controlled. Some media nodes may be sender only or receiver only.

The Broadcast Controller uses the NMOS protocols to manage the connections between the media nodes. This is also described in the JT-NM Technical Report TR-1001.

Several NMOS standards should be consulted first:

  • IS-04 describes how devices can discover one another.
  • IS-05 describes the connections between each device.
  • IS-09 describes the system parameters that the media nodes need.

A Sender may generate one or more streams from its input source. For example, a hardware device with an SDI connector for input can transmit IP packets on the network via an Ethernet connector as its output. Multiple streams provide redundancy and all the streams must conform to these SMPTE standards:

  • ST 2110-20 - Uncompressed Active Video.
  • ST 2110-30 - PCM Digital Audio.
  • ST 2110-31 - AES3 Transparent Transport.
  • ST 2110-40 - SMPTE ST 291-1 Ancillary Data.

A Receiver consumes one or more of the streams created by a sender. Redundant systems designed for resilient use allow the receiver to consume multiple sender streams to provide resilience against packet loss.

The Dynamic Host Configuration Protocol (DHCP) is a network service that defines the network configuration centrally. A server vends the necessary details when requested by a client device. It is possible that the IP address defined in this way will change from time to time. NMOS manages this via the registry so that nodes are only identified by name.

Precisions Time Protocol (PTP) network services ensure all the media nodes are synchronized.

The Domain Name System (DNS) configurations are shared from a central network name server to convert symbolic (human readable) host names to IP addresses used for packet routing. If DHCP changes the IP addresses, then this must be carefully integrated with the NMOS registry so devices are still reachable by name.

The Difference Between A URI, URN & URL

In the NMOS documentation, the messaging format and device identification uses several terms which sound as if they are the same thing:

  • URI - Uniform Resource Identifier.
  • URN - Uniform Resource Name.
  • URL - Uniform Resource Locator.

These are all different notational forms that can be used to describe resources in an NMOS environment. The appropriate format is dependent on the context where it is used.

URI - Uniform Resource Identifiers

A Uniform Resource Identifier is a description of a resource. The resource is identified by name or location. When it is identified purely by name, then it is considered to be a URN and should have the urn: prefix. If it describes a location, then it is a URL and has a transport scheme prefix.

W3C suggested that we should always use the term URI to describe the location of web pages. Popular convention suggests that we use URL instead to describe web-requests and URN to describe abstract resources. Only use URI when the resource could be either.

The purpose of a URI and how it should be parsed is indicated by the scheme value. This is the part before the colon character (:).

IETF document RFC3986 document describes the relationships between a URI and other values. As background research, consult the documentation about the Resource Description Framework (RDF). This describes the fundamentals of how a URI is constructed.

Example URI Type Description
https://host.com/page.html URL A web page location.
ftp://host.com/document.pdf URL A downloadable document location.
urn:isbn:0-9550610-0-8 URN A book.
mailto:[email protected] URI An email address.
tel:+44-1632-691212 URI A telephone number.
ldap://host.com/dc=example,dc=com URL A Lightweight Directory Access Protocol service.
telnet://192.0.2.16:80/ URL Make a Telnet connection to a remote host.

 

URN - Uniform Resource Names

A Uniform Resource Name has a standard format, describing a resource without specifying the location or whether it even exists at all. The individual parts are separated by a colon character (:). They need to be converted to a URL format for practical use in NMOS. See RFC3986.

Most NMOS URNs are constructed like this (the square brackets indicate optional parts that can be omitted):

{URN-base} [ . {sub-classification} ] [ /{version} ]

The {URN-base} comprises one or more names that create a hierarchy of namespaces. They all have the same prefix (urn:x-nmos:) at the top level.

The entire string identifies a resource object.

The {sub-classification} is optional (signified by the square brackets) and identifies a member property belonging to a resource object within the NMOS context. The full-stop character (.) separates it from the {URN-base}.

The {version} suffix is also optional and identifies the version of NMOS describing how the resource and its properties behave. This allows multiple versions of the same objects to coexist within an enterprise. The slash character (/) separates it from the earlier parts of the URN.

For example, this fully qualified URN:

urn:x-nmos:control:sr-ctrl/v1.0

can be separated into a {URN-base}:

urn:x-nmos:control:sr-ctrl

and a {version} suffix:

v1.0.

This example would be a valid URN identifying a multiplexed flow:

urn:x-nmos:format:mux/v1.1

This next example cannot ever be valid:

urn:x-nmos:format:mux/v1.0

The subtle error happens because multiplexed flows did not exist before NMOS version 1.1, therefore a version 1.0 of this resource could not ever have been possible.

Be careful to observe the correct version numbers in the API calls that require them. Later versions of some API calls have the version part removed and appended as an attribute or conveyed in the JSON payload instead.

URL - Uniform Resource Locators

A Uniform Resource Locator is a specific kind of URI. Instead of identifying resources by name, it identifies them by their location on the Internet. It allows them to be accessed via several protocol schemes (http:,https:,ftp:,smtp: etc.). These are most often encountered when requesting web pages in a browser. See the URL living standard which is maintained by the WHATWG group here: 

https://url.spec.whatwg.org/

The NMOS documentation describes its resources using the URN notation. When building code to integrate the NMOS architecture with a dashboard console, convert the URN values into a usable URL that can be called on a target web-service running in a Node resource.

In the documentation, the {URN-base} is described as this part of the URN:

urn:x-nmos

Part of this needs to be replaced by the address of the target resource node and the rest used as the start of the web page location within that HTTP server.

All NMOS support is rooted at this location in the HTDOCS path:

/x-nmos/

So a complete URL is constructed from the URN like this:

https:// {address} [ : {port} ] /x-nmos/{api} / {version} /

The protocol scheme can be http: or https:. Using https: is better because it is more secure.

The {address} can be a static IP address or a host name resolved into an IP address by the DNS server.

By default the {port} number would be 80 (the convention for a web-server). Although the NMOS specifications don’t indicate that this is an optional value, it is normally optional unless you want to use a different port number.

Using a port number other than 80 would obfuscate your message format. This would only provide a minor inconvenience to unwanted intruders but anything that makes life more difficult for them is worthwhile. To discover your alternative port number would require a portscan which should be detectable by your security countermeasures and hence the intruders IP address can be blocked right away.

The document address where the NMOS {api} exists is described as a slash (/) separated web page location in the normal way.

Take this example URN:

urn:x-nmos:format:mux/v1.1

Converting it would yield a URL like this:

https://source.mynet:80/x-nmos/format/mux/v1.1/

To summarize the process. Replace the urn: prefix with the target web server address. Append the remainder of the URN after replacing the colons with slash characters and add a trailing slash after the version.

About Request-response Transactions

NMOS is constructed using commonly available web technologies. Because IP port 80 is well-known and used for web browsing. NMOS takes advantage of that and delivers messages in a compatible way.

Internally the message payloads are constructed using the JSON serialized object format. This is easily converted back into an object graph at the receiver and is a compact and popular format.  It is well supported by web-browser, servers and middleware such as PHP. Other middleware environments will also support it natively or with extension libraries.

Client devices send a request to a URL which is received by a server living at the IP address represented by the domain name specified in the request. In the recent article on Microservices, the request and response format were described as a header and body formatted according the RFC 822 design.

In place of a web server, NMOS describes these targets as Media Nodes. A node can receive or send a flow and vend metadata that describes itself.

Various headers specific to NMOS can be added to those in general use with HTTP request/response practice.

GET methods pass their parameters in the URL following the question mark symbol (?) and delimited by an ampersand (&) as usual.

POST methods pass their details in the same way that a FORM would. The body would be a JSON serialized object representing the request details.

The payload of a response would be a JSON formatted body that is parsed to convert it back into an object graph.

When the response arrives, inspect the status of the response as well as the payload body. Meaningful information is conveyed in the status. For example the health of a node is described as follows:

JSON - JavaScript Object Notation Basics

JavaScript Object Notation describes an object graph using a pure text format. 

Status Meaning
200 The node is viable.
404 The node does not exist or has been garbage collected.
409 The node exists but the version in the request was wrong. The correct version is returned in the payload.

 

It was originally designed by Douglas Crockford to implement real-time server to browser session data transports. The original concept is simple and exploits JavaScript’s native ability to execute code passed as data.

The JSON content must therefore conform to executable JavaScript syntax. Later extensions to JSON to support Unicode required updates to the ECMA 262 Core JavaScript standard for this to be supported. The JSON format is also standardized as ECMA-404. Download both of these standards free-of-charge from the ECMA web site. The JSON functionality is very easy to understand. The ECMA-404 standard uses syntax diagrams to explain how the parser works. Just follow the path like a railway layout. Here is the syntax diagram for a JSON value:

Values can be included in objects and arrays. Consult ECMA-404 to find the syntax diagrams for all the data types.

Executing data as code via the eval() function is considered to be very dangerous, especially if that data has been provided by an external source. It would allow code injection by intruders if not properly managed. This is rectified by embedding the JSON parsing inside the browser’s JavaScript interpreter and adding the JSON.parse() method to the JSON object. Any JavaScript data or object can be serialized into JSON with the JSON.stringify() method.

The checks and balances for security prevent tampering and the JSON object provides a very important tool for building extensible web pages. You see it in action when scrolling a web page that adds more content as you reach the bottom of the page.

Here is an example object graph:

The equivalent JSON payload is constructed from individual nested atoms. Recall that we saw similar atomic nesting structures in AV media files. These hierarchical tree structures crop up everywhere in IT and AV media systems and are visible inside web-bowsers as the Document Object Model (DOM).

This is the JSON serialized version of the object graph:

There are two instances of the item object with different property values in each. The list element is a simple array which resembles an object. The array container is delimited with square brackets and object containers use curly braces.

Although JSON originated as an extension to the web-browser’s built-in JavaScript capabilities, the technique is language agnostic and can be used anywhere you need to serialize an object graph.

Distinguishing Resources From One Another

Several mechanisms exist to identify unique resources. This is granular enough to identify different time-based variants of each resource too. These properties are used to explicitly identify a target resource:

Property Description
ID A UUID value that identifies a resource.
Version An attribute that identifies a variant of a resource at a particular time.
Label A human readable label for use in user interface consoles.
Description A human readable text describing the resource in more detail.
Tags Used to group, sort, rank and filter resources.

 

Identifying Resources With A UUID

Core resources such as Sources, Flows, and Nodes must be uniquely identified. They use a Universally Unique Identifier (UUID) which is a 128-bit value. UUIDs are standardized by the Open Software Foundation (OSF). Microsoft implements a similar scheme but describes them as a GUID.

There is a conventional format for UUIDs which are always expressed in hexadecimal notation - shown below.

The first 20 digits are based on timestamp values. This guarantees the uniqueness of the UUID. The last 12 digits identify the node. That could be an Ethernet Mac address for example.

There is a small caveat that a UUID might be duplicated elsewhere but the likelihood is so near zero that it is practically unique worldwide. This is because the first part of the UUID value is derived from a timestamp measured in increments of 4-micro-seconds. The odds of two identical UUIDs being created at the exact same time are astronomical. They would also need to have an identical Node value to cause a collision. It is not impossible but very unlikely.

Identifying Flow Transitions With Version Values

A broadcast environment is constantly changing. The state of a resource might be quite different after some time has passed. NMOS manages this by adding a version attribute to the objects that represent each resource. This is not the same as the version number used in API calls.

The value of the version attribute is a TAI timestamp. For example, if a flow was coming from source 1 and a vision mix switched it to source 2, the exact time of that mix can be signified in the version attribute. This state change can be registered and stored in a database or communicated as a message to other peers in the network.

An NMOS TAI timestamp is constructed from a whole-seconds value with a fractional part measured in nanoseconds appended after a colon character (:).

{whole-seconds} : {nanoseconds}

The value 1439299836:10 is interpreted as 1439299836 seconds and 10 nanoseconds. The equivalent decimal point notation would be:

1439299836.00000001

The leading zeros on the fractional value are eliminated. Numerical parsing must take account of this when converting a string representation back to a numeric value. This is why a colon is used instead of a decimal point. It would throw an exception if a conventional numerical parser was used.

Combining a version attribute with the resource UUID uniquely identifies a time-based variant of a resource.

Tagging Resources For Searching

Adding tags to resources increases the number of possible search options. Attach tags to individual resources and maintain a super-set in the central registry. User interfaces can use that when building search panes in the console.

Tags are constructed as name-value pairs. The tags namespace is used to group the tag names to avoid collisions.  Multiple tags can be attached to a resource using a JSON construct like this:

The search-engine can therefore locate all the content recorded from a particular studio by filtering resources via the appropriate tags.

What Happens When A Node Starts Up

When a device is booted, it needs to start up various software processes and join the NMOS environment. This is a simplified step-by-step description:

  1. The supporting hardware device is initialized.
  2. The device connects to the network and acquires its configuration from static settings or by requesting them with DHCP.
  3. An HTTP server process is started up with the NMOS API installed in its HTDOCS collection to receive incoming NMOS requests.
  4. Supporting processes are started to initiate the NMOS registration.
  5. An mDNS advertisement is broadcast to the .local domain to indicate the client Node resource is available. 
  6. The client Node looks for a central registry node that it can inform about its existence.
  7. The client Node registers itself via the Registration API on that registry node.
  8. The client Node issues periodic heartbeat messages to the registry to indicate it is still alive. A timeout would deem it to be inactive.
  9. The client Node must register its available resources in the correct order with the Registration API. Available resources should be registered after other resources that they depend on.

Once a resource is registered, NMOS can ascertain whether it is a sender or receiver and what kind of media is compatible with it. Once NMOS knows this, it can present matching senders and receivers to the dashboard for an operator to connect them together.

Accessing The Document Collection

AMWA manages the editorial process for these standards using Continuous Integration techniques similar to those used by DevOps engineers who maintain source code. The document source is maintained as a collection of Markdown files in a Git repository. When changes are made, the repository is rendered to create the online version. This takes care of dependencies between documents and applies some editorial styling and checks as the web content is manufactured. It is a clever solution to managing a large collection of related cross-referring documents.

The downside is that there is no static PDF copy available for offline reading and the documents need to be read online in a web-browser. The lack of a PDF is purposeful and avoids the circulation of obsolete documents after changes have been made. NMOS is still a work-in-progress.

Read the NMOS documents here:

https://specs.amwa.tv/nmos/

Documents are classified according to the kind of guidance they provide:

Prefix Description
IS Interface specifications for NMOS Application Programming Interfaces (API).
MS Data Model Specifications describe the resources that are used by the IS specifications.
BCP Best Common Practices illustrate how to use the interfaces and models effectively. Examples  help you build your own implementations.
INFO Informative documents with guidance in applying the specifications. Informal documents not given version numbers. Track changes through the Github source code repository where they are maintained.
- Parameter registers describe the different types of data that can be passed in the API calls. Describing these separately to the API specifications ensures that they are consistent across all APIs.
- Control feature sets describe enumerated sets of values passed in the parameters. These are optionally used for convenience.
Other Supporting overviews, technical introductions, FAQs and a glossary. There is also an indexed list of existing NMOS solutions with other open-source software and catalogues of proprietary NMOS compatible products.

 

AMWA publishes a roadmap of currently in progress and planned standards development work. This helps long-term strategy planning, although it is difficult to predict exact timescales when standards will be ready for release.

Other Knowledge Sources

Useful resources are downloadable from the web-sites of these collaborating organizations:

  • AIMS - Alliance for IP Media Solutions.
  • AMWA - Advanced Media Workflow Association.
  • VSF - Video Services Forum.
  • AES - Audio Engineering Society.
  • EBU - European Broadcasting Union.
  • SMPTE - Society of Motion Picture and Television Engineers.
  • JT-NM - Joint Taskforce On Network Media.

JT-NM

AMWA is a core member of the Joint Taskforce on Networked Media (JT-NM). This is a close collaboration between the AMWA, VSF, EBU and SMPTE organizations.

The IP Showcase Events

Annual industry conferences (NAB and IBC) often feature IP Showcase technical presentation streams. Tutorials and presentations are available online to explore after the conference event. Find their resources here:

https://ipshowcase.org/

Plug-fests

Periodically the industry gathers together to run ‘plug-fest’ events where the equipment and software manufacturers bring their products and test them in a realistic scenario. Many manufacturers and customers have collaborated to run these test programs to validate the NMOS protocols.

The JT-NM Tested program lists products that have been checked by industry experts at these plug-fests. Their conformance to the specification provides a degree of confidence that things have worked. The results from IBC 2022 (the latest) have been published along with earlier reports.

Compatible Products

AMWA maintains a list of compatible products that are available. Some are commercial while others are free and open-sourced. Whilst they don’t claim that the list is exhaustive, manufacturers can self-register products that are not already included. Check out the current list of products here:

https://www.amwa.tv/buynmoshere

Related Standards

These standards are relevant to working with the NMOS and ST 2110 architecture.

DocumentVersionDescription
BCP-002-011.0.0Best Current Practice for Natural Grouping of NMOS Resources.
BCP-002-021.0.0Asset distinguishing information.
BCP-003-011.0.1Secure Communications in NMOS Systems.
BCP-003-021.0.0Authorization in NMOS Systems.
BCP-003-031.0.0Certificate Provisioning in NMOS Systems.
BCP-004-011.0.0NMOS Receiver Capabilities.
BCP-004-021.0.0NMOS Sender Capabilities.
BCP-006-011.0.0NMOS With JPEG XS.
BCP-006-02DraftNMOS With H.264.
BCP-006-03DraftNMOS With H.265.
BCP-007-01DraftNMOS With NDI.
BCP-008-01DraftNMOS Receiver Status.
BCP-008-02DraftNMOS Sender Status.
ECMA 26215th editionJavaScript core.
ECMA 4042nd editionJSON syntax.
EEE 15882008Precision Clock Synchronization Protocol for Networked Measurement and Control Systems.
IEEE 7542019Floating-Point Arithmetic.
IEEE 802.1AB2016Station and Media Access Control Connectivity Discovery (LLDP).
IEEE 802.1AX2014Link Aggregation.
INFO-002n/aNMOS Security Implementation Guide.
INFO-003DraftNMOS Sink Metadata Processing Architecture.
INFO-004n/aNMOS Implementation guide for DNS-SD.
INFO-005n/aImplementation Guide for NMOS Controllers.
INFO-006n/aImplementation guide for NMOS Device Capabilities Control.
IS-041.3.3NMOS Discovery and Registration.
IS-051.1.2NMOS Device Connection Management.
IS-071.0.1NMOS Event & Tally.
IS-081.0.1NMOS Audio Channel Mapping.
IS-091.0.0NMOS System Parameters.
IS-101.0.1NMOS Authorization.
IS-111.0.0NMOS Stream Compatibility Management.
IS-121.0.0NMOS Control Protocol.
IS-13DraftNMOS Annotation.
IS-14DraftNMOS Device Configuration.
ISO 106462020Universal Coded Character Set (UCS). Amendments published in 2023 and 2025. The standard is currently under review.
ISO 115781996Open Systems Interconnection – Remote Procedure Call (RPC).
ISO 217782017The JSON interchange syntax.
ISO 9834-82014Universally Unique Identifiers (UUIDs).
ITU-T Rec X.6672012Generation of universally unique identifiers and their use in object identifiers.
MS-05-011.0.0NMOS Control Architecture.
MS-05-021.0.0AMWA NMOS Control Framework.
Reference Architecture1.0A reference base architecture on which to build NMOS systems..
RFC 10342020Domain names - concepts and facilities.
RFC 21191997Key words for use in RFCs to Indicate Requirement Levels.
RFC 21311997Dynamic Host Configuration Protocol.
RFC 39862005Uniform Resource Identifier (URI): Generic Syntax.
RFC 41222005A Universally Unique IDentifier (UUID) URN Namespace.
RFC 46272006The application/json Media Type for JavaScript Object Notation (JSON).
RFC 57712010IANA Guidelines for IPv4 Multicast Address Assignments.
RFC 67622013Multicast DNS.
RFC 67632013DNS-Based Service Discovery.
RFC 71582013The JavaScript Object Notation (JSON) Data Interchange Format.
RFC 71592014The JavaScript Object Notation (JSON) Data Interchange Format.
RFC 74932015The I-JSON Message Format.
RFC 82592017The JavaScript Object Notation (JSON) Data Interchange Format.
RFC 95622024Universally Unique IDentifiers (UUIDs).
ST 2059-12020Generation and Alignment of Interface Signals to the SMPTE Epoch.
ST 2059-22020Profile for Use of IEEE-1588 Precision Time Protocol in Professional Broadcast Applications.
ST 2110-102017System Timing and Definitions.
ST 2110-202017Uncompressed Active Video.
ST 2110-212017Traffic Shaping and Delivery Timing for Video.
ST 2110-302017PCM Digital Audio.
ST 2110-312018AES3 Transparent Transport.
ST 2110-402018SMPTE ST 291-1 Ancillary Data.
Tech 33713.0The EBU technology pyramid for media nodes. This describes the minimum user requirements to build and manage an IP-based media facility using open standards & specifications.
TR-1001-12020JT-NM technical report on System Environment and Device Behaviors For SMPTE ST 2110 Media Nodes in Engineered Networks. Particular attention is given to Networks, Registration and Connection Management.
URL standardLive updatedThe living standard maintained by the WHATWG group.
Unicode16.0.0Universal character set coding.

The WHATWG URL living standard is accessible on this web page:

http://url.spec.whatwg.org

AMWA is working with VSF and AIMS. They are leveraging NMOS to enhance the capabilities of IPMX. This will benefit ProAV users.

Conclusion

Explore the AMWA web site for tutorials and guidance. This is the authoritative source for NMOS material. The organizations that AMWA collaborates with also provide useful resources. There is a lot of help available to get you started.

Reading the NMOS documentation requires some patience and dedication. The first pass through the documents is easier if you just accept some of the statements on faith. Read the documents again, armed with the insights from your first pass. It gradually becomes clearer each time you open and read another one of the documents.

Discern the difference in formatting of the URN vs URL values. It helps to understand the IS documents better.

Review the API calls, this assists in understanding the URL request-response behavior. In particular, click on the highlighted buttons to see the request/response formats and the JSON syntax.

Review the JT-NM document describing the EBU Reference Architecture. This is the result of an important collaboration between the EBU, SMPTE and VSF.

As yet, there is no authoritative reference handbook describing how to build an NMOS compatible system. Gleaning the information from the AMWA NMOS documents and distilling it into a practical guide would be incredibly useful.

For the time being you need to use empirical knowledge and consult multiple sources and aggregate the findings to build up a complete picture.

Supported by

You might also like...

Navigating Streaming Networks For Live Sports

With the relentless rise of consumers moving from OTA to live streaming of big-ticket sports, this series shares insight into what happens after content leaves production during a live stream. It is a subject broadcasters cannot afford to regard as…

Broadcast Audio Technology At IBC 2025

In celebration of the 2025 IBC Show, this article gathers the news about what the vendors exhibiting on the show floor for the acquisition, production and delivery of pristine, immersive audio.

Hybrid Network Technologies At IBC 2025

As the 2025 IBC Show approaches, here we pick up the key theme of hybrid production network infrastructure that combines SDI-IP network technologies with a run-down of what to expect from vendors on the show floor.

Production & Post At IBC 2025

In celebration of the 2025 IBC Show, this article gathers together news of what vendors will be showcasing for creative teams in the white heat of the production control room.

Video Engineering Technology At IBC 2025

In celebration of the 2025 IBC Show, this article gathers together news of what vendors will be showcasing in the world of video engineering, the essential, standards driven core of what makes broadcast work.