CODESYS Control mit Linux XDP
eXpress Data Path (XDP) ist eine Erweiterung des Linux-Kernels um Netzwerkpakete mit sehr hoher Performance zu senden und zu empfangen, direkt am Eingang des Netzwerk-Stacks.
XDP kann unter bestimmten Voraussetzungen mit CODESYS Control verwendet werden.
Unterstützte Geräte
CODESYS Control for Linux SL
CODESYS Control for Linux ARM SL
CODESYS Control for Linux ARM64 SL
CODESYS Virtual Control for Linux SL
CODESYS Virtual Control for Linux ARM SL
CODESYS Virtual Control for Linux ARM64 SL
Voraussetzung
Die CODESYS Control SL Runtime Version muss größer oder gleich der Version V4.21.0.0 sein.
Die Linux-Kernel-Version muss größer oder gleich der Version V6.1 sein, mit folgenden Konfigurations-Flags:
CONFIG_BPF=yCONFIG_BPF_SYSCALL=yCONFIG_BPF_JIT=yCONFIG_HAVE_EBPF_JIT=yCONFIG_XDP_SOCKETS=y
Die Pakete
libxdp1undlibbpf1müssen installiert sein.Eine XDP‑fähige Netzwerkkarte und ein entsprechender Treiber (z. B. Intel i226 mit igc) müssen im System vorhanden sein.
Der Treiber XDP muss Zero Copy unterstützen.
Für weiterführende Informationen bezüglich der Technologien zu XDP und eBPF, siehe:
Achtung
Das Betriebssystem weist folgende Einschränkung auf: Die Verwendung von XDP erfordert, dass die Runtime als root-Rechten ausgeführt werden muss.
Linux XDP verwenden
Fragen Sie die aktuelle XDP‑Konfiguration ab:
ethernet-xdp-get <interface>Beispiel:
ethernet-xdp-get enp1s0
Aktivieren Sie XDP separat für jeden Netzwerkadapter:
ethernet-xdp-set <interface> onBeispiel:
ethernet-xdp-set enp1s0 on
Deaktivieren Sie XDP separat für jeden Netzwerkadapter:
ethernet-xdp-set <interface> offBeispiel:
ethernet-xdp-set enp1s0 off
Tipp
Überprüfen Sie, ob sich die Performance für Ihren Anwendungsfall durch das Aktivieren von XDP verbessert. Während sich die Zykluszeit in vielen Fällen verkürzt, gibt es auch Szenarien, in denen sich XDP nachteilig auf die Performance auswirken kann.
Weitere Informationen, um die Performance zu verbessern, finden Sie unter Performance-Optimierung.
Mitgelieferter eBPF
Ab Version 4.21.0.0 wird zusammen mit den entsprechenden CODESYS Control SL-Produkten ein sogenanntes eBPF-Programm installiert.
Das eBPF-Programm wird verwendet, um für eingehende Pakete zu entscheiden, ob sie den normalen Weg durch den Linux-Netzwerk-Stack gehen oder per XDP direkt an die CODESYS Runtime weitergeleitet werden sollen.
CODESYS ist für die Verwendung dieses Programms zur Laufzeit zuständig.
Nach der Installation finden Sie das Programm unter: ../opt/codesys/lib/bpfprog.o.
Den Source-Code und die Anleitung finden Sie unter: ../usr/share/doc/codesyscontrol/bpfprog.