SR OS supports two basic classes of management interfaces:
Classic management interfaces include:
Model-driven management interfaces include:
References to the term “CLI” in the SR OS user documentation are generally referring to the classic CLI. The classic CLI is the CLI that has been supported in SR OS from the initial introduction of SR OS.
The MD-CLI is a model-driven CLI introduced in SR OS Release 16.0.R1. Refer to The MD-CLI User Guide and The MD-CLI Command Reference Guide for details on using configuration commands in the MD-CLI.
Model-driven management interfaces are based on a common infrastructure that uses YANG models as the core definition for configuration, state, and operational actions. All model-driven interfaces take the same common underlying YANG modules and render them for the particular management interface.
The Nokia SR OS YANG modules of the model-driven infrastructure are similar to the classic CLI tree with the following notable differences:
In model-driven configuration-mode, SR OS operates with 'explicit' default handling. Users can set a leaf to the same value as the default, and SR OS remembers that it was explicitly set, and displays it as part of the configuration. This is similar to what RFC6243 refers to as 'explicit' mode.
In the classic configuration-mode, the default handling is similar to RFC6243 'trim' mode. Configuration values are not reported if they are equal to the default value, even if the user explicitly configured the value.
In mixed configuration-mode, the system uses 'explicit' default handling but it is not persistent. Explicitly configured default values are lost or forgotten at a High-availability CPM switchover or a reboot. Nokia does not recommended setting any leaf explicitly to its default value in mixed configuration-mode (the leaf should be deleted instead).
Before configuration editing is permitted in model-driven interfaces, the management interface configuration mode must be set to model-driven or mixed. Refer to Management Interface Configuration Mode for details.
All loose references using IDs to certain elements (elements which use IDs as keys in classic interfaces but string names in model-driven interfaces) must be replaced with references using string names. Refer to Loose References to IDs for details.
Strict routing policy validation is used for model-driven interfaces. The routing policy must exist for the management interface configuration mode to be changed. References to non-existent routing policies must be removed before attempting to switch modes. Strict policy validation is applied to the following routing policy references:
Model-driven management interfaces are based on a common infrastructure that uses YANG models as the core definition for configuration, state, and operational actions. All model-driven interfaces take the same common underlying YANG modules and render them for the particular management interface.
The SR OS supports:
The SR OS supports two similar proprietary YANG configuration data models. A unique set of XML namespaces is used for each of the two data models.
The YANG modules for the first configuration data model (Alcatel-Lucent Base-R13 SR OS YANG modules) have the following attributes.
The YANG modules for the second configuration data model (Nokia SR OS YANG modules) have the following attributes.
The two configuration data models are not interchangeable. An XML request based on the Alcatel-Lucent Base-R13 YANG modules will not work if applied to a router using the urn:nokia.com:sros:ns:yang:sr:conf namespace and vice versa.
There is a single YANG state model for SR OS with the following attributes.
All configuration modules, state modules, and types modules are advertised in the SR OS NETCONF server <hello>. Submodules are not advertised in the <hello>.
The bof, admin, tools, debug, or clear branches of the CLI do not have equivalent YANG data models.
OpenConfig presents a vendor-independent set of YANG models. OpenConfig YANG model attributes are mapped to application-specific configuration and state. SR OS requires the following system management configuration to access the application configuration using the OpenConfig YANG models.
OpenConfig YANG models are available for all model-driven interfaces. In MD-CLI, OpenConfig configuration is located in the configure openconfig context.
When a configuration is committed, the system checks to ensure that openconfig-modules is set to true. If openconfig-modules is set to false, a configuration error is raised.
The openconfig-modules command behaves differently depending on the configuration access method, MD-CLI, gNMI, or NETCONF as follows:
It is possible to configure the network element using both Nokia YANG and OpenConfig YANG models. Configuration ownership is a key concept, determining which model-driven access method can update a container or list entry. Only the access method that has claimed configuration ownership of an container or list entry can modify the configuration for that container or list entry. Individual applications define the required container or list entry based on their unique requirements. The applications also determines if and how ownership can change. It is possible to have both Nokia YANG and OpenConfig YANG commands in the same set transaction. Validation and commit functions apply to all transactions in a single set. If an access method attempts to configure elements under a part of the hierarchy it does not own, an error message is generated. An example of the error message is:
Configuration ownership also influences default imports. The owner imports their container or list entry defaults. In the case where OpenConfig is the container or list entry owner but the model has opted to omit configuration elements required for application functionality, the Nokia application defaults are imported. These defaults cannot be modified using OpenConfig if the configuration path is not included in the OpenConfig model. If an object in the OpenConfig model does not specify a default, the application can use any default available. Typically, this is the existing SR OS application default for the container or list entry.
In the case where the OpenConfig model includes a leaf but does not include a default, the Nokia default can be used as specified in Table 54.
Case | OpenConfig leaf value specified | OpenConfig leaf has YANG default | Action taken |
1 | yes | yes | Use OC leaf value specified |
2 | yes | no | Use OC leaf value specified |
3 | no | yes | Use OC leaf default value |
4 | no | no | Use Nokia default value |
An operator action, such as the modification of a container or list entry using OpenConfig, may transition the container or list entry ownership to OpenConfig. Transitioning from OpenConfig to Nokia configuration ownership usually requires the deletion of the container or list entry through the OpenConfig model.
If the Nokia models are to be considered for configuration, the nokia-modules or nokia-combined-modules parameter must be set to true in the configure system management-interface yang-modules context.
When model-driven management interface configuration mode and OpenConfig YANG are enabled, the OpenConfig YANG configuration options become available. The openconfig-modules true command can be changed to openconfig-modules false during operation. However, all OpenConfig YANG configuration statements must be deleted prior to deleting the openconfig-modules leaf or setting it to openconfig-modules false, otherwise an error is generated. This protects the system from entering a state where an OpenConfig mismatch is possible.
The validate command validates the model-driven configuration against the model-specific definition, including any deviations. The commit command performs application-level mappings, another validation function, and activation of the candidate datastore. The application-specific mapping ensures the application requirements are met using the same criteria that is common for that application across all configuration actions.
In cases where there is an incomplete set of modeled data which results in an error, or there are other errors that arise from the commit operation, all transactions fail and produce an error message indicating the reason for the failure. A failure maintains the complete set of YANG parameters, as if the commit command had not been issued. This allows the administrator the option to correct the source of the error. Partial configurations are allowed as determined by the application and are not themselves invalid.
The transaction is tracked, including the OpenConfig Key and the Nokia Key. Both the OpenConfig path and the Nokia path are included in the returned error message. This error message uses the following format; Nokia:Normalized:OC-Key/path. This approach allows error message parsing and extraction of preference for the operator's model-driven-specific approach. A sample error message is shown below.
where <extra-context> could be the OpenConfig context or related key information.
Deviation files are available for each model where there are differences from the published OpenConfig model. These deviations can include not-supported, add, replace, granularity mismatches, and different ranges. The OpenConfig YANG file contains text descriptions when different units or ranges are in place. Deviations are not raised for OpenConfig “must” statements as the “must” statement in OpenConfig models is not supported in SR OS. The deviation file follows this format nokia-sr-<ocmodule>-deviations.yang, for example, nokia-sr-openconfig-network-instance-deviations.yang.
There are several places where ranges and units may not be aligned between OpenConfig YANG and SR OS application implementation.
When a mapping exists for an attribute but the configuration is out of range, an error is generated. For example, the application configuration leafB has a range of (1..100), where OpenConfig leafB specifies a range of (1...300). When an OpenConfig set above 100 is requested, an unsupported value error is returned.
As an example of a granularity mismatch, application leafC supports centiseconds and OpenConfig leafC supports milliseconds. If the OpenConfig value in milliseconds can be converted to a valid application value, the OpenConfig value is accepted (for example, OpenConfig leafC 100 ms is converted to application leafC 1 centisecond). However, if the OpenConfig value cannot be converted to a valid application value, an error is produced (for example, OpenConfig leafC 125ms cannot be mapped into centiseconds).
There is a set of configuration objects (configuration list elements and their descendants) that are provisioned (added to the <running> datastore) automatically by SR OS; for example, log-id 99. Some SPC objects are created at bootup time, and some are created or removed dynamically based on configuration. The dynamically created SPC objects are typically children objects created as a side effect of the creation of their parent object.
Some of these objects can be deleted/removed by a user (Deletable SPC Objects).
Some SPC objects cannot be deleted (Non-Deletable SPC Objects).
Some Non-Deletable SPC Objects are visible in a <get-config> request in the “urn:alcatel-lucent.com:sros:ns:yang:conf-*-r13” namespace (the Alcatel-Lucent Base-R13 SR OS YANG modules), even if they are set to default values:
Management interface configuration mode controls how classic management interfaces, such as SNMP and the classic CLI, and model-driven (MD) interfaces, such as the MD-CLI and NETCONF, are used to modify the configuration of the router. The configure system management-interface configuration-mode command must be used to enable configuration editing by MD interfaces.
Configuration Mode | ||||
Classic | Mixed | Model-driven | ||
Classic Interfaces | Classic CLI: configuration write/edit | OK | OK | — |
Classic CLI: configuration read | OK | OK | OK | |
Classic CLI: non-configuration commands | OK | OK | OK | |
SNMP: configuration write/edit | OK | OK | — | |
SNMP: non-configuration writes (such as admin reboot) | OK | OK | — | |
SNMP: configuration read | OK | OK | OK | |
SNMP: state read | OK | OK | OK | |
SNMP: notifications (traps) | OK | OK | OK | |
NETCONF (Base-R13 model): configuration write/edit | OK | OK | — | |
NETCONF (Base-R13 model): configuration read | OK | OK | OK | |
Model-driven Interfaces | NETCONF (Nokia model): configuration write and read | — | OK | OK |
NETCONF (Nokia model): state read | OK | OK | OK | |
Telemetry: configuration nodes | — | OK | OK | |
Telemetry: state nodes | OK | OK | OK | |
gNMI Set/Get: configuration write and read | — | OK | OK | |
gNMI Get: state read | OK | OK | OK | |
Features | OpenConfig YANG models | — | — | OK |
Configuration Groups | — | — | OK | |
MD-CLI rollback command | — | — | OK | |
Classic CLI admin rollback revert command | OK | OK | — | |
Explicit defaults 1 | — | — | OK | |
Configuration changes accepted immediately after a CPM high-availability switchover 2 | OK | — | OK |
Note:
Mixed configuration mode is useful for operators to migrate from classic management interfaces to operating in a full model-driven mode. It allows the use of previous classic CLI scripts or other OSS integration (for configuration) although with some pre-requisites (see Prerequisites for Using Model-Driven Management Interfaces) and some limitations (see Table 55).
A loose reference is a reference where the target of the reference does not have to exist. For example, configure service pw-template 23 egress filter ip 37 can be configured (when the management interface configuration mode is classic) even if ip-filter 37 does not yet exist in the configuration.
Before switching the management interface configuration mode to model-driven or mixed, all loose references using IDs must be replaced with references using string names (or removed from the configuration) for the following elements:
In the following configuration example,
can be changed to
Because ip-filter 37 is a loose reference, it does not require a name for the configuration to be valid. However, it may be desirable to assign a name as follows, to make the binding operational.
![]() | Note: A name can only be assigned to a filter or any element in the above list of elements which use IDs as keys in classic interfaces but string names in model-driven interfaces. It is recommended to assign names to the elements prior to an upgrade to Release 15.1.R1. A name can also be changed in releases prior to Release 15.1.R1. Elements without names are automatically assigned a name (the ID converted to a string) during an upgrade to Release 15.1.R1 or later, and cannot be changed without manually deleting and recreating the element. |
Loose references to IDs for the objects listed above cannot be created while in mixed or model-driven configuration mode. Any classic CLI scripts must also be updated to avoid the use of any of the commands below.
The following lists the set of affected loose references. Some items take a service-name as an input. SR OS converts these service-names to IDs, and stores the IDs in the configuration. In these cases, the service-name becomes an alias at configuration edit time and is not stored as a reference.
IPSec related configuration:
Eth-cfm, oam-pm, and saa:
Filters:
PKI:
QoS:
Subscriber Management:
Miscellaneous:
Depending on the size of the system configuration, transitioning away from classic mode may take several seconds to several minutes while the model-driven database is populated and synchronized to the current configuration. During the transition period, configuration changes are not allowed and service is not affected.
Transitioning to classic mode is immediate with no impact to services on the router.
The CLI engine refers to the CLI environment that is being used in a user session (for example, console, Telnet, or SSH) to configure and operate the router. The CLI engine is either the classic CLI engine or the MD-CLI engine. The following terms are also used:
The default preferred CLI engine and authorized CLI engines for a session are determined by the management interface configuration mode, which eliminates the need to explicitly configure the CLI engine. With the use of these dynamic defaults, it is possible to transition between the different configuration modes. Table 56 summarizes the CLI engines for the management interface configuration modes.
Management Interface Configuration Mode | Default Preferred CLI Engine | Default Authorized CLI Engines |
classic | classic-cli | classic-cli |
model-driven | md-cli | md-cli, classic-cli (read-only) |
The preferred CLI engine, and the authorized CLI engines for a session can be changed to use either the classic CLI or the MD-CLI engine.
In the classic CLI, the first engine configured is the preferred CLI engine. The default is no cli-engine.
In the MD-CLI, the cli-engine parameter is a user-ordered list, and the first engine from that list is configured as the preferred CLI engine. Leaving the cli-engine parameter unconfigured (or deleting the cli-engine values) maintains or reverts to the dynamic default. Table 57 summarizes the possible actions available with the MD-CLI cli-engine configuration.
![]() | Note: In order for the changes to the cli-engine parameter to take effect, log out of the CLI session and start a new session. |
cli-engine Configuration | Preferred CLI engine | Authorized CLI engines | Description |
[classic-cli] | classic-cli | classic-cli | User is restricted to the classic CLI engine |
[classic-cli md-cli] | classic-cli | classic-cli, md-cli | User can switch between classic CLI and MD-CLI engines in a session |
[md-cli classic-cli] | md-cli | md-cli, classic-cli | User can switch between MD-CLI and classic CLI engines in a session |
[md-cli] | md-cli | md-cli | User is restricted to the MD-CLI engine |
Refer to the MD-CLI User Guide for information about using the MD-CLI to manage to router.