Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Understanding Junos YANG Modules

Juniper Networks publishes the schema for Junos devices using YANG models for the configuration and operational state data, operational commands, and Junos extensions. The following sections discuss the native Junos YANG modules.

Junos YANG Modules Overview

Juniper Networks provides YANG modules that define the configuration hierarchies, operational commands and state data, as well as YANG extensions and types, for devices running Junos OS and devices running Junos OS Evolved. Starting in Junos OS Release 17.2, the YANG modules are specific to a device family. Table 1 outlines the identifiers for the different device families and indicates which platforms are included in each family. Starting in Junos OS Evolved Release 23.4R2, all Junos OS Evolved platforms use the junos device family identifier.

Table 1: Junos Device Families

Device Family Identifier

Junos OS Platforms

Junos OS Evolved Platforms

junos

ACX Series
EX Series (certain platforms)
MX Series
PTX Series

ACX Series
PTX Series
QFX Series (23.4R2 and later)

junos-es

J Series
LN Series
SRX Series

junos-ex

EX Series (certain platforms)

junos-qfx

QFX Series

QFX Series (23.2 and earlier)

Note:

Different platforms within the same series might be categorized under different device families. On devices running Junos OS Evolved Release 23.4R1 and earlier and devices running Junos OS, you can verify the family for a specific device by executing the show system information operational mode command or the <get-system-information/> RPC on the device. The value of the Family field in the command output or the <os-name> element in the RPC reply indicates the device family.

Starting in Junos OS Release 17.4R1, the configuration YANG module is split into a root module that is augmented by multiple smaller modules. Additionally, the native Junos YANG modules use a new naming convention for the module's name, filename, and namespace. The module name and filename include the device family and the area of the configuration or command hierarchy to which the schema in the module belongs. The module filename also includes a revision date. Table 2 summarizes the YANG modules that are native to Junos devices and identifies the release in which the different module names are used.

Note:

Modules that do not require family-specific schemas and that are common to all platforms use the junos device family for the module's name, filename, and namespace.

Table 2: Juniper Networks Native YANG Modules

Junos YANG Module

Description

Module Name

Releases

Configuration modules

Define the schema for the Junos configuration hierarchy.

Starting in Junos OS Release 17.4R1, the configuration YANG module is split into a root module (family-conf-root) that is augmented by multiple smaller modules.

configuration

14.2 through 17.3

family-conf-hierarchy

17.4R1 and later

Operational command modules

Represent the operational command hierarchy and the collective group of modules that define the remote procedure calls (RPCs) for operational mode commands. There are separate modules for the different areas of the command hierarchy.

juniper-command

16.1 through 17.3

family-rpc-hierarchy

17.4R1 and later

junos-state state modules Curated set of YANG modules for operational state data. junos-state-area 22.2R1 and later

genstate state modules

Define YANG data models for operational state. The models expose a subset of show command data through the gNMI subscribe RPC. The genstate modules comprise a top-level root module augmented by modules for each operational state area.

junos-genstate-root-tag

24.2R1 and later (Junos OS Evolved)

DDL extensions module

Contains Data Definition Language (DDL) statements for Junos devices.

This module includes the must and must-message keywords, which identify configuration hierarchy constraints that use special keywords. The module also includes statements that are required in custom RPCs.

junos-extension

15.1 through 17.3

junos-common-ddl-extensions

17.4R1 and later

ODL extensions module

Contains Output Definition Language (ODL) statements that can be used to create and customize formatted ASCII output for RPCs executed on Junos devices.

junos-extension-odl

16.1 through 17.3

junos-common-odl-extensions

17.4R1 and later

Metadata annotations extensions module

Defines metadata annotations for configuration operations.

Annotations are defined in RFC 7952, Defining and Using Metadata with YANG.

junos-configuration-metadata

22.2R1 and later (Junos OS Evolved)

Types module

Contains definitions for YANG types.

junos-common-types

17.4R1 and later

To support YANG modules for different device families in different releases, the downloaded modules are organized by device family, and each module’s name, filename, and namespace reflects the device family to which the schema in the module belongs.

For information about obtaining the modules, see Download and Generate Junos YANG modules.

For information about the module namespaces, see Understanding Junos YANG Module Namespaces and Prefixes.

Download and Generate Junos YANG modules

