gNOI-gRPC ネットワーク操作インターフェイス

About gNOI

gRPC Network Operations Interface (gNOI) defines a set of gRPC-based micro-services for executing operational commands on network devices. The operational commands supported are Ping, Traceroute, Time, SwitchControlProcessor, Reboot, RebootStatus, CancelReboot, Activate and Verify.

gNOI uses gRPC as the transport protocol and the configuration is same as that of gNMI. For details on configuration, please refer to Configuring gNMI.

To send gNOI RPC requests, user needs a client that implements the gNOI client interface for each RPC.

In Cisco NX-OS Release 10.1(1) the gNOI defines Remote Procedure Calls (RPCs) for a limited number of components and some of them related to hardware (like optical interfaces).

Proto files are defined for the gRPC micro-services and are available at GitHub.

サポートされる gNOI RPC

サポートされている gNOI RPC は次のとおりです。

表 1.

プロトコル

gNOI RPC

サポート対象

System

ping

トレースルート

はい

時間

はい

SwitchControl プロセッサ

はい

リブート

はい

RebootStatus

はい

CancelReboot

はい

OS

アクティブ化

はい

インターフェイス

はい

Cert

LoadCertificate

はい

File

get

はい

Stat

はい

削除

対応

システム proto

システム proto サービスは、設定およびテレメトリ パイプラインの外部でターゲットを管理できるようにする操作可能な RPC のコレクションです。

次に、システム proto の RPC サポートの詳細を示します。

RPC

サポート

説明

制限事項

ping

ping/ping6 cli コマンド

ターゲットで ping コマンドを実行し、結果をストリーム バックします。一部のターゲットでは、すべての結果が使用可能になるまで結果がストリーミングされない場合があります。パケット数が明示的に指定されていない場合は、5 が使用されます。

do_not_resolve オプションはサポートされていません。

トレースルート

traceroute/traceroute6 cli コマンド

ターゲットで traceroute コマンドを実行し、結果をストリーム バックします。一部のターゲットでは、すべての結果が使用可能になるまで結果がストリーミングされない場合があります。最大ホップ カウント 30 が使用されます。

itial_ttl、marx_ttl、wait、do_not_fragment、do_not_resolve、および l4protocol オプションはサポートされていません。

時間

ローカル時刻

ターゲットの現在の時刻を返します。通常、ターゲットが応答しているかどうかをテストするために使用されます。

-

SwitchControl プロセッサ

system switchover cli コマンド

現在のルート プロセッサから指定されたルート プロセッサに切り替えます。スイッチオーバーは即座に発生します。応答がクライアントに返されることが保証されない場合があります。

スイッチオーバーは即座に発生します。その結果、応答がクライアントに返されることが保証されない場合があります。

リブート

reload module

ターゲットをリブートします。

message オプションはサポートされません。delay オプションはスイッチのリロードでサポートされます。path オプションは 1 つのモジュール番号を受け入れます。

RebootStatus

show version [module] cli コマンド

ターゲットのリブートのステータスを返します。

-

CancelReboot

reload cancel

保留中の再起動要求をキャンセルします。

-


(注)  


SetPackage RPC はサポートされていません。


OS プロトコル

OS サービスは、ターゲット上の OS インストールに対するインターフェイスを提供します。OS パッケージのファイル形式は、プラットフォームによって異なります。プラットフォームは、提供された OS パッケージが有効でブート可能であることを検証する必要があります。これには、既知の良好なハッシュに対するハッシュチェックを含める必要があります。ハッシュは OS パッケージに埋め込むことをお勧めします。

ターゲットは、独自の永続ストレージと OS インストールプロセスを管理します。一連の個別の OS パッケージを保存し、着信する新しい OS パッケージ用に常にプロアクティブにスペースを解放します。ターゲットには、有効な着信 OS パッケージ用の十分なスペースが常にあることが保証されます。現在実行中の OS パッケージは削除しないでください。クライアントは、最後に正常にインストールされたパッケージが使用可能であることを期待する必要があります。

次に、OS プロトコルの RPC サポートの詳細を示します。

RPC

サポート

説明

制限事項

アクティブ化

install all nxos bootflash:///img_name

要求された OS バージョンを、次回のリブート時に使用されるバージョンとして設定します。この RPC は、ターゲットを再起動します。

再起動に失敗した場合は、ロールバックまたは回復できません。

検証

show version

[検証(Verify)] は、実行中の OS バージョンを確認します。この RPC は、ターゲットの起動中に成功するまで複数回呼び出される場合があります。

-


(注)  


インストール RPC はサポートされていません。


証明書 Proto

証明書管理サービスは、ターゲットによってエクスポートされます。ローテーション、インストール、およびその他の証明書プロトコル RPC はサポートされていません。

次に、Cert proto の RPC サポートの詳細を示します。

RPC

サポート

説明

制限事項

LoadCertificate

crypto ca import <trustpoint>

pkcs12 <file> <passphrase>

CA 証明書のバンドルをロードします。

-

ファイル Proto

