NETCONF
NETCONF(英: Network Configuration Protocol)は、ネットワーク機器の設定を取得、更新するための遠隔手続き呼出し (RPC) ベースの通信プロトコルである。クライアントとしてネットワーク管理アプリケーション、サーバとしてネットワーク機器を想定したクライアントサーバモデルのプロトコルとして定義されている。
経緯
[編集]IETFでの議論[1]を経て、2006年に初版1.0が RFC 4741 として公開された。その後、2011年に改訂版 1.1 が RFC 6241 として発行されている。
特徴
[編集]プロトコル構成
[編集]NETCONFプロトコルは、大きく四つの層に分けられる[2]。
セキュアトランスポート層
[編集]メッセージを転送するためのプロトコルを規定した層である。RFC 6241 ではこの層については要件のみが規定され、特定のプロトコルには依存しない形になっている。SSH[3]、TLS[4]、SOAP[5]、BEEP[6]などの利用が想定されている。
メッセージ層
[編集]NETCONFのRPCメッセージはXMLにコード化されてやり取りされる[7]。そのコード化方法を規定した層である。クライアントからのRPCリクエストは<rpc>
要素を、サーバからのレスポンスは <rpc-reply>
(エラーのときは<rpc-error>
)要素をそれぞれルートとしたXMLメッセージを用いる。
<rpc message-id="1" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <get-config> <source> <running/> </source> <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>
オペレーション層
[編集]NETCONFプロトコルでは、設定データストアやNETCONFセッションに対する操作を定義している[8]。
オペレーション | 説明 |
---|---|
get-config | 指定した設定データストアから設定を取得する。 |
edit-config | 指定した設定データストアの内容を更新する。 |
copy-config | 指定した設定データストアの内容を別の設定データストアの内容で置き換える。 |
delete-config | 指定したデーストアを削除する。 |
lock | 指定した設定データストアを排他的にロックする。 |
unlock | 指定した設定データストアのロックを解除する。 |
get | running 設定データストアから設定やネットワーク機器の状態情報を取得する。 |
close-session | NETCONFセッションを安全に閉じるよう要求する。 |
kill-session | NETCONFセッションを強制終了する。 |
設定データストア[9]とは、ネットワーク機器が動作中、あるいは起動時などそれぞれの状態にあるときに、読み込まれたり設定されたりする対象となる設定データ全体のことである。NETCONFプロトコルでは、動作中の設定データストアは<running/>
と表され、NETCONFをサポートする機器は必ずこの設定データストアを持たなければならない。加えて、機器によっては起動時の設定データストア<startup/>
などを持つことができる。
コンテント層
[編集]NETCONFプロトコルではこの層については特に規定しない。NETCONFでやり取りされるデータの定義は、YANGモデルによって行う[2]。
Capability
[編集]あるネットワーク機器が、標準的な機能に加え、その機器固有の機能をNETCONF経由でアクセスできるようにしたい場合がある。この機能または機能群のことを capability といい、URIを用いて表す。例えば、get-config
操作のフィルタをXPathで記述できる機能の capability はurn:ietf:params:netconf:capability:xpath:1.0
と表現される[10]。
ネットワーク機器とNETCONFクライアントの間でセッションが開かれた時、ネットワーク機器とクライアントは相手に対し利用可能な機能の capability のリストを、<hello>
メッセージとして相手に広告する。これにより、そのセッションで利用する capability のバージョン調整などを行うことが可能となる。
以下は、その<hello>
メッセージの例である。
<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>
実装
[編集]ネットワーク機器
[編集]ネットワーク管理アプリケーション
[編集]- Cisco NSO[14]
ライブラリ/ツール
[編集]脚注
[編集]公式サイト
[編集]出典
[編集]- ^ https://tools.ietf.org/wg/netconf/draft-ietf-netconf-prot
- ^ a b "Protocol Overview". (英語). pp. 8. sec. 1.2. doi:10.17487/RFC6241. RFC 6241。
{{citation}}
:|title=
は必須です。 (説明) - ^ RFC 6242 (英語). doi:10.17487/RFC6242。
- ^ RFC 7589 (英語). doi:10.17487/RFC7589。
- ^ RFC 4743 (英語). doi:10.17487/RFC4743。
- ^ RFC 4744 (英語). doi:10.17487/RFC4744。
- ^ "XML Considerations". (英語). pp. 13. sec. 3. doi:10.17487/RFC6241. RFC 6241。
{{citation}}
:|title=
は必須です。 (説明) - ^ "Protocol Operations". (英語). pp. 35. sec. 7. doi:10.17487/RFC6241. RFC 6241。
{{citation}}
:|title=
は必須です。 (説明) - ^ "Configuration Datastores". (英語). pp. 19. sec. 5.1. doi:10.17487/RFC6241. RFC 6241。
{{citation}}
:|title=
は必須です。 (説明) - ^ "XPath Capability". (英語). pp. 67. sec. 8.9. doi:10.17487/RFC6241. RFC 6241。
{{citation}}
:|title=
は必須です。 (説明) - ^ Cisco IOS ネットワーク管理コンフィギュレーション ガイド Network Configuration Protocol (NETCONF)
- ^ NETCONF XML Management Protocol and Junos XML API Overview
- ^ OAN(Open Autonomic Networking)
- ^ NSO FAQ'S