SNMPに取って代わるYANG/NETCONF

Posted on
この記事は、最終更新日から 8 年以上経過しています。 情報が古い可能性があります。

NETCONFは、IETFによって策定が進められているNetwork管理用のプロトコルです。
YANGは、NETCONFのデータを表現するための言語です。

これらは、IESG(IETFの活動と標準化プロセスの、技術的な側面についての責任を担っているグループ)によって使用が推奨され始めています。こちら

今後、SNMP/SMI2に取って代わるであろうYANG/NETCONFについて、まとめていきます。

概要

SNMPとNETCONFの仕組みはかなり似ています。

SNMPが、SNMP ManagerとSNMP Agentの間を、さまざまなMIB(SMIv2)モジュールの定義に沿って、SNMPのプロトコルでやり取りをするように、
NETCONFは、NETCONF clientとNETCONF Serverの間を、さまざまなYANGモジュールの定義に沿って、NETCONFのプロトコルでやりとりします。

SNMP NETCONF overview\

SNMPとNETCONFは、メッセージのやりとりの仕組みもかなり似ています。

どちらも、「Managerからリクエストし、Deviceが応答する仕組み」と「Deviceが能動的に、Managerに通知する仕組み」があります。

SNMP NETCONF messaging model\


では、なぜ、NETCONFを使う必要があるのでしょうか。

それには、大きく2つの理由があります。

  1. 強固なトランザクションのモデルをもっていること
    • SNMPは、トランザクションの仕組みを持っておらず、機器の設定管理には不向きでした。
    • NETCONFは、トランザクションの仕組みを持っており、妥当性の確認や、ロールバックが使用可能です。また、ネットワークにまたがって(複数の機器にまたがって)トランザクションを発行、コミットを行うことが可能です。
  2. SNMPにはない特徴をもっていること
    • YANGによる応用力のある定義が可能であること
    • YANGによって、独自のプロトコル操作が定義できること
    • データに応じたツールをサポートするための言語表現が可能なこと
    • XMLサブツリーとXPathを使って、受信したデータに対して、さまざまなフィルタができること

NETCONFのプロトコルのレイヤーについて

NETCONFのプロトコルには、4つのレイヤーがあります。それぞれのレイヤーでSNMPの場合の何に対応するのかをまとめます。

  1. コンテンツレイヤー
    • SNMPでいうところのbind変数のリストの情報が含まれます。NETCONFの場合は、XMLのサブツリーで表現します。
  2. オペレーションレイヤー
    • SNMPの場合はRFCで定義されている情報が含まれます。NETCONFの場合は、YANGでの定義の内容になります。
  3. メッセージレイヤー
    • SNMPの場合は、SNMPのPDUに該当します。NETCONFでは、リモートプロシージャーコール(RPC)となります。
  4. トランスポートレイヤー
    • SNMPでは、メッセージベースでのデータ転送となりますが、NETCONFの場合はセッションベースでのやりとりになります。
    • SNMPでは、UDPを使用します。NETCONFでは、SSHもしくは、TLS over TCPを使用します。

NETCONF protocol layer\

具体的な、要素の比較は以下になります。

LayerSNMP/SMIv2NETCONF/YANG
Content (Device Data)OBJECT-TYPEdata-def-stmt
Content (Notification Data)NOTIFICATION-TYPEnotification-stmt
OperationsSet, Get, GetNext, GetBulkrpc-stmt (edit-config, copy-config)
Messages (Device Data)Set, Get, GetNext, GetBulk PDUs<rpc>, <rpc-reply>
Messages (Notification Data)Trap PDU, Inform PDU, Report PDU<notification>, N/A, N/A
TransportMessage-based: UDPSession-based: SSH/TCP

NETCONFの設定、データについて

NETCONFの設定はデータストアに格納されます。データストアとはその名の通り設定などが格納される場所のことで、ファイルだったり、データベースだったりします。
設定データストアにはデバイスの設定など書き込み可能なデータが含まれます。
一方、状態データには、設定ではない、機器の状態や統計情報などの読み取り専用の情報が含まれます。

YANGのXPathでは、この設定データと非設定データ(状態データ)を明確に分けています。
それは、設定のダンプやリストアの際にわかりやすいようにするため、などの理由によります。詳細はこちら


YANGとSMIv2の基本的なデータ構成の違い

MIB YANG building data\

ノードの説明については、RFCのこちらの説明がわかりやすいです。


長くなってきましたので、つづきは、また今度。


参考:
A Guide to NETCONF for SNMP Developers