Junos YANGモジュールについて
ジュニパーネットワークスは、設定および運用状態データ、運用コマンド、Junos 拡張に YANG モデルを使用して、Junos デバイスのスキーマを公開しています。以下のセクションでは、ネイティブのJunos YANGモジュールについて説明します。
Junos YANG モジュールの概要
ジュニパーネットワークスは、Junos OSを実行するデバイスとJunos OS Evolvedを実行するデバイスの設定階層、運用コマンド、状態データ、YANG拡張機能とタイプを定義するYANGモジュールを提供しています。Junos OS リリース 17.2 以降、YANG モジュールはデバイス ファミリーに固有です。 表1 は、さまざまなデバイスファミリーの識別子の概要と、各ファミリーに含まれるプラットフォームを示しています。Junos OS Evolvedリリース23.4R2以降、すべてのJunos OS Evolvedプラットフォームでは、 junos
デバイスファミリーの識別子が使用されます。
デバイスファミリー識別子 |
Junos OSプラットフォーム |
Junos OS Evolvedプラットフォーム |
---|---|---|
Junos |
ACXシリーズ |
ACXシリーズ |
junos-es |
Jシリーズ |
– |
junos-ex |
EXシリーズ(一部のプラットフォーム) |
– |
junos-qfx |
QFX シリーズ |
QFX シリーズ(23.2 以前) |
同じシリーズ内の異なるプラットフォームは、異なるデバイスファミリに分類される場合があります。Junos OS Evolvedリリース23.4R1以前を実行しているデバイスやJunos OSを実行しているデバイスでは、デバイスで show system information
動作モードコマンドまたは <get-system-information/>
RPCを実行することで、特定のデバイスのファミリーを検証できます。コマンド出力の Family
フィールドの値または RPC 応答の <os-name>
要素は、デバイス ファミリを示します。
Junos OS リリース 17.4R1 以降、設定 YANG モジュールはルート モジュールに分割され、ルート モジュールには複数の小さなモジュールが追加されます。さらに、ネイティブのJunos YANGモジュールでは、モジュール名、ファイル名、ネームスペースに新しい命名規則が使用されます。モジュール名とファイル名には、デバイスファミリーと、モジュール内のスキーマが属する設定またはコマンド階層の領域が含まれます。モジュール ファイル名には、改訂日も含まれます。 表 2 は、Junos デバイスにネイティブな YANG モジュールの概要と、異なるモジュール名が使用されているリリースを示しています。
ファミリ固有のスキーマを必要とせず、すべてのプラットフォームに共通のモジュールは、モジュールの名前、ファイル名、および名前空間に junos
デバイス ファミリを使用します。
Junos YANG モジュール |
形容 |
モジュール名 |
リリース |
---|---|---|---|
構成モジュール |
Junos構成階層のスキーマを定義します。 Junos OSリリース17.4R1以降、設定YANGモジュールはルートモジュール(family-conf-root)に分割され、複数の小さなモジュールで拡張されます。 |
|
14.2 から 17.3 |
|
17.4R1 以降 |
||
操作コマンドモジュール |
は、運用コマンド階層と、運用モードコマンドのリモートプロシージャコール(RPC)を定義するモジュールの集合グループを表します。コマンド階層の異なる領域に対して個別のモジュールがあります。 |
|
16.1 から 17.3 |
|
17.4R1 以降 |
||
junos-state 状態モジュール |
運用状態データ用に厳選された YANG モジュールのセット。 | junos-state-area |
22.2R1 以降 |
|
運用状態のYANGデータモデルを定義します。モデルは、gNMI |
|
24.2R1以降(Junos OS Evolved) |
DDL 拡張モジュール |
Junos デバイス用のデータ定義言語(DDL)ステートメントが含まれます。 このモジュールには、特別なキーワードを使用する構成階層の制約を識別する |
|
15.1 から 17.3 |
|
17.4R1 以降 |
||
ODL 拡張モジュール |
Junosデバイスで実行されるRPC用にフォーマットされたASCII出力を作成およびカスタマイズするために使用できる出力定義言語(ODL)ステートメントが含まれます。 |
|
16.1 から 17.3 |
|
17.4R1 以降 |
||
メタデータ注釈拡張モジュール |
構成操作のメタデータ注釈を定義します。 注釈は、RFC 7952 Defined and Use Metadata with YANG で定義されています。 |
junos-configuration-metadata |
22.2R1以降(Junos OS Evolved) |
型モジュール |
YANG 型の定義が含まれています。 |
|
17.4R1 以降 |
異なるリリースの異なるデバイス ファミリの YANG モジュールをサポートするために、ダウンロードされたモジュールはデバイス ファミリ別に整理され、各モジュールの名前、ファイル名、および名前空間は、モジュール内のスキーマが属するデバイス ファミリを反映します。
モジュールの入手方法については、 Junos YANG モジュールのダウンロードと生成を参照してください。
モジュールの名前空間については、 Junos YANG モジュールの名前空間とプレフィックスについてを参照してください。
Junos YANGモジュールのダウンロードと生成
Junos OSおよびJunos OS Evolved YANGモジュールは、次の方法で取得できます。
-
ジュニパーネットワークスのウェブサイト(https://www.juniper.net/support/downloads)からモジュールをダウンロードする
-
Juniper/yang GitHub リポジトリからのモジュールのダウンロード
-
ジュニパーネットワークスのデバイスでのモジュールの生成
Junos OS Evolvedリリース23.4R1以降、Junos OS EvolvedネイティブYangモジュールをジュニパーネットワークスのダウンロードサイトとGitHubで公開しています。以前のリリースでは、デバイス上でモジュールを生成する必要があります。
Junos OS リリース 17.1 以前では、ジュニパーネットワークスの Web サイトおよび GitHub に掲載されている Junos OS 設定およびコマンド階層用の YANG モジュールによって、その Junos OS リリースが実行されているすべてのデバイスのスキーマが定義されています。対照的に、ローカルデバイスで生成されたYANGモジュールは、そのデバイスに固有のスキーマを定義します。デバイス固有のスキーマには、ネイティブ モジュールと、デバイスに追加された標準モジュールまたはカスタム モジュールの両方のノードが含まれます。
Junos OS リリース 17.2 以降、Junos YANG モジュールはデバイス ファミリーに固有であり、各モジュールの名前空間はモジュール内のスキーマが属するデバイス ファミリーを反映します。その結果、ダウンロード パッケージと GitHub リポジトリには、デバイス ファミリのモジュールごとに個別のディレクトリと、すべてのデバイス ファミリに共通のモジュール用の 共通 ディレクトリが含まれます。各ファミリ固有のディレクトリは、デバイスファミリ識別子をディレクトリ名として使用し、そのファミリのプラットフォームでサポートされている設定および操作コマンドモジュールが含まれています。デバイス ファミリ識別子は 、表 1 で定義されています。Junos OS リリース 17.2 を実行しているローカル デバイスで生成された YANG モジュールは、引き続きそのデバイスに固有のスキーマを定義します。
Junos OS リリース 17.4R1 以降、ローカル デバイスで生成される YANG モジュールには、デフォルトでファミリー固有のスキーマが含まれています。これは特定のデバイス ファミリーのすべてのデバイスで同一です。デバイス固有のモジュールを生成するには、[edit system services netconf yang-modules]
階層レベルで device-specific
設定ステートメントを設定します。
表 3 は、さまざまな Junos OS リリース向けにダウンロードおよび生成された YANG モジュールのスキーマの範囲をまとめたものです。
Junos OSリリース |
ダウンロードされたモジュールのスキーマの範囲 |
生成されたモジュール内のスキーマのスコープ |
---|---|---|
17.1 およびそれ以前 |
すべてのデバイス |
デバイス |
17.2 から 17.3 |
デバイスファミリー |
デバイス |
17.4R1 以降 |
デバイスファミリー |
デバイスファミリー |
Junos OS Evolvedリリース23.4R1以降、Junos OS Evolved YANGモジュールはジュニパーネットワークスのダウンロードサイトとGitHubで公開されています。以前のリリースでは、デバイス上でモジュールを生成する必要があります。
さらに、Junos OSリリース23.4R1およびJunos OS Evolvedリリース23.4R1以降、特定のOSとリリースのすべてのYANGデータモデルを、単一のダウンロードパッケージとGitHubリポジトリフォルダで提供します。パッケージとリポジトリフォルダには、次のものが含まれます。
-
ネイティブ構成、状態、および RPC データ モデル
-
そのOSでサポートされているOpenConfigの構成と状態モデル
-
そのOSでサポートされているIETFモデル
Junos OS YANGモジュールをダウンロードまたは生成する方法の詳細については、次を参照してください :ジュニパーネットワークスのYANGモジュールを使用する。
Junos YANG モジュールの名前空間とプレフィックスについて
Junos OS リリース 17.1 以前では、Junos YANG モジュールは、各モジュールの名前空間を区別するために一意の識別子を使用します。
namespace "http://yang.juniper.net/yang/1.1/module-id;
Junos OS リリース 17.2R1 以降、Junos YANG モジュールはデバイス ファミリーに固有です。特定のリリースの異なるデバイスファミリーに対して個別のYANGモジュールをサポートするために、YANGモジュールは、識別子に加えて、モジュール名、デバイスファミリー、Junos OSリリース文字列を含む名前空間を使用します。例えば:
namespace "http://yang.juniper.net/yang/1.1/module-id/module-name/device-family/release";
Junos OS リリース 17.4R1 以降、名前空間は簡素化され、デバイス ファミリ、モジュール タイプ、および各モジュールに固有の識別子、モジュールの名前空間を他のモジュールの名前空間と区別する識別子が含まれるようになりました。
namespace "http://yang.juniper.net/device-family/type/identifier";
次の定義は、その変数が表示される名前空間のすべてのバージョンに適用されます。
device-family |
モジュール内のスキーマが属するデバイス ファミリの識別子 ( デバイス固有のスキーマを持つモジュールとファミリ固有のスキーマを持つモジュールは、どちらも名前空間で同じデバイス ファミリ識別子を使用します。
手記:
共通モジュールは名前空間で |
identifier |
モジュールの名前空間を他のモジュールの名前空間と区別する文字列。 Junosの設定およびコマンドモジュールには、モジュール内のスキーマが属する設定またはコマンド階層の領域を示す識別子が含まれています。 |
module-id |
モジュールに固有の一意の識別子 ( |
module-name |
そのファイルに含まれる YANG モジュールの名前( |
release |
そのモジュールのスキーマがサポートされているJunos OSまたはJunos OS Evolvedリリース。 |
type |
モジュールのタイプ。可能な値は次のとおりです。
|
表 4 は、各リリースにおける各モジュールの名前空間 URI とプレフィックス (モジュールの prefix
ステートメントで定義) の概要を示しています。Junos OS リリース 17.2 以降、各運用コマンド モジュールのプレフィックスは、そのモジュールに含まれる RPC のコマンド階層領域を反映します。同様に、Junos OS Release 17.4R1以降、各設定YANGモジュールのプレフィックスは、そのモジュールに含まれる設定ステートメント階層を反映します。Junos YANG 拡張機能と型モジュールは、名前空間で junos
デバイス ファミリ識別子を使用しますが、モジュールはすべてのデバイス ファミリに共通です。
ヤンモジュール |
解放 |
名前空間 URI |
接頭辞 |
---|---|---|---|
構成モジュール |
17.1 およびそれ以前 |
http://yang.juniper.net/yang/1.1/jc |
|
17.2 から 17.3 |
http://yang.juniper.net/yang/1.1/jc/configuration/device-family/release |
|
|
17.4R1 以降 |
http://yang.juniper.net/device-family/conf/hierarchy |
|
|
操作コマンドモジュール |
17.1 およびそれ以前 |
http://yang.juniper.net/yang/1.1/jrpc |
|
17.2 から 17.3 |
http://yang.juniper.net/yang/1.1/jrpc/module-name/device-family/release |
hierarchy |
|
17.4R1 以降 |
http://yang.juniper.net/device-family/rpc/hierarchy |
hierarchy |
|
junos-state 状態モジュール |
22.2R1 以降 | http://yang.juniper.net/junos/state/state-area |
js-area |
|
24.2R1 以降 |
|
|
DDL 拡張モジュール |
17.1 およびそれ以前 |
http://yang.juniper.net/yang/1.1/je/ |
|
17.2 以降 |
http://yang.juniper.net/yang/1.1/je/junos-extension/junos/release |
|
|
17.4R1 以降 |
http://yang.juniper.net/junos/common/ddl-extensions |
|
|
ODL 拡張モジュール |
17.1 およびそれ以前 |
http://yang.juniper.net/yang/1.1/jodl |
|
17.2 から 17.3 |
http://yang.juniper.net/yang/1.1/jodl/junos-extension-odl/junos/release |
|
|
17.4R1 以降 |
http://yang.juniper.net/junos/common/odl-extensions |
|
|
メタデータ注釈拡張モジュール |
22.2R1 以降 |
http://yang.juniper.net/junos/jcmd |
jcmd |
型モジュール |
17.4R1 以降 |
http://yang.juniper.net/junos/common/types |
|
Junos OS リリース 17.2 以降、[edit system services netconf]
階層レベルで rfc-compliant
ステートメントを設定し、NETCONF セッションで設定データをリクエストすると、サーバは <configuration>
要素のデフォルトの名前空間を、対応する YANG モデルと同じ名前空間に設定します。例えば:
<rpc> <get-config> <source> <running/> </source> </get-config> </rpc> ]]>]]> <nc:rpc-reply xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/17.2R1/junos"> <nc:data> <configuration xmlns="http://yang.juniper.net/yang/1.1/jc/configuration/junos/17.2R1.13" junos:commit-seconds="1493761452" junos:commit-localtime="2017-05-02 14:44:12 PDT" junos:commit-user="user"> ... </configuration> </nc:data> </nc:rpc-reply> ]]>]]>
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。
junos-qfx
の代わりに
junos
デバイスファミリー識別子を使用するようになりました。
junos:command
拡張ステートメントを含めます。