ネットワーク設計と自動化

NETCONF ねっとこんふ

ネットワーク自動化YANGXMLRESTRESTCONF設定管理
NETCONFについて教えて

簡単に言うとこんな感じ!

NETCONFは、ネットワーク機器(ルーターやスイッチ)の設定をプログラムから自動で読み書きするための「共通言語」だよ! 人間がCLIでコマンドを打つ代わりに、システムがXMLのメッセージを送って機器を操作できるんだ。大量の機器を一括管理したいときにとっても頼りになる仕組みだよ!


NETCONFとは

NETCONF(Network Configuration Protocol)は、ネットワーク機器の設定情報の取得・変更・削除をプログラムから自動的に行うための通信プロトコルです。IETFによって RFC 6241 として標準化されており、ルーターやスイッチなどに対して統一的な方法で設定操作ができます。

従来のネットワーク管理では、エンジニアがCLI(コマンドラインインターフェース)を使って機器に直接コマンドを打ち込むのが一般的でした。しかしこの方法は人手がかかり、ミスも起きやすく、機器メーカーごとにコマンド体系が異なるという問題がありました。NETCONFはこの課題を解決するために設計され、XMLベースのデータ構造RPCと呼ばれる手続き型の操作モデルを使って、機器の設定を機械的・標準的に操作できます。

NETCONFは単なる設定ツールではなく、ネットワーク自動化(NetDevOps)の基盤技術として位置づけられています。Ansibleなどの自動化ツールやPythonスクリプトと組み合わせることで、数百台の機器の設定を一斉に管理・変更することが実務では可能になります。


NETCONFの構造と仕組み

NETCONFは4層のアーキテクチャで構成されています。

レイヤ名称役割
第4層コンテンツ層設定データそのもの(YANGモデルで定義)
第3層オペレーション層操作の種類(get / edit-config / deleteなど)
第2層メッセージ層RPC形式でXMLにラップして送受信
第1層トランスポート層SSH暗号化して通信(ポート830番)

主なオペレーション(操作コマンド)

オペレーション意味
<get>現在の設定・状態情報を取得する
<get-config>設定データストアから設定を取得する
<edit-config>設定を追加・変更・削除する
<copy-config>設定をデータストア間でコピーする
<delete-config>設定データストアを削除する
<commit>candidateの設定をrunningに反映する
<lock> / <unlock>設定の排他ロック/解除

データストアの3種類

NETCONFでは設定データを3種類の「データストア」で管理します。

┌─────────────────────────────────────────────┐
│  candidate(候補設定)                       │
│  → 変更作業中の一時領域。まだ機器に適用されない│
│              ↓ <commit>                      │
│  running(実行中設定)                       │
│  → 現在機器が実際に動いている設定           │
│              ↓ 保存                          │
│  startup(起動時設定)                       │
│  → 次回起動時に読み込まれる設定             │
└─────────────────────────────────────────────┘

覚え方:「候補→実行→起動」の流れ

候(こう)補(ほ)が 実(じつ)行(こう)されて 起(き)動(どう)する」と覚えると、candidate → running → startup の順番がすっと入ってきます。


歴史と背景

  • 1988年SNMPが登場。ネットワーク機器の監視には使えたが、設定変更は苦手だった
  • 2003年 — IETFのNETMOD WGがネットワーク設定管理の課題を整理し始める
  • 2006年RFC 4741 としてNETCONFが初版標準化。XMLとSSHの組み合わせで設計
  • 2011年RFC 6241 として改訂・再標準化。現在の主流バージョン
  • 2016年YANG 1.1(RFC 7950) が標準化。NETCONFと組み合わせて使うデータモデル言語として普及
  • 2017年RESTCONF(RFC 8040) が標準化。NETCONFの思想をHTTP/RESTで扱えるように拡張
  • 2020年代 — CiscoのNSO、Juniper Northstarなど主要ベンダーのコントローラーがNETCONFを標準サポート。クラウド時代の大規模ネットワーク自動化の中核プロトコルに

関連技術との比較

NETCONFは単独で使われることは少なく、YANG・RESTCONF・SNMPなどと組み合わせて使われます。

ネットワーク管理プロトコルの比較マップ YANG データモデル定義言語 NETCONF XML + SSH(ポート830) 設定の読み書き・コミット RESTCONF JSON/XML + HTTP(S) REST APIでの設定操作 SNMP MIBベース・UDP 主に監視・読み取り向け CLI / SSH 人間が手動で操作 自動化には不向き データモデル 自動化向け 旧来型 ← 同じYANGモデルを共有 →

NETCONFとRESTCONFの使い分け

比較項目NETCONFRESTCONF
通信プロトコルSSH(ポート830)HTTP/HTTPS
データ形式XMLJSON または XML
トランザクション✅ commitによる一括確定❌ なし(都度適用)
学習コストやや高め低め(REST知識で扱える)
主な用途大規模・ミッションクリティカル軽量な設定取得・変更
対応機器Cisco・Juniper等多数比較的新しい機器に多い

YANGとの関係

YANG(Yet Another Next Generation)はNETCONFで扱うデータの「型定義ファイル」にあたるモデリング言語です。YANGがデータ構造(何が設定できるか)を定め、NETCONFがその設定を実際に読み書きする「操作手段」を担います。設計図(YANG)と建築作業(NETCONF)のような関係です。


関連する規格・RFC

規格・RFC番号内容
RFC 6241NETCONF本体の現行標準(2011年)
RFC 6242NETCONFのSSHトランスポート定義
RFC 7950YANG 1.1(NETCONFで使うデータモデル言語)
RFC 8040RESTCONF(NETCONFのHTTP版)
RFC 5277NETCONFイベント通知(非同期通知の拡張)
RFC 8526NETCONF YANG Push(ストリーミング通知)

関連用語

  • YANG — NETCONFで扱うネットワーク設定データの構造を定義するモデリング言語
  • RESTCONF — NETCONFの思想をHTTP/RESTで扱えるようにした軽量プロトコル
  • SNMP — ネットワーク機器の監視に広く使われる旧来型の管理プロトコル
  • ネットワーク自動化