NIリモート機能:gRPC使用NI計測アクセスする

概要

NIリモート機能は、gRPCリモートプロシージャコール (gRPC) テクノロジを使用して、NIの計測器とのリモート操作を可能にします。NIは、製品がgRPCと動作することを確実にするために投資を行い、お客様がNI製品をリモートで操作し、高品質かつ低レイテンシの測定を行うことができるようになりました。NIリモート機能を使用すると、エンジニアは既存のテストワークフローを柔軟に活用できます。

内容

NIリモート機能概要

NIソフトウェアリモート機能は、NIハードウェアおよびサービスをリモートで操作して、高品質で低レイテンシの測定を行う機能です。NIソフトウェアリモート機能は、事前定義されたスタンドアロンアプリケーション、API、コマンドを包括的かつOSに依存しない方法で使用し、クライアント/サーバアーキテクチャを活用します。 

NIリモート機能は、内部でgRPCを使用します。gRPCベースのサーバを使用すると、さまざまなプログラミング環境、プラットフォーム、オペレーティングシステムからテストおよび測定装置にアクセスして制御することができるようになります。 

gRPCは、メッセージ交換形式としてプロトコルバッファ (Proto3) を使用します。以下の図は、gRPCサーバとスタブ間でプロト要求と応答がどのように送信されるかを示しています。 

図1: gRPCサーバからの要求と応答

NIリモート機能は、Windows、Linux、Macでさまざまなプログラミング言語でサポートされています。サポートされている言語とそのオペレーティングシステムの完全なリストについては、gRPCサポートリソースを参照してください。

gRPC概要

gRPCは、どこでも実行できるオープンソースのリモートプロシージャコール (RPC) フレームワークです。これにより、クライアントアプリケーションとサーバアプリケーションが透過的に通信できるようになり、接続されたシステムをリモートで簡単に構築できます。

gRPCでは、クライアントアプリケーションはローカルオブジェクトであるかのように別のマシンにあるサーバアプリケーションのメソッドを直接呼び出すことができるため、分散アプリケーションやサービスを簡単に作成できます。サーバ側では、サーバはこのインタフェースを実装し、gRPCサーバを実行してクライアント呼び出しを処理します。 クライアント側では、クライアントにはサーバと同じメソッドを提供するスタブ (一部の言語ではクライアントと呼ばれる) があります。

gRPCを使用する主な特徴は、クライアント側でOSや言語に依存せず、柔軟性があり、プロジェクトですでに使用されている現在のOSまたはプログラミング言語に適応できることです。

NIリモート機能gRPC使用する他の有名企業加わる

NIリモート機能にgRPCを使用することで、NIはGoogle、Netflix、Squareなどの大企業に加わります。gRPCには、RPyC、SCPI、HiSLIPなどの他のオプションにはない強力な機能があります。

  • Googleからの支援を含む、非常に強力で積極的な開発とコミュニティ 
  • 優れたデフォルトパフォーマンスと機能
  • 明確に定義されたインタフェース定義言語:Protobuf
  • 多くの言語とOSをサポート (特に非公式/サードパーティのクライアントサポートが含まれている場合)
  • 言語やOSに依存しないリモート接続が必要なセットアップで有効

 

gRPC認証/承認

NIリモート機能は、gRPCのデフォルト認証メカニズムを使用します。接続は、サーバ側TLSまたは相互TLS (ゼロトラスト) によって保護されることで、通信が暗号化され、クライアント/サーバの信頼性が確保されます。認証サーバと統合することで、カスタム認可を組み込むようにサーバを更新できます。

予想れるNIリモート機能パフォーマンス

NIリモート機能を使用すると、高品質の測定を行う際にレイテンシを低く抑えることができます。以下の例は、NI-9207 Cシリーズモジュールを搭載したシミュレーションされたcDAQ-9179シャーシからアナログ入力電圧を読み取る際のパフォーマンスベンチマークを示します。

ストリーミングgRPCパフォーマンス

サーバはクライアントにデータをストリーミング:

  • サーバからストリームされるメッセージあたり200,000倍精度
  • Protobufを使用したデフォルト構成
  • 安全でない資格情報
  • 1つのクライアント接続
  • スイッチを介した1 Gbイーサネット

Linux localhost

  • 4 GB/sのシングルストリーム
  • 複数ストリームで8 GB/s
  • ベースライン:Linux localhost未処理ソケット: 約10 GB/s 

Windows 10 localhost:4 GB/s1

LinuxからLinux:11 MB/s

  • 理論上の最大値の93% 

Thunderbolt 3リンクローカルネットワーク

  • Windowsクライアント、Linuxサーバ:1.2 GB/s
  • Linuxクライアント、Linuxサーバ:1.6 GB/s
  • Linux over SSH:850 MB/s

1 CISO AMPに注意

NI-DAQmxgRPCパフォーマンス

シミュレーションされたcDAQ-9179シャーシおよびNI-9207モジュールを搭載したNI-DAQmx:

  • C++アプリの直接NI-DAQmx呼び出し:121.6 ms
  • gRPC Windowsクライアント、localhostサーバ:121.9 ms
  • ネットワーク (1 Gb) を介したgRPC Linuxクライアント、非直接接続:123.9 ms

これらのベンチマークで分かるように、gRPC呼び出しはネイティブドライバ呼び出しと同等であり、レイテンシは最小化されています。gRPCを使用すると、NIのお客様はNI製品をリモートで操作して高品質で低レイテンシの測定を行うことができ、既存のテストワークフローを活用できます。