NI-Netzwerkfähigkeit: Zugriff auf NI-Messgeräte mit gRPC

Überblick

Die NI-Netzwerkfähigkeit ermöglicht die Interaktion mit NI-Messgeräten über das Netzwerk mithilfe der Remote Procedure Calls-(gRPC-)Technologie. NI hat in die Kompatibilität unserer Produkte mit gRPC investiert, damit unsere Kunden aus der Ferne mit NI-Produkten interagieren können, um hochwertige Messungen mit geringer Latenz durchzuführen. Dank der NI-Netzwerkfähigkeit können technische Fachkräfte vorhandene Test-Workflows flexibel nutzen.

Inhalt

Was ist die NI-Netzwerkfähigkeit?

Die Netzwerkfähigkeit von NI-Software bedeutet, dass NI-Software aus der Ferne mit NI-Hardware und -Diensten interagieren kann, um qualitativ hochwertige Messungen mit geringer Latenz durchzuführen. Die Netzwerkfähigkeit von NI-Software verwendet vordefinierte eigenständige Anwendungen und/oder APIs und/oder Befehle auf ganzheitliche und vom Betriebssystem unabhängige Weise und nutzt eine Client/Server-Architektur. 

Die NI-Netzwerkfähigkeit nutzt gRPC im Hintergrund. Durch den Einsatz eines gRPC-basierten Servers können Sie von vielen verschiedenen Programmierumgebungen, Plattformen und Betriebssystemen aus auf Test- und Messgeräte zugreifen und diese steuern. 

gRPC verwendet Protokollpuffer (Proto3) als Nachrichtenaustauschformat. Die folgende Abbildung zeigt, wie Protokollanfragen und -antworten zwischen dem gRPC-Server und den Stubs ausgetauscht werden. 

Abbildung 1: Anfragen und Antworten vom gRPC-Server

Die NI-Netzwerkfähigkeit wird unter Windows, Linux und Mac für eine Reihe von Programmiersprachen unterstützt. Eine vollständige Liste der unterstützten Sprachen und der jeweiligen Betriebssysteme finden Sie in den Beschreibungen unserer Ressourcen zur Unterstützung von gRPC.

Was ist gRPC?

gRPC ist ein Open-Source-RPC-Framework (Remote Procedure Call), das überall ausgeführt werden kann. Es ermöglicht eine transparente Kommunikation zwischen Client und Server und erleichtert den Aufbau vernetzter Systeme aus der Ferne.

In einem gRPC kann eine Clientanwendung eine Methode in einer Serveranwendung auf einem anderen Computer direkt aufrufen, als handelte es sich um ein lokales Objekt. Auf diese Weise können Sie verteilte Anwendungen und Dienste einfacher erstellen. Auf der Serverseite implementiert der Server diese Schnittstelle und führt einen gRPC-Server aus, um Clientaufrufe zu verarbeiten. Auf der Clientseite verfügt der Client über einen Stub (in manchen Sprachen einfach als Client bezeichnet), der dieselben Methoden wie der Server bereitstellt.

Ein Hauptaspekt der Verwendung von gRPC besteht darin, dass dieses Framework auf Clientseite betriebssystem- und sprachunabhängig ist, Ihnen Flexibilität bietet und an das aktuelle Betriebssystem oder die Programmiersprachen angepasst werden kann, die bereits im Rahmen Ihres Projekts verwendet werden.

NI reiht sich ein in die Liste namhafter Unternehmen, die gRPC einsetzen

Durch den Einsatz von gRPC für NI-Netzwerkfähigkeit reiht sich NI in die Liste anderer großer Unternehmen wie Google, Netflix und Square ein. gRPC verfügt über leistungsstarke Funktionen, die anderen Optionen wie RPyC, SCPI und HiSLIP fehlen:

  • Sehr starke aktive Entwicklung und Community, einschließlich der Unterstützung von Google 
  • Gute Standardleistung und -funktionen
  • Eindeutig definierte Sprache zur Schnittstellendefinition: Protokollpuffer
  • Unterstützung für viele Sprachen und Betriebssysteme, insbesondere wenn Sie inoffizielle/Drittanbieter-Clientunterstützung einbeziehen
  • Funktioniert gut in Konfigurationen, in denen eine sprach- und betriebssystemunabhängige Netzwerkverbindung erforderlich ist

 

Authentifizierung/Autorisierung in gRPC

Die Netzwerkfähigkeit von NI verwendet die Standardautorisierungsmechanismen von gRPC. Die Verbindung kann durch serverseitige TLS oder gegenseitige TLS (Zero Trust) gesichert werden. So ist gewährleistet, dass die Kommunikation verschlüsselt wird und der Client/Server vertrauenswürdig ist. Sie können den Server so aktualisieren, dass er eine benutzerdefinierte Autorisierung berücksichtigt, indem Sie einen Autorisierungsserver integrieren.

Erwartete Leistung der NI-Netzwerkfähigkeit

Die Verwendung der NI-Netzwerkfähigkeit ist eine Möglichkeit, um eine geringe Latenz bei hochwertigen Messungen sicherzustellen. Das folgende Beispiel veranschaulicht Leistungsvergleiche beim Lesen einer analogen Eingangsspannung von einem simulierten cDAQ-9179-Chassis mit einem NI-9207-Modul der C-Serie.

gRPC-Leistung mit Streaming

Server überträgt Daten an den Client:

  • 200.000 Werte mit doppelter Genauigkeit pro vom Server gestreamter Nachricht
  • Standardkonfiguration mit Protokollpuffer
  • Unsichere Zugangsdaten
  • Eine Clientverbindung
  • 1-Gbit-Ethernet über Switch

Linux-Localhost

  • 4 GB/s mit einfachem Stream
  • 8 GB/s mit mehreren Streams
  • Grundlinie: Rohdaten-Sockets des Linux-Localhost: ca. 10 GB/s 

Windows 10-Localhost: 4 GB/s1

Linux zu Linux: 11 MB/s

  • 93 % des theoretischen Maximums 

Lokales Thunderbolt 3 Link-Netzwerk

  • Windows-Client, Linux-Server: 1,2 GB/s
  • Linux-Client, Linux-Server: 1,6 GB/s
  • Linux über SSH: 850 MB/s

1 CISO AMP beachten

gRPC-Leistung mit NI-DAQmx

NI-DAQmx mit einem simulierten cDAQ-9179-Chassis und NI-9207-Modulen:

  • Direkte NI-DAQmx-Aufrufe durch C++-App: 121,6 ms
  • gRPC-Windows-Client, Localhost-Server: 121,9 ms
  • gRPC-Linux-Client über Netzwerk (1 Gbit) ohne Direktverbindung: 123,9 ms

Wie aus diesen Benchmarks ersichtlich ist, sind die gRPC-Aufrufe mit nativen Treiberaufrufen vergleichbar und haben eine minimale Latenz. Mit gRPC können NI-Kunden aus der Ferne mit NI-Produkten interagieren, um qualitativ hochwertige Messungen mit geringer Latenz durchzuführen, und vorhandene Test-Workflows weiter nutzen.