YANG

YANG(Yet Another Next Generation):データモデル言語の紹介



YANGは、ネットワーク機器の構成や状態のモデル化を目的としたデータモデル言語です。この言語は、主にNETCONFやRESTCONFといったネットワーク管理プロトコルと連携して利用されます。YANGを用いることで、ネットワーク機器の設定や状態、リモートプロシージャコール(RPC)、通知の内容を体系的に定義できます。

YANGの特徴



モジュール構造


YANGにおいて、モジュールは基本的な構造単位です。ネットワーク機器や機能に基づいて、単一のモジュールで全体をカバーすることもできますし、機能ごとに複数のモジュールを作成して親モジュールにまとめることも可能です。この場合、関連付けられたモジュールは「サブモジュール」と呼ばれ、サブモジュールはさらに他のサブモジュールを含むことができます。通常、モジュールやサブモジュールは各々独立したファイルに記述され、親モジュールがサブモジュールを取り込む際には「include」ステートメントを使います。

データの木構造定義


YANGには、データの構造を四つの主要なステートメントで表現します。これにより、木構造形式のデータモデルを効果的に作成できます。
  • - leaf:単一のスカラー値を持つノードを定義します。leafで定義されたノードは追加の下位構造を持たないのが特徴です。
  • - leaf-list:同型の値を持つノードの配列を定義します。この配列に含まれる各値は一意である必要があります。
  • - container:他のノードのまとまりとして機能し、木構造における枝として役立ちます。container自体は直接の値を持ちません。
  • - list:同族の下位構造を複数保持するためのステートメントで、その名の通りリストを形成します。リスト内には「key」ステートメントが含まれ、主キーの役割を果たします。

状態のモデル化


YANGを使用することで、機器の設定を保持するノードだけでなく、機器の状態を示すノードも定義できます。この機能は、NETCONFのget操作によって取得された情報を管理するために有用です。状態ノードはconfigステートメントでfalseに設定されており、これにより設定ノードとは区別されています。

組み込まれたデータ型


YANGでは、いくつかのデータ型が元から用意されています。これら組み込みのデータ型、または他の導出されたデータ型を組み合わせたり、制限を設けることで新たな型を定義し、それをノードに適用できます。型の定義にはtypedefステートメントを使用します。

ノードの再利用


groupingステートメントを活用することで、特定のノードをグループとしてまとめ、モデル内で再利用することが可能です。この機能により、異なる部分で同じデータ構造を持つ場合に定義を統一でき、整合性が保たれます。

モデルの拡張


既存のモデルを拡張する場合、augmentステートメントを利用して他のモジュールを追加することができます。これは、標準的な構成と特定のベンダーによる独自の設定を統合する際に役立つ方法です。

RPCと通知のモデル化


rpcステートメントを用いると、NETCONFなどのRPCインターフェースのモデル化が可能です。これにより、入力パラメータや出力情報の型をそれぞれinputステートメントとoutputステートメントで定義できます。また、機器から発信される通知の情報型も定義できます。

他のデータ形式への変換


YANGのモデルはXMLやYINとして表現でき、これによりXML解析が可能なアプリケーションや機器での利用が容易になります。また、YANGモデルをDSDL形式で表現することも推奨され、これに関する具体的なマッピングはRFC 6110に規定されています。さらに、JSON形式への変換に関してはRFC 7951でその手法が取り決められています。

仕様と実装


YANGに関する仕様は、以下のRFCによって定義されています:
  • - RFC 6020:NETCONF用のデータモデリング言語としてのYANG
  • - RFC 7950:YANG 1.1データモデリング言語

YANGの実装には、Pythonで書かれたモデル検証ツールである「pyang」や、モデルの視覚化やRPC実行機能を持つ「YangExplorerFlash」が含まれます。

公式サイトと関連リソース


公式サイトや関連する外部リソースでは、YANGに関するさまざまなツールやチュートリアルが提供されています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。