Skip to main content

CODESYS Control 使用 Linux XDP

eXpress Data Path (XDP) 是 Linux 内核的扩展,用于直接在网络堆栈的输入端发送和接收具有非常高性能的网络包。

XDP 可以与一起使用 CODESYS Control 在特定条件下。

支持的设备

  • 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

要求

  • 这个 CODESYS Control SL 运行时版本必须高于或等于版本 V4.21.0.0。

  • Linux 内核版本必须高于或等于版本 V6.1,并带有以下配置标志:

    • CONFIG_BPF=y

    • CONFIG_BPF_SYSCALL=y

    • CONFIG_BPF_JIT=y

    • CONFIG_HAVE_EBPF_JIT=y

    • CONFIG_XDP_SOCKETS=y

  • 这些包裹 libxdp1libbpf1 必须安装。

  • 系统中必须存在支持 XDP 的网卡和相应的驱动程序(例如带有 igc 的英特尔 i226)。

  • XDP 驱动程序必须支持零复制。

有关 XDP 和 eBPF 技术的更多信息,请参阅以下内容:

小心

操作系统有以下限制:使用 XDP 需要以 root 权限运行运行时。

使用 Linux XDP

  1. 查询当前 XDP 配置:

    ethernet-xdp-get <interface>

    示例:

    ethernet-xdp-get enp1s0
  2. 为每个网络适配器单独启用 XDP:

    ethernet-xdp-set <interface> on

    示例:

    ethernet-xdp-set enp1s0 on
  3. 为每个网络适配器分别禁用 XDP:

    ethernet-xdp-set <interface> off

    示例:

    ethernet-xdp-set enp1s0 off

提示

检查启用 XDP 是否可以提高用例的性能。虽然在许多情况下循环时间会缩短,但在某些情况下,XDP 可能会对性能产生负面影响

有关如何提高性能的更多信息,请参阅以下内容: 性能优化

包括 eBPF

在 4.21.0.0 及更高版本中,eBPF 程序与相应的版本一起安装 CODESYS Control SL 产品。

eBPF 程序用于决定传入的包是否应采用正常路径通过 Linux 网络堆栈,或者是否应将其直接转发到 CODESYS 通过 XDP 运行时间。

CODESYS 负责在运行时使用此程序。

安装后,您将在以下位置找到该程序: ../opt/codesys/lib/bpfprog.o

可以在以下位置找到源代码和说明: ../usr/share/doc/codesyscontrol/bpfprog