NETCONF

NETCONF（）は、ネットワーク機器の設定を取得、更新するための遠隔手続き呼出し (RPC) ベースの通信プロトコルである。クライアントとしてネットワーク管理アプリケーション、サーバとしてネットワーク機器を想定したクライアントサーバモデルのプロトコルとして定義されている。
経緯.
IETFでの議論を経て、2006年に初版1.0が RFC 4741 として公開された。その後、2011年に改訂版 1.1 が RFC 6241 として発行されている。
特徴.
プロトコル構成.
NETCONFプロトコルは、大きく四つの層に分けられる。
セキュアトランスポート層.
メッセージを転送するためのプロトコルを規定した層である。RFC 6241 ではこの層については要件のみが規定され、特定のプロトコルには依存しない形になっている。SSH、TLS、SOAP、などの利用が想定されている。
メッセージ層.
NETCONFのRPCメッセージはXMLにコード化されてやり取りされる。そのコード化方法を規定した層である。クライアントからのRPCリクエストはcodice_1要素を、サーバからのレスポンスは codice_2(エラーのときはcodice_3)要素をそれぞれルートとしたXMLメッセージを用いる。
<rpc message-id="1" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
 <get-config>
 <syntaxhighlight>
 <running/>
 <filter xmlns:t="http://example.com/schema/1.2/config" type="xpath"
 select="/t:top/t:users/t:user[t:name='fred']"/>
 </get-config>
</rpc>
<rpc-reply message-id="1" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
 <data>
 </data>
</rpc-reply>
</syntaxhighlight>
オペレーション層.
NETCONFプロトコルでは、設定データストアやNETCONFセッションに対する操作を定義している。
設定データストアとは、ネットワーク機器が動作中、あるいは起動時などそれぞれの状態にあるときに、読み込まれたり設定されたりする対象となる設定データ全体のことである。NETCONFプロトコルでは、動作中の設定データストアはcodice_4と表され、NETCONFをサポートする機器は必ずこの設定データストアを持たなければならない。加えて、機器によっては起動時の設定データストアcodice_5などを持つことができる。
コンテント層.
NETCONFプロトコルではこの層については特に規定しない。NETCONFでやり取りされるデータの定義は、YANGモデルによって行う。
Capability.
あるネットワーク機器が、標準的な機能に加え、その機器固有の機能をNETCONF経由でアクセスできるようにしたい場合がある。この機能または機能群のことを capability といい、URIを用いて表す。例えば、codice_6操作のフィルタをXPathで記述できる機能の capability はcodice_7と表現される。
ネットワーク機器とNETCONFクライアントの間でセッションが開かれた時、ネットワーク機器とクライアントは相手に対し利用可能な機能の capability のリストを、codice_8メッセージとして相手に広告する。これにより、そのセッションで利用する capability のバージョン調整などを行うことが可能となる。
以下は、そのcodice_8メッセージの例である。
 <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
 <capabilities>
 <capability>urn:ietf:params:netconf:base:1.1</capability>
 <capability>urn:ietf:params:netconf:capability:startup:1.0</capability>
 <capability>http://example.net/router/2.3/myfeature</capability>
 </capabilities>
 <session-id>4</session-id>
 </hello>