オンデバイスネットワーク機器管理用ソフトウェア ConfD NETCONF、SNMP、REST、CLI、WebUI の I/F を同一データモデルから自動生成

RESTCONFとは何か?

RESTCONFは、RESTのルールをベースにし、 HTTP/HTTPS上で、YANG(RFC7950)で定義されたデータにアクセスするために設計されたプロトコルです。RESTCONFは、RESTと同様にURL形式(例:/Root/Path/To/TargetDataObject)で指定を行い、ペイロードデータはXMLまたはJSON形式となります。

restconf-01.jpg

RESTCONFは、NETCONFとの置き換えを前提としたプロトコルではなく、NETCONFと同じYANGで定義されたデータを扱うため、NETCONFと共存させることもできるのが特長です。

RESTCONF公開の背景

近年、SDN、ゼロタッチプロビジョニングや自動化などを目指したネットワークプログラマビリティが注目されていますが、OSS/NMS の管理対象デバイスについてもネットワークプログラマビリティが求められるようになってきています。この課題に対する1つの解が NETCONF(「NETCONFとは何か?」を参照)でした。

他方で、Web サービスやデータセンターといった分野では、RESTful API(以下「REST」)がプログラマブル API として一般的になっており、ノウハウも蓄積されています。REST は、OSS/NMSSouthbound 側に特別なクライアントを用意しなくても REST のノウハウさえあれば利用できます。 “curl” などの汎用ツールも多く、利用の障壁が低いことも大きなメリットです。必然的にデバイス側にも REST 対応の需要が高まりますが、課題もありました。REST が大まかなルールの集合体のようなものであり、厳密な規約としては存在しないため、デバイス間の個別仕様が生まれやすく、OSS/NMS から見た時のデバイス間のインターオペラビリティを確保できませんでした。

こうした REST の課題を克服するため、 IETF で議論が進められました。その結果、NETCONF のデータストアのコンセプトを REST に取り込むような形で、20176月に RFC8040 として RESTCONF が公開されました。

RESTCONFとNETCONFの比較

RESTCONFは、名前のとおりRESTNETCONFのいいとこ取りをしたような設計になっています。両者のAPIの違いを一覧表にしました。

操作概要RESTCONFNETCONF
message-body なしの
データ読み出し
HEAD実装なし
サポートしている操作の
一覧取得
OPTION実装なし
データおよびメタデータ
読み出し
GET<get>,<get-config>
データ生成POST<edit-config>(nc:operation="create")
データ生成/更新
(削除含む)
PUT<edit-config>(nc:operation="create/replace")
<copy-config>
データ生成/更新
(削除は不可)
PATCH<edit-config>(nc:operation="merge")
データ削除DELETE<edit-config>(nc:operation="delete")
データロック実装なし<lock>
データアンロック実装なし<unlock>
セッションクローズ実装なし<close-session>,<kill-session>
RPC実行POSTRPCの直接コール

一方で、RESTの思想である“ステートレス”を堅持するため、データのロック/アンロック、セッション、トランザクションといった概念は、NETCONFから継承されていません。一覧表のとおり、RESTCONFRESTをベースにしているため、HEADOPTIONなどNETCONFにはなかったREST由来のAPIは、そのまま残っています。

ユビキタスAIが提供するRESTCONF関連製品

ネットワーク機器管理用ソフトウェア 「ConfD」

RESTCONFをフルサポートしたネットワーク機器開発ベンダー様向けのオンデバイスマネージメントソフトウェアです。「ConfD」を導入することにより、データモデルから5種類のインターフェース(NETCONF RESTCONFSNMPCLIWebUI)の作成が容易に行えます。