SR OS supports two classes of management interfaces:
Unless otherwise indicated, the term “CLI” in the SR OS user documentation refers to the classic CLI. The classic CLI has been supported in SR OS from the initial introduction of SR OS. Refer to the 7450 ESS, 7750 SR, 7950 XRS, and VSR Classic CLI Command Reference Guide for information about classic CLI commands.
The MD-CLI is a model-driven CLI introduced in SR OS Release 16.0.R1. Refer to the 7450 ESS, 7750 SR, 7950 XRS, and VSR MD-CLI User Guide and the 7450 ESS, 7750 SR, 7950 XRS, and VSR MD-CLI Command Reference Guide for information about MD-CLI commands.
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 model-driven interfaces are similar to the classic CLI interfaces with the following notable differences.
SR OS routers can be in different management interface configuration modes, which affects the management interfaces that can be used to configure the router. The following interfaces are available for configuration on SR OS:
Use the configure system management-interface configuration-mode command to enable configuration editing by model-driven interfaces.
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 21).
Configuration Mode | ||||
Classic | Mixed | Model-driven | ||
Classic Interfaces | Classic CLI: configuration write | ✓ | ✓ |
|
Classic CLI: configuration read | ✓ | ✓ | ✓ | |
Classic CLI: non-configuration commands | ✓ | ✓ | ✓ | |
SNMP: configuration write | ✓ |
|
| |
SNMP: non-configuration writes (such as admin reboot) | ✓ |
|
| |
SNMP: configuration read | ✓ | ✓ | ✓ | |
SNMP: state read | ✓ | ✓ | ✓ | |
SNMP: notifications (traps) | ✓ | ✓ | ✓ | |
Model-driven Interfaces with Nokia YANG Models | MD-CLI: configuration write and read | ✓ | ✓ | |
MD-CLI: state read | ✓ | ✓ | ✓ | |
NETCONF: configuration write and read |
| ✓ | ✓ | |
NETCONF: state read | ✓ | ✓ | ✓ | |
gNMI Set/Get: configuration write and read | ✓ | ✓ | ||
gNMI Get: state read | ✓ | ✓ | ✓ | |
gNMI Telemetry: configuration read |
| ✓ | ✓ | |
gNMI Telemetry: state read | ✓ | ✓ | ✓ | |
Saved Configuration File Format | bof | Classic | Classic | Classic |
configure | Classic | Classic | MD | |
debug | Classic | Classic | MD | |
li | Classic | Classic | MD | |
Features | OpenConfig YANG models | ✓ | ||
Commit history | ✓ | |||
Configuration annotations | ✓ | |||
Configuration groups | ✓ | |||
MD-CLI rollback command | ✓ | |||
Classic CLI admin rollback revert command | ✓ | ✓ |
| |
Explicit defaults 1 | ✓ | |||
Explicit non-deletable SPC objects 2 | ✓ | |||
Configuration changes accepted immediately after a CPM high-availability switchover 3 | ✓ | ✓ | ||
Named route policy entries | ✓ | |||
gRPC MD-CLI service for the NISH client | ✓ | |||
Remote management using the NISH manager | ✓ |
Notes:
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 (NETCONF, gRPC/gNMI, and the MD-CLI) take the same common underlying YANG modules and render them for the particular management interface. These YANG models are also used for telemetry.
SR OS supports:
The Nokia SR OS YANG modules are the base for the model-driven architecture.
SR OS configuration is divided into several top level configuration regions (see Datastores and Regions for details). The data models for each configuration region are separated into different YANG modules.
The primary configuration region (configure) is modeled in the nokia-conf YANG module specified in a single file located at YANG/nokia-combined/nokia-conf.yang in the SR OS image distribution.
An alternative packaging of the primary configuration region is also available as a set of submodules (for example, nokia-conf-system) that belong to a single module located at YANG/nokia-conf.yang in the SR OS image distribution. The submodules have independent revision dates and can be used to identify which parts of the configuration model have changed.
The packaging options (combined and submodule) are alternate representations of the same data model. There is no difference between using the combined or submodule packaging for all the basic configuration or state operations (including with telemetry). The same containers, list, leafs, and so on, exist in the same namespaces whether you are using the combined or submodule packaging. The main difference between the combined and submodule options is seen in the NETCONF <hello>, YANG library, and <get-schema> data where there are lists of modules and submodules.
Some YANG tools may show errors about circular dependencies in the submodules. For example, Pyang gives an error about circular dependencies but does complete the processing to build complete tree or jstree output. If circular dependencies are preventing any necessary tools from correctly processing the YANG, use the combined packaging instead of the submodules. For details about enabling various sets of YANG modules, see the yang-modules commands in the 7450 ESS, 7750 SR, 7950 XRS, and VSR Classic CLI Command Reference Guide.
The lawful intercept (LI) configuration region is modeled in the nokia-li-conf YANG module specified in a single file called nokia-li-conf.yang.
The BOF configuration region is modeled in the nokia-bof-conf YANG module specified in a single file called nokia-bof-conf.yang.
SR OS state information is modeled in the nokia-state YANG module specified in a single file located at YANG/nokia-combined/nokia-state.yang in the SR OS image distribution.
LI state information is modeled in nokia-li-state.yang which augments the primary nokia-state module.
BOF state information is modeled in nokia-bof-state.yang.
There are also a series of nokia-types-* modules that are included by various configuration and state modules.
The SR OS YANG modules have 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 classic CLI clear, show, monitor, and tools branches of the CLI do not have equivalent YANG data models.
Some admin and file operations have YANG models whereby each operation is modeled using a YANG “action” statement. These can be viewed in the nokia-oper-*.yang files. See YANG-based Operations for more information.
OpenConfig presents a vendor-neutral set of YANG models. OpenConfig YANG model elements are mapped to application-specific SR OS configuration and state.
OpenConfig YANG models are available in model-driven interfaces, including the MD-CLI, gNMI, and NETCONF when enabled with the configure system management-interface yang-modules openconfig-modules command. Access to the OpenConfig models is different depending on the model-driven interface.
Nokia provides a suite of vendor-specific YANG models to configure the network element. OpenConfig is an informal working group which provides vendor-neutral YANG models based on the desired usage of a technology by the community. The Nokia vendor-specific model is a more complete representation of the capabilities of the network element, which includes vendor specific features and functions not described by the OpenConfig YANG models. The two YANG configuration models, Nokia’s vendor-specific and OpenConfig’s vendor-neutral, may be used together to configure the network element. Support for OpenConfig models can be established by examining the OpenConfig model with the vendor-specific deviations and augments.
In order to ensure complete traceability and the origin of the configuration (that is, which data model configured the feature), the Nokia and OpenConfig configuration statements are maintained separately in the configuration tree. This allows for the greatest flexibility when accommodating configuration differences between the Nokia and OpenConfig models. The configuration statements are merged, giving precedence to the Nokia model configuration statements when there is a collision (that is, when the same function is configured in both the OpenConfig and Nokia models).
In order to merge configuration for objects, the keys for an object must be equal and deterministic for both the Nokia and OpenConfig models. This provides an anchor for the object and allows the configuration to be rationalized and merged. For example, augments may have been made to OpenConfig models to allow for a deterministic key where a key function is not supported. One example is the use of the configure openconfig interfaces interface interface subinterfaces subinterface number ipv4 config primary-address option. In this case, the OpenConfig model does not allow which of the specified interfaces should be the primary. The control of the primary interface is very important.
When configuration statements are completed using one configuration model, tab completion for a name or reference identifier is not available in the other model. For example, the name or identifier of a list entry must be equally and explicitly entered in both data models in order to share the configuration elements across the different models.
There are two different approaches taken for shared model management, on a per Nokia application basis: leaf level and list level management.
An application that supports shared model management at the leaf level allows both configuration models access to the leaf and merge operations can occur at the leaf level. If both Nokia and OpenConfig models include configuration for a leaf, the Nokia configuration takes precedence. The OpenConfig configuration statements remain in its configuration database but are not applied as part of the operational configuration
An application that supports granularity at the list level allows individual list entries for an application to be managed by one model only. The configuration model that creates the list entry is the only model that can modify or delete the list entry. An attempt to modify the list entry using the configuration access method that does not manage the list entry returns an error message identifying the managing owner of the list entry.
Unless configured explicitly using the Nokia configuration model, a configuration element that does not have a static default value is managed by OpenConfig.
In some situations, partial or incomplete OpenConfig configurations may be allowed. For example, where the OpenConfig structure is accepted but the triggering mapping has not been configured under OpenConfig, the information is not pushed to the application. These partial configurations remain in the OpenConfig configuration tree as they are syntactically correct, however, without an application mapping event, they remain outside of the operating configuration. When a partial configuration is stored in the OpenConfig configuration tree, it does not show as an active element under the SR OS specific application, that is, via show commands or in the /state tree.
Applications may allow for the configuration to be delivered from either the Nokia YANG model or the OpenConfig YANG models. In many cases, applications allow some level of cooperative configuration such that the configuration statements can be received from both Nokia YANG models and OpenConfig YANG models. In order to determine the level of cooperative configuration allowed by an application, the application-specific Nokia or the nokia-conf-combined.yang YANG models can be checked for the following extension statement.
If the above statement is found, the cooperative shared model management configuration is not allowed for that element and all descendants of the element.
The level of shared model management support can be viewed via the MD CLI help if the OpenConfig YANG models have been enabled.
The models that prevent shared model management at a specific level of the hierarchy include the following statement in the help. For example, the commands in the configure policy-options policy-statement context display the following:
Validation ensures the structure and completeness of the configuration against the OpenConfig model. It does not deliver the configuration to application. It is possible that a validation succeeds when the structure and requirements of the OpenConfig model are met.
The commit function performs the validation as above, with the additional step of delivering the converted OpenConfig statements to the application. A successful validation can be followed by a failure to commit the transaction. For example, the following scenarios result in a failed commit action:
Nokia applications that include conditional “when” statements using the Nokia YANG model must have the statements satisfied by the Nokia configuration. The OpenConfig configuration cannot verify or satisfy Nokia conditional “when” statements. This approach prevents “when” statements from changing from one state to another by updating the OpenConfig statements and affecting a non-child leaf in the Nokia configuration. For example, the following message is displayed when the OpenConfig configuration sets the port ethernet mode to hybrid but the conditional “when” statement requires the Nokia configuration to satisfy the condition.
Errors can occur in situations such as the following:
Failed transactions display an error message indicating the reason for the failure. A failure maintains the complete set of YANG parameters, as if the commit function had not been issued. This allows the administrator to correct the source of the error.
In the event of a delivery error, the OpenConfig path and the Nokia path are included in the error message. A sample error message is shown below.
Several variations of the info command are available in order to collect the required operational data required to view the configuration. These include:
info - Show the configuration as explicitly entered from the current context.
info converted - Include converted third party model configuration from the running datastore. When an object is management by OpenConfig, meaning the running configuration has an entry delivered by an OpenConfig configuration statement, the object is preceded by the statement "## managed: by OpenConfig”.
info converted model openconfig - Include converted third party model configuration from the running datastore with the “## managed:” indicator removed from the output.
info inheritance - Include configuration inherited from configuration groups.
The converted and inheritance options can be combined into a single command.
For more information about the info command, see the 7450 ESS, 7750 SR, 7950 XRS, and VSR MD-CLI User Guide.
Deviation files are created for the OpenConfig model when the model deviates from the application requirements of the network elements, such as implementations that are not supported, added, or replaced, granularity mismatches, and different ranges. These deviations are included in an OpenConfig YANG file which 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 the naming format nokia-sr-<OpenConfigModule>-deviations.yang, for example, nokia-sr-openconfig-network-instance-deviations.yang.
It is not always necessary to use a deviation file where a specific function is not supported. For example, in the case of enumerations, when an enumerated OpenConfig value is not supported, the validation or commit function fails with an indication that the entry is not valid.
When a mapping exists for an attribute and the configuration is out of range, an error is generated. For example, the Nokia application configuration for leaf B has a range of 1 to 100, where the OpenConfig leaf B specifies a range of 1 to 300. When the OpenConfig value is set above 100, an unsupported value error message is returned.
As an example of a granularity mismatch, Nokia application leaf C supports centiseconds and OpenConfig leaf C supports milliseconds. If the OpenConfig value in milliseconds can be converted to a valid application value, the OpenConfig value is accepted. For example, OpenConfig leaf C 100 ms is converted to application leaf C 1 centisecond. However, if the OpenConfig value cannot be converted to a valid application value, an error is generated. For example, OpenConfig leaf C 125ms cannot be mapped into centiseconds.
Augments files are also included to add configuration for OpenConfig that is required by the Nokia application in order to function as expected. The augments file follows the naming format nokia-sr-<OpenConfigModule>-augments.yang.
As described in RFC 8342 a datastore is a conceptual place to store and access information. A datastore maps to an instantiated YANG data tree. See RFC 8342 for more information about datastores.
SR OS supports conventional configuration datastores (for example, running and candidate) as well as some proprietary datastores (for example, li-running).
SR OS also has a proprietary concept called a region (or configuration region). The set of branches and elements in the configure branch of the CLI are all located in the primary configuration region simply called configure. The majority of SR OS configuration is in the configuration region including ports, interfaces, services and filters. Examples of other regions are:
Each region has its own configuration datastores (running, candidate, and so on). The saved configuration for each region is stored in a separate file on compact flash or remotely (for example, bof.cfg, debug.cfg, config.cfg, li.cfg). Regions are independently locked for configuration changes. See the output of show system management-interface datastore-locks in the 7450 ESS, 7750 SR, 7950 XRS, and VSR Clear, Monitor, Show, and Tools Command Reference Guide for an example of per-region per-datastore information.
SR OS supports the Network Management Datastore Architecture (NMDA) for the intended datastore. When nmda-support is enabled, the following changes to the YANG model advertisements for NETCONF occur.
System-Provisioned Configuration (SPC) objects (configuration list elements and their descendants) are provided as a convenience to users in SR OS.
There are two basic classes of SPC objects: deletable and non-deletable.
Deletable SPC objects are placed into the configuration by SR OS but can be deleted (removed) by a user. The following characteristics apply to deletable SPC objects.
Non-deletable SPC (ND-SPC) objects are not added to the configuration by SR OS, but they can be referenced by other parts of the configuration even if they are not visible as part of the configuration. The following characteristics apply to ND-SPC objects.
Note: Before configuration editing is permitted in model-driven interfaces, the management interface configuration-mode must be set to model-driven or mixed after the prerequisites described in this section are completed. |
A loose reference does not require the target of the reference to exist in the configuration. For example, when the management interface configuration mode is classic, the configure service pw-template 23 egress filter ip 37 can be configured even if ip-filter 37 does not exist in the configuration.
Before switching from the classic 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:
Note: A name can only be assigned to a filter or any element in the preceding 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 in the preceding list 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 following commands.
In the following configuration example:
the configuration 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.
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
Strict routing policy validation is used for model-driven interfaces. The routing policy must exist for the management interface configuration mode to be changed. Remove references to non-existent routing policies before attempting to switch modes. Strict policy validation is applied to the following routing policy references:
Many elements use string names as keys in model-driven interfaces instead of the numerical identifiers used in the classic CLI and SNMP.
Note: The string name can only be assigned or modified for these elements in releases prior to Release 15.1.R1. Elements without names are automatically assigned a name (the identifier 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. It is recommended that the following elements are assigned names prior to an upgrade to Release 15.1 or later. |
Perform the following steps before setting the management interface configuration mode to mixed or model-driven.
Note: The command does not check if the configuration contains commands that are unsupported in model-driven interfaces. For more information, refer to section “Unsupported Configuration in MD Interfaces” in the SR OS 21.x.Rx Software Release Notes, part number 3HE 17177 000x TQZZA. |
Note:
|
The CLI engine refers to the CLI environment 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 22 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 |
mixed | classic-cli | md-cli, classic-cli |
model-driven | md-cli | md-cli, classic-cli (read-only) |
The preferred and 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 23 summarizes the supported actions for the MD-CLI cli-engine configuration.
Note: 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 |
The commit history provides a persistent history of configuration changes committed in model-driven interfaces. A separate history of the last commits (default 50, up to 200) is maintained for each configuration region (bof, configure, debug, and li). Each commit is uniquely identified by a numerical sequential incrementing commit ID assigned by the system.
The user can display the commit history with the MD-CLI show system management-interface commit-history command and also in the state model, in state system management-interface configuration-region <region-name> commit-history. The saved configuration file header also displays the commit history from the last configuration save.
An optional commit comment may be entered using the MD-CLI commit comment command or the NETCONF <commit> RPC.
The following example shows the first commit made by the system when the router boots, followed by two commits by a user with the MD-CLI.
The following example shows a fourth commit made by automation using the NETCONF <commit> RPC with the <comment> augmentation:
The following example displays the commit history after the preceding activity:
The following usage guidelines apply to the commit history.
In addition to YANG-based configuration and state, the SR OS also supports YANG-based operations (for example, admin reboot, file remove).
The SR OS YANG-based operations infrastructure applies to MD-CLI and NETCONF interfaces and is supported in any management interface configuration mode (classic, mixed, or model-driven). It is not applicable to operations requested in classic CLI, SNMP, or gRPC interfaces.
YANG-based operations are allocated an operation ID. Configure the state system management-interface operations operation operation-id command to use the operation ID as an index into the global operations table to examine the details of an operation, including the following information:
The following is a sample output that shows the contents of the global operations table while a file remove-directory command is in progress.
Configure and use the operation ID to remove an operation using the admin system management-interface operations delete-operation command. In the case where the global operations table is full, the delete-operation command can optionally be requested with the op-table-bypass option to avoid allocating an operation-id and requiring an empty entry in the table.
SR OS supports the following basic response modes for YANG-based operations:
In synchronous mode, the response to the operation request contains the complete result data and is held until the operation is complete. No additional operations can be initiated in the same management session (MD-CLI or NETCONF) until the previous operation completes. This behavior is evident in MD-CLI, for example, where the MD-CLI prompt does not return and no input is accepted until the currently running operation is completed.
In asynchronous mode, the response to the operation request does not contain the result data and is sent without waiting for the operation to complete. The request only starts the operation and the client (requester) obtains the result later. Users can perform other commands in the management session while the asynchronous operation runs in the background.
The response to an asynchronous operation request contains an operation ID. This ID is a handle for the operation and allows users to do the following:
Synchronous operations require a management session (NETCONF or MD-CLI) for each concurrent operation, whereas a single management session can manage hundreds of concurrent asynchronous operations.
Only a subset of SR OS operational commands are supported in the asynchronous response mode. See the SR OS nokia-oper-*.yang files for actions with the “asynchronous” leaf as part of the input to identify operations that support asynchronous mode.
Figure 12 shows a typical flow for an asynchronous operation.
A stopped asynchronous operation (for example, stopped using the stop-operation command) stays in the global operations table until it is explicitly deleted using a delete-operation command or the retention timeout expires. Synchronous operations are automatically removed from the global operations table when they are completed or stopped.
Note: Because of the parallel processing nature of asynchronous operations, it is possible that an operation completes before the original requester of the operation receives a reply to the request. This means a client could receive a notification about an operation ID that the client does not yet know about. |
All operations in MD-CLI execute in synchronous response mode.
The following example shows an operation with no specific result data to return.
The following example shows an operation that returns result data.
The following example shows another operation that returns result data.
The following example shows a synchronous operation with no specific result data to return.
Request:
Response:
The following example shows a synchronous operation that returns result data.
Request:
Response:
The following example shows an asynchronous operation in NETCONF.
Request:
Response:
The following example shows the global operations table status while the operation is running.
The following example shows log event output when the operation is completed.
The following is a sample of the results available in the state branch.
The following example shows the delete operation usage to clean up.