Introduction

In earlier releases of NSO, there could only be a single version of a YANG module loaded into the system. This had some limiting implications.

One limitation was that if two different devices were using two different revisions of a YANG module, NSO had to load one of them, usually the latest one. This often worked fine, but if the models were incompatible, the result was that NSO could not properly manage the incompatible parts of the model.

Another limitation was that if NSO implemented a model (for example "ietf-netconf-acm"), this model could not be used for a device. This scenario is the reason for the word common in Common Data Models (CDM).

The CDM solution solves these problems by using a technique called YANG Schema Mount, where all the data models from a device are mounted into the /devices tree in NSO. Each set of mounted data models is completely separated from the others (they are confined to a "mount jail"). This makes it possible to load different versions of the same YANG module for different devices.

In most cases, there are many devices running the same software version in the network managed by NSO, thus using the exact same set of YANG modules. With CDM, all YANG modules for a certain device (or family of devices) are contained in a NED package (or just NED for short). If the YANG modules on the device are updated in a backwards compatible way, the NED is also updated.

However, if the YANG modules on the device are updated in an incompatible way in a new version of the device's software, it might be necessary to create a new NED package for the new set of modules. Before CDM, this was not possible, since there would be two different packages that contained different versions of the same YANG module.

When a NED is being built, its YANG modules are compiled to be mounted into the NSO YANG model. This is done by device compilation of the device's YANG modules, and is performed via the ncsc tool provided by NSO.