ネットワークデバイスを管理するためのgRPCサービスについて
gRPCクライアントアプリケーションは、OpenConfigネットワークインターフェイス(gNMI、gNOI、gRIBI)で定義されたgRPCネットワークサービスを使用して、サポートされているネットワークデバイスを管理できます。
gRPCネットワークサービスのメリット
- ネットワークデバイスを管理するための、ベンダーに依存しないシンプルなインターフェイスを提供します。
- 大規模なマルチベンダーネットワークをより簡単に管理できます。
- トランスポートにはgRPCリモートプロシージャコールフレームワークを使用し、サービス定義とエンコーディングにはプロトコルバッファを使用することで、効率的なトランスポートと高速処理を実現します。
OpenConfig について
OpenConfigは、マルチベンダーネットワークを構成および管理するための、よりダイナミックでプログラム可能な方法に向けて移行するための、ネットワーク業界の共同作業です。OpenConfigでは、ベンダーに依存しないサービス定義とデータモデルを使用して、ネットワークを管理および設定できます。サービス定義はネットワークデバイス上で実行される一般的な操作を定義し、データモデルは一般的なネットワークプロトコルまたはサービスに対するネットワークデバイスの設定と運用状態を定義します。
マルチベンダーネットワークを利用する事業者は、業界標準のモデルと仕様を使用することで大きなメリットが得られます。OpenConfig の目標は、事業者が単一のデータモデルと運用セットを使用して、OpenConfig イニシアチブをサポートするすべてのネットワークデバイスを設定および管理できるようにすることです。OpenConfigワーキンググループは、ネットワークデバイス上の設定、運用、テレメトリストリームを管理するためのgRPCベースインターフェイスの仕様を開発しました。これは、他の従来のネットワーク管理プロトコルよりも優れています。
gRPCベースのサービスの概要
gRPCは、もともとGoogleによって開発されたオープンソースのリモートプロシージャコール(RPC)フレームワークです。gRPCはトランスポートにHTTP/2を使用し、最新のセキュリティメカニズムと双方向ストリーミングをサポートしています。gRPCでは、サービスの定義とデータのエンコードにプロトコルバッファデータ形式を使用します。プロトコルバッファは言語に依存せず、多くの異なる言語のバインディングをサポートしているため、事業者はgRPCベースのサービスを既存の管理アプリケーションに簡単に統合できます。
OpenConfigワーキンググループは、gRPCベースのネットワーク管理プロトコルの仕様を定義しています。gRPCベースのネットワークサービスには、以下が含まれます。
-
gRPCネットワーク管理インターフェイス(gNMI)—設定管理とストリーミングテレメトリのための単一のサービス。
-
gRPC Network Operations Interface(gNOI)—運用管理用のマイクロサービススイート。
-
gRPCルーティング情報ベースインターフェイス(gRIBI)—外部アプリケーションがターゲットデバイス上のルーティングテーブルにプログラムでエントリを追加または削除できるようにするサービス。
図1は、各種サービスの範囲を示しています。
gNMI、gNOI、gRIBIの概要
gNMIは、ネットワーク要素の状態管理のための単一のサービスを提供します。gNMIは、一般的なネットワークプロトコルまたはサービスについて、ネットワークデバイスの構成と運用状態を定義するベンダーに依存しないデータモデルを使用します。gNMIクライアントは、ネットワークデバイスの設定を取得して変更したり、運用データをストリーミングしたりできます。オペレーターは、関心のある特定のデータオブジェクトにサブスクライブすることで、ネットワークを監視します。gNMIは、時間的制約のある運用に不可欠なオン チェンジ ストリーミングもサポートしています。
Junosデバイス上の設定管理とテレメトリストリーミングにgNMIを使用する方法の詳細については、以下を参照してください。
gNMIが状態管理を処理するのに対し、gNOIは運用管理を処理します。gNOIは、ネットワークデバイス上で一般的な操作を実行するためのgRPCベースのマイクロサービスの集合です。各サービス定義は、デバイスの再起動やソフトウェアのアップグレードなどの一連の操作を実行するために、管理アプリケーションがデバイス上で実行できるRPCを定義します。サポートされているgNOIサービスの一覧については、 gNOIサービスの概要を参照してください。
gRIBIは、ネットワークデバイスのルーティング情報ベース(RIB、別名ルーティングテーブル)と転送情報ベース(FIB、別名転送テーブル)を管理する単一のサービスを提供します。管理アプリケーションは、デバイス上でgRIBI RPCを実行し、デバイスのRIBまたはFIBからルートを取得、追加、変更、または削除できます。サポートされているgRIBI RPCの詳細については、 gRIBIを参照してください。
gNMI、gNOI、gRIBIはトランスポートにgRPCを使用し、gRPCサーバーとgRPCクライアント間の接続はSSL暗号化gRPCセッションを介して行われます。例えば、 図 2 は、gRPC クライアントとサーバー間の単純な接続を示しています。ジュニパーネットワークスは、サーバーのみの認証と、X.509証明書を使用してデバイスまたはアプリケーションの認証を使用するgRPCセッションの相互認証の両方をサポートしています。証明書は、認証機関(CA)による署名または自己署名が可能です。
gNMI、gNOI、gRIBIは、ネットワークデバイスを管理するためのサービスを定義します。各サービス定義は、プロト定義ファイル内でその特定のサービスの操作(RPC)とデータ構造(メッセージ)を定義します。データ構造は、構造化データをシリアル化するためのオープンソースの言語に依存しないデータ形式であるプロトコルバッファを使用して定義されます。 protoc または同等のコンパイラを使用して、選択した言語のプロトファイルをコンパイルします。管理アプリケーションは、コンパイルされたファイル内のコードを使用して、ネットワーク デバイス上で要求された操作を実行できます。 表1 は、各サービスインターフェイスのプロト定義ファイルを含むGitHubリポジトリの概要を示しています。
| インターフェース | GitHubリポジトリ |
|---|---|
| gNMI |
|
| gNOI |
|
| gRIBI |
gRPCベースのネットワークサービスは、NETCONFやRESTCONFなどの他のネットワーク管理プロトコルに代わる選択肢と利点を提供します。さまざまな言語のプロト定義ファイルをコンパイルできるため、既存の管理アプリケーションとサービスを簡単に統合してマルチベンダーネットワークを管理できます。さらに、データシリアル化にプロトコルバッファを使用すると、一般に、JSON や XML などの他のシリアル化形式よりも効率的なトランスポートと高速な処理が実現します。