You can retrieve the Junos OS and Junos OS Evolved YANG modules by:

Note:

Starting in Junos OS Evolved Release 23.4R1, we publish the Junos OS Evolved native Yang modules on the Juniper Networks download site and on GitHub. In earlier releases, you must generate the modules on the device.

In Junos OS Release 17.1 and earlier, the YANG modules for the Junos OS configuration and command hierarchies that are posted on the Juniper Networks website and in GitHub define the schema for all devices running that Junos OS release. By contrast, the YANG modules generated on the local device define the schema specific to that device. The device-specific schema includes nodes both from native modules and from any standard or custom modules that were added to the device.

Starting in Junos OS Release 17.2, Junos YANG modules are specific to a device family and each module’s namespace reflects the device family to which the schema in the module belongs. As a result, the download package and GitHub repository include a separate directory for each device family’s modules and a common directory for the modules that are common to all device families. Each family-specific directory uses its device family identifier as the directory name and contains the configuration and operational command modules that are supported on the platforms in that family. The device family identifiers are defined in Table 1. The YANG modules generated on a local device running Junos OS Release 17.2 still define the schema specific to that device.

Starting in Junos OS Release 17.4R1, the YANG modules generated on a local device, by default, contain family-specific schemas, which are identical across all devices in the given device family. To generate device-specific modules, configure the device-specific configuration statement at the [edit system services netconf yang-modules] hierarchy level.

Table 3 summarizes the scope of the schema in the downloaded and generated YANG modules for different Junos OS releases.

Table 3: Scope of Junos OS YANG Schema

Junos OS Release

Scope of Schema in Downloaded Modules

Scope of Schema in Generated Modules

17.1 and earlier

All devices

Device

17.2 through 17.3

Device family

Device

17.4R1 and later

Device family

Device family

Starting in Junos OS Evolved Release 23.4R1, we publish the Junos OS Evolved YANG modules on the Juniper Networks download site and on GitHub. In earlier releases, you must generate the modules on the device.

Additionally, starting in Junos OS Release 23.4R1 and Junos OS Evolved Release 23.4R1, we provide all YANG data models for a given OS and release in a single download package and GitHub repository folder. The package and repository folder include:

  • Native configuration, state, and RPC data models

  • OpenConfig configuration and state models supported by that OS

  • IETF models supported by that OS

For more information about how to download or generate the Junos OS YANG modules, see Use Juniper Networks YANG Modules.

Understanding Junos YANG Module Namespaces and Prefixes

In Junos OS Release 17.1 and earlier, Junos YANG modules use a unique identifier to differentiate the namespace for each module.

Starting in Junos OS Release 17.2R1, the Junos YANG modules are specific to a device family. To support distinct YANG modules for different device families in a given release, the YANG modules use a namespace that includes the module name, the device family, and the Junos OS release string, in addition to the identifier. For example:

Starting in Junos OS Release 17.4R1, the namespace is simplified to include the device family, the module type, and an identifier that is unique to each module and that differentiates the namespace of the module from that of other modules.

The following definitions apply to all versions of the namespace in which that variable appears:

device-family

Identifier for the device family to which the schema in the module belongs, for example, junos, junos-es, junos-ex, or junos-qfx. The different device families are outlined in Table 1.

Modules with device-specific schemas and modules with family-specific schemas both use the same device family identifier in the namespace.

Note:

The common modules use the junos device family identifier in the namespace, but the modules are common to all device families.

identifier

String that differentiates the namespace of the module from that of other modules.

Junos configuration and command modules include an identifier that indicates the area of the configuration or command hierarchy to which the schema in the module belongs. Genstate modules use an identifier that indicates the operational state area in the module. Common modules use the module name differentiator as an identifier, for example odl-extensions.

module-id

Unique identifier specific to the module, for example, jc, jrpc, je, or jodl.

module-name

Name of the YANG module included in that file, for example, configuration or junos-extension. Each of the individual juniper-command modules uses its own unique module name in the namespace, for example, show-class-of-service.

release

Junos OS or Junos OS Evolved release in which the schema in that module is supported.

type

Type of the module. Possible values include:

  • conf—Configuration YANG module that defines the schema for the indicated area of the configuration.

  • rpc—Operational command YANG module that defines the RPCs for operational commands in the indicated area of the command hierarchy.

  • common—Extension or type module that is common across all device families.

  • genstate—YANG module that defines operational state data.

