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

  • パッケージ libxdp1 そして libbpf1 をインストールする必要があります。

  • XDP 対応のネットワークカードと対応するドライバ (例:Intel i226 with igc) がシステムに存在している必要があります。

  • 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 ネットワークスタックを通常のルートで送るべきか、それとも直接 Linux ネットワークスタックに転送すべきかを決定するのに使用されます。 CODESYS XDP 経由のランタイム。

CODESYS 実行時にこのプログラムを使用する責任があります。

インストール後、プログラムは次の場所にあります。 ../opt/codesys/lib/bpfprog.o

ソースコードと手順は、次の場所にあります。 ../usr/share/doc/codesyscontrol/bpfprog