Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

gNOIサービスを設定する

リモートネットワーク管理システムを、ネットワークデバイス上でgNOI操作を実行できるgRPCクライアントとして設定します。

gRPCネットワーク操作インターフェイス(gNOI)は、gRPCリモートプロシージャコール(gRPC)フレームワークを使用して、ネットワークデバイス上で操作を実行します。ネットワーク管理システムには、gRPCスタックがインストールされている必要があります。

OpenConfig は、 gNOI サービスのプロト定義ファイルを定義します。プロト定義ファイルは、特定のサービスの操作(RPC)とデータ構造(メッセージ)を定義します。定義は言語に依存しません。gRPCは、サービス操作を実行するための多くの異なる言語の使用をサポートしています。選択した言語用にプロト定義ファイルをコンパイルする必要があります。次に、コンパイルされたファイル内のオブジェクト(クラス、関数、メソッドなど)を使用して、ネットワークデバイス上のgRPCサーバーに接続し、目的の操作を実行するアプリケーションを作成します。

サポートされているさまざまな言語でgRPCを使用する方法については、 gRPCのドキュメントを参照してください。次のセクションでは、gRPC クライアントを設定し、Python 用の gNOI プロト定義ファイルをダウンロードしてコンパイルするためのサンプル コマンドを提供します。オペレーティングシステム、環境、および選択したgRPC言語に適したコマンドを使用する必要があります。

始める前に:

gRPC クライアントを設定する

gNOIは、gRPCフレームワークを使用して、ネットワークデバイス上で操作を実行します。gRPCは、多くの異なる言語の使用をサポートしています。選択した言語を使用してgNOI操作を実行する前に、ネットワーク管理システムにgRPCスタックをインストールする必要があります。

たとえば、Ubuntu 20.04 LTS を実行しているネットワーク管理システムに Python 用 gRPC スタックをインストールするには (必要に応じて sudo を使用します)。

  1. Python 3 用の pip をインストールします。
  2. Python用のgrpcioパッケージをインストールします。
  3. Python用のgrpcio-toolsパッケージをインストールします。

プロト定義ファイルをコンパイルする

gRPC は、多くの言語の使用をサポートしています。ネットワークデバイス上でgRPC操作を実行するには、選択した言語用のそれぞれのプロト定義ファイルと依存ファイルをコンパイルする必要があります。OpenConfig は、 OpenConfig GitHub リポジトリに必要なプロト定義ファイルを提供します。プロトコルバッファコンパイラ(protoc または同等のアプリケーション)を使用して、 .proto ファイルをコンパイルします。

この設定では、目的の依存 .proto ファイルをすべてディレクトリにコピーし、相対インポート ステートメントを使用するようにファイルを更新してから、ファイルをコンパイルするスクリプトを実行します。

Python 用の gNOI プロト定義ファイルをダウンロードしてコンパイルするには:

  1. 元のソースファイルの一時ディレクトリを作成します。
  2. gNOI GitHubリポジトリと依存リポジトリをローカルデバイスに複製します。
  3. お使いの言語(この例ではPython)用に.protoファイルをコンパイルします。

    サンプルシェルスクリプトは、以下の操作を実行します。

    • src/proto ディレクトリを作成します。
    • 目的のプロトファイルを新しいディレクトリにコピーします。
    • 各プロトファイルのimport文を更新して、相対パスを使用するようにします。
    • Python で使用するために、指定されたリスト内の各プロトファイルをコンパイルします。

    スクリプトを使用してファイルをコンパイルするには、 src ディレクトリを含む親ディレクトリからスクリプトを実行します。

    注:

    このスクリプトは、Junosデバイスでサポートされているサービスを持つgNOIプロトファイルのサブセット( gnoi_filesで定義)と、依存するプロトファイルのみをコンパイルします。他のサービスが利用可能になったときにコンパイルするには、変数を更新してそれらのサービスを含めることができます。

  4. ターゲットディレクトリ内の出力ファイルを表示して、プロトファイルがコンパイルされていることを確認します。

    ファイルリストにはコンパイル済みファイルが含まれている必要があり、Pythonの場合は出力ファイル名に _pb2pb2_grpc があります。

gNOIアプリケーションの作成

プロト定義ファイルをコンパイルした後、コンパイルされたファイル内のオブジェクトを使用するアプリケーションを作成します。アプリケーションは、ネットワークデバイス上のgRPCサーバーに接続し、目的の操作を実行します。このセクションでは、2 つのサンプル Python モジュールを提供し、それぞれのセクションで説明します。

grpc_channel.py

grpc_channel.py Python モジュールは、選択した 認証、サーバーのみ、または相互のメソッドに対して提供された引数を使用して gRPC チャネルを作成するサンプル関数を提供します。

gnoi_connect_cert_auth_mutual.py

gnoi_connect_cert_auth_mutual.py Python アプリケーションは、指定された gRPC サーバーで gRPC チャネルを確立し、単純な gNOI Systemサービス操作を実行します。ユーザーは、必要な接続情報と相互認証情報をアプリケーションへの入力として提供します。アプリケーションは、grpc_channel.pyモジュールで適切な機能を呼び出して、クライアントとサーバー間のgRPCチャネルを確立します。アプリケーションがgRPCチャネルを正常に確立すると、単純なシステムサービスRPCを実行して、ネットワークデバイスから時間を取得します。

アプリケーションの実行

gNOI サービス操作を実行するアプリケーションを作成したら、アプリケーションを実行し、必要な引数を指定します。次の例では、前のセクションで提供されたスクリプトを使用して、ネットワークデバイス上のgRPCサーバーに接続し、時間をリクエストします。gRPC サーバーは、クライアントの証明書を要求して検証するように構成されています。

  • 相互認証のために、クライアントはサーバーのIPアドレス、gRPCポート、ルートCA証明書に加えて、独自のキーとPEM形式のX.509公開キー証明書を提供します。クライアントは RPC 呼び出しの資格情報も提供します。 user_id 引数はユーザー名を提供し、アプリケーションはユーザーパスワードの入力を求めます。