ファイル proto は、file.proto RPC の機能に基づいてメッセージをストリーミングします。ここに記載されていない Put およびその他の RPC は、ファイル Proto ではサポートされていません。

Get、Stat、および Remove RPC は、bootflash、bootflash://sup-remote、logflash、logflash://sup-remote、usb、volatile、volatile://sup-remote、および debug のファイル システムをサポートします。

次に、ファイル proto の RPC サポートの詳細を示します。

RPC

説明

制限事項

結果

Get はターゲットからファイルの内容を読み取り、ストリーミングします。ファイルは連続したメッセージによってストリーミングされます。各メッセージには最大 64 KB のデータが含まれます。最後のメッセージが送信された後、送信されたデータのハッシュが送信され、ストリームが閉じられます。ファイルが存在しない場合、またはファイルの読み取り中にエラーが発生した場合は、エラーが返されます。

ファイル サイズの上限は 32 MB です。

Stat

Stat は、ターゲット上のファイルに関するメタデータを返します。ファイルが存在しない場合、またはファイルのメタデータへのアクセス中にエラーが発生した場合は、エラーが返されます。

-

削除

Remove は、ターゲットから指定されたファイルを削除します。ファイルが存在しない場合、ディレクトリである場合、または削除操作でエラーが発生した場合は、エラーが返されます。

-

gNOI 工場リセット

gNOI の初期設定へのリセット操作を行うと、指定されたモジュールのすべての永続ストレージが消去されます。これには、構成、すべてのログ データ、およびフラッシュと SSD のすべての内容が含まれます。リセットは直前のブート イメージでブートし、ライセンスを含むすべてのストレージを消去します。 gNOI の初期設定へのリセットは、次の 2 つのモードをサポートしています。

  • 再フォーマットと再パーティションのみが可能な高速消去。

  • データをセキュアに消去してワイプし、回復不可能にする、セキュア消去。

factory_reset.proto で定義されている gNOI の初期設定へのリセット操作は、デバイス上のすべての永続ストレージを消去します。こちらの factory_reset.proto リンクを参照してください:https://github.com/openconfig/gnoi/blob/master/factory_reset/factory_reset.proto

次に、gNOI FactoryReset サービスの例を示します。

/ The FactoryReset service exported by Targets.
service FactoryReset {
  // The Start RPC allows the Client to instruct the Target to immediately
  // clean all existing state and boot the Target in the same condition as it is
  // shipped from factory. State includes storage, configuration, logs,
  // certificates and licenses.
  //
  // Optionally allows rolling back the OS to the same version shipped from
  // factory.
  //
  // Optionally allows for the Target to zero-fill permanent storage where state
  // data is stored.
  //
  // If any of the optional flags is set but not supported, a gRPC Status with
  // code INVALID_ARGUMENT must be returned with the details value set to a
  // properly populated ResetError message.
  rpc Start(StartRequest) returns (StartResponse);
}
 
message StartRequest {
  // Instructs the Target to rollback the OS to the same version as it shipped
  // from factory.
  bool factory_os = 1;
  // Instructs the Target to zero fill persistent storage state data.
  bool zero_fill = 2;
}

次に、gNOI の工場リセットで使用される引数の詳細を示します。

  • factory_os = false:工場出荷時の OS バージョンにロールバックするかどうかを指定します。NX-OS では true に設定することはサポートされていません。現在のブート イメージを保持する必要があります。

  • zero_fill:時間のかかる包括的なセキュア消去を実行するかどうかを指定します。

    • zero_fill = true:factory-reset module all preserve-image force を指定します。

    • zero_fill = false:factory-reset module all bypass-secure-erase preserve-image force を指定します。

注意事項と制約事項

gNOI 機能には、次の注意事項と制約事項があります。

  • 最大 16 のアクティブな gNOI RPC がサポートされます。

  • Cisco Nexus 9000 シリーズ スイッチは、1 つの gNMI サービスと 2 つの gNOI マイクロサービスを持つ 1 つのエンドポイントを実行します。

  • 10.1(1) リリースでは、gNOI RPC は同等の CLI を使用して実装されます。既存の CLI 制限または有効なオプションはそのまま適用されます。

  • 10.2(1)F リリース以降、file.proto および cert.proto RPC がサポートされています。

  • Nexus デバイス向けの gRPCトラフィックは、デフォルトクラスのコントロールプレーンポリサー(CoPP)にヒットします。gRPC ドロップの可能性を抑えるには、管理クラスの gRPC 構成ポートを使用して、カスタム CoPP ポリシーを構成してください。

gNOI の確認

gNOI の構成を確認するには、次のコマンドを入力します。

コマンド

説明

clear grpc gnoi rpc

カウンタまたは呼び出しをクリーンアップするために使用されます。

debug grpc events {events|errors}

show grpc nxsdk event-history {events|errors}

イベント履歴からイベントとエラーをデバッグします。

show grpc internal gnoi rpc {summary|detail}

有用性のために「internal 」キーワード コマンドが追加されました。