オンデバイスネットワーク機器管理用ソフトウェア 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は、NETCONFとの置き換えを前提としたプロトコルではなく、NETCONFと同じYANGで定義されたデータを扱うため、NETCONFと共存させることもできるのが特長です。
RESTCONF公開の背景
近年、SDN、ゼロタッチプロビジョニングや自動化などを目指したネットワークプログラマビリティが注目されていますが、OSS/NMS の管理対象デバイスについてもネットワークプログラマビリティが求められるようになってきています。この課題に対する1つの解が NETCONF(「NETCONFとは何か?」を参照)でした。
他方で、Web サービスやデータセンターといった分野では、RESTful API(以下「REST」)がプログラマブル API として一般的になっており、ノウハウも蓄積されています。REST は、OSS/NMSのSouthbound 側に特別なクライアントを用意しなくても REST のノウハウさえあれば利用できます。 “curl” などの汎用ツールも多く、利用の障壁が低いことも大きなメリットです。必然的にデバイス側にも REST 対応の需要が高まりますが、課題もありました。REST が大まかなルールの集合体のようなものであり、厳密な規約としては存在しないため、デバイス間の個別仕様が生まれやすく、OSS/NMS から見た時のデバイス間のインターオペラビリティを確保できませんでした。
こうした REST の課題を克服するため、 IETF で議論が進められました。その結果、NETCONF のデータストアのコンセプトを REST に取り込むような形で、2017年6月に RFC8040 として RESTCONF が公開されました。
RESTCONFとNETCONFの比較
RESTCONFは、名前のとおりRESTとNETCONFのいいとこ取りをしたような設計になっています。両者のAPIの違いを一覧表にしました。
操作概要 | RESTCONF | NETCONF |
---|---|---|
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実行 | POST | RPCの直接コール |
一方で、RESTの思想である“ステートレス”を堅持するため、データのロック/アンロック、セッション、トランザクションといった概念は、NETCONFから継承されていません。一覧表のとおり、RESTCONFはRESTをベースにしているため、HEADやOPTIONなどNETCONFにはなかったREST由来のAPIは、そのまま残っています。
ユビキタスAIが提供するRESTCONF関連製品
ネットワーク機器管理用ソフトウェア 「ConfD」
RESTCONFをフルサポートしたネットワーク機器開発ベンダー様向けのオンデバイスマネージメントソフトウェアです。「ConfD」を導入することにより、データモデルから5種類のインターフェース(NETCONF、 RESTCONF、SNMP、CLI、WebUI)の作成が容易に行えます。