Table 4 outlines each module’s namespace URI and prefix (as defined by the module’s prefix statement) in the different releases. Starting in Junos OS Release 17.2, the prefix for each operational command module reflects the command hierarchy area of the RPCs included in that module. Similarly, starting in Junos OS Release 17.4R1, the prefix for each configuration YANG module reflects the configuration statement hierarchy that is included in that module. The Junos YANG extension and type modules use the junos device family identifier in the namespace, but the modules are common to all device families.

Table 4: Namespaces and Prefixes for Junos YANG Modules

YANG Module

Release

Namespace URI

Prefix

Configuration modules

17.1 and earlier

http://yang.juniper.net/yang/1.1/jc

jc

17.2 through 17.3

http://yang.juniper.net/yang/1.1/jc/configuration/device-family/release

jc

17.4R1 and later

http://yang.juniper.net/device-family/conf/hierarchy

jc (root module)

jc-hierarchy

Operational command modules

17.1 and earlier

http://yang.juniper.net/yang/1.1/jrpc

jrpc

17.2 through 17.3

http://yang.juniper.net/yang/1.1/jrpc/module-name/device-family/release

hierarchy

17.4R1 and later

http://yang.juniper.net/device-family/rpc/hierarchy

hierarchy

junos-state state modules 22.2R1 and later http://yang.juniper.net/junos/state/state-area js-area

genstate state models

24.2R1 and later

http://yang.juniper.net/junos/genstate/root-tag

jgs (root module)

DDL extensions module

17.1 and earlier

http://yang.juniper.net/yang/1.1/je/

junos

17.2 and later

http://yang.juniper.net/yang/1.1/je/junos-extension/junos/release

junos

17.4R1 and later

http://yang.juniper.net/junos/common/ddl-extensions

junos

ODL extensions module

17.1 and earlier

http://yang.juniper.net/yang/1.1/jodl

junos-odl

17.2 through 17.3

http://yang.juniper.net/yang/1.1/jodl/junos-extension-odl/junos/release

junos-odl

17.4R1 and later

http://yang.juniper.net/junos/common/odl-extensions

junos-odl

Metadata annotations extensions module

22.2R1 and later

http://yang.juniper.net/junos/jcmd jcmd

Types module

17.4R1 and later

http://yang.juniper.net/junos/common/types

jt

Starting with Junos OS Release 17.2, when you configure the rfc-compliant statement at the [edit system services netconf] hierarchy level and request configuration data in a NETCONF session, the server sets the default namespace for the <configuration> element to the same namespace as in the corresponding YANG model. For example:

Change History Table

Feature support is determined by the platform and release you are using. Use Feature Explorer to determine if a feature is supported on your platform.

Release
Description
23.4R2-EVO
Starting in Junos OS Evolved Release 23.4R2, native YANG modules for QFX Series devices use the junos device family identifier instead of junos-qfx.
23.4R1 and 23.4R1-EVO
Starting in Junos OS Release 23.4R1 and Junos OS Evolved Release 23.4R1, we provide all YANG data models for a given OS and release in a single download package and GitHub repository folder.
23.4R1-EVO
Starting in Junos OS Evolved Release 23.4R1, we publish the Junos OS Evolved native YANG modules on the Juniper Networks download site and on GitHub. In earlier releases, you must generate the modules on the device.
22.4R1 and 22.4R1-EVO
Starting in Junos OS Release 22.4R1 and Junos OS Evolved Release 22.4R1, YANG modules that define RPCs include the junos:command extension statement in schemas emitted with extensions.
17.4R1
Starting in Junos OS Release 17.4R1, the configuration YANG module is split into a root module that is augmented by multiple smaller modules, and the native Junos OS YANG modules use a new naming convention for the module's name, filename, and namespace.
17.4R1
Starting in Junos OS Release 17.4R1, the YANG modules generated on a local device, by default, contain family-specific schemas, which are identical across all devices in the given device family.
17.2R1
Starting in Junos OS Release 17.2, Junos OS YANG modules are specific to a device family and each module’s namespace reflects the device family to which the schema in the module belongs.
17.2R1
Starting in Junos OS Release 17.2, the prefix for each operational command module reflects the command hierarchy area of the RPCs included in that module.