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 クライアントを構成する前に、「 gRPC サービスの構成」で定義されているように gRPC サーバーを構成します。

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

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

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

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

プロトタイプ定義ファイルのコンパイル

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

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

Python 用の gNOI プロト定義ファイルをダウンロードしてコンパイルするには、次のようにします。

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

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

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

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

    メモ:

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

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

    ファイルリストには、Python の出力ファイル名に _pb2pb2_grpc を持つコンパイル済みファイルを含める必要があります。

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

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

grpc_channel.py

Python モジュールには grpc_channel.py 、選択した認証方法 (サーバーのみまたは相互) に指定された引数を使用して 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 ユーザー名を指定し、アプリケーションはユーザー パスワードの入力を求めます。