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>

実装

ネットワーク機器

ネットワーク管理アプリケーション

ライブラリ/ツール

脚注

公式サイト

出典

  1. https://tools.ietf.org/wg/netconf/draft-ietf-netconf-prot
  2. "Protocol Overview". (英語). pp. 8. sec. 1.2. doi:10.17487/RFC6241. RFC 6241 {{citation}}: |title=は必須です。 (説明)
  3. RFC 6242 (英語). doi:10.17487/RFC6242
  4. RFC 7589 (英語). doi:10.17487/RFC7589
  5. RFC 4743 (英語). doi:10.17487/RFC4743
  6. RFC 4744 (英語). doi:10.17487/RFC4744
  7. "XML Considerations". (英語). pp. 13. sec. 3. doi:10.17487/RFC6241. RFC 6241 {{citation}}: |title=は必須です。 (説明)
  8. "Protocol Operations". (英語). pp. 35. sec. 7. doi:10.17487/RFC6241. RFC 6241 {{citation}}: |title=は必須です。 (説明)
  9. "Configuration Datastores". (英語). pp. 19. sec. 5.1. doi:10.17487/RFC6241. RFC 6241 {{citation}}: |title=は必須です。 (説明)
  10. "XPath Capability". (英語). pp. 67. sec. 8.9. doi:10.17487/RFC6241. RFC 6241 {{citation}}: |title=は必須です。 (説明)
  11. Cisco IOS ネットワーク管理コンフィギュレーション ガイド Network Configuration Protocol (NETCONF)
  12. NETCONF XML Management Protocol and Junos XML API Overview
  13. OAN(Open Autonomic Networking)
  14. NSO FAQ'S

外部リンク

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.