Skip to main content

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=y

    • CONFIG_BPF_SYSCALL=y

    • CONFIG_BPF_JIT=y

    • CONFIG_HAVE_EBPF_JIT=y

    • CONFIG_XDP_SOCKETS=y

  • Die Pakete libxdp1 und libbpf1 mü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

  1. Fragen Sie die aktuelle XDP‑Konfiguration ab:

    ethernet-xdp-get <interface>

    Beispiel:

    ethernet-xdp-get enp1s0
  2. Aktivieren Sie XDP separat für jeden Netzwerkadapter:

    ethernet-xdp-set <interface> on

    Beispiel:

    ethernet-xdp-set enp1s0 on
  3. Deaktivieren Sie XDP separat für jeden Netzwerkadapter:

    ethernet-xdp-set <interface> off

    Beispiel:

    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.