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.