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などと組み合わせて使われます。
NETCONFとRESTCONFの使い分け
| 比較項目 | NETCONF | RESTCONF |
|---|---|---|
| 通信プロトコル | SSH(ポート830) | HTTP/HTTPS |
| データ形式 | XML | JSON または XML |
| トランザクション | ✅ commitによる一括確定 | ❌ なし(都度適用) |
| 学習コスト | やや高め | 低め(REST知識で扱える) |
| 主な用途 | 大規模・ミッションクリティカル | 軽量な設定取得・変更 |
| 対応機器 | Cisco・Juniper等多数 | 比較的新しい機器に多い |
YANGとの関係
YANG(Yet Another Next Generation)はNETCONFで扱うデータの「型定義ファイル」にあたるモデリング言語です。YANGがデータ構造(何が設定できるか)を定め、NETCONFがその設定を実際に読み書きする「操作手段」を担います。設計図(YANG)と建築作業(NETCONF)のような関係です。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 6241 | NETCONF本体の現行標準(2011年) |
| RFC 6242 | NETCONFのSSHトランスポート定義 |
| RFC 7950 | YANG 1.1(NETCONFで使うデータモデル言語) |
| RFC 8040 | RESTCONF(NETCONFのHTTP版) |
| RFC 5277 | NETCONFイベント通知(非同期通知の拡張) |
| RFC 8526 | NETCONF YANG Push(ストリーミング通知) |