Konfigurieren einer Citrix ADC BLX-Appliance mit DPDK-Unterstützung

Citrix ADC BLX-Appliances unterstützen das Data Plane Development Kit (DPDK), eine Reihe von Linux-Bibliotheken und Netzwerkschnittstellen-Controllern für eine bessere Netzwerkleistung. Eine Citrix ADC BLX-Appliance mit DPDK-Ports funktioniert nur im dedizierten Netzwerkmodus.

Die Citrix ADC BLX Appliance verwendet Bibliotheken, die mit DPDK-Version 20.11.1kompiliert wurden.

Konfigurieren einer Citrix ADC BLX-Appliance mit DPDK-Ports

Ein Citrix ADC BLX lädt das DPDK VFIO-Kernelmodul automatisch auf den Linux-Host. Die Appliance erkennt automatisch die angegebenen DPDK-kompatiblen NIC-Ports auf dem Linux-Host. Die Appliance bindet dann die erkannten DPDK-kompatiblen NIC-Ports an das DPDK-VFIO-Modul auf dem Linux-Host. Nach dem Start der Citrix ADC BLX-Appliance werden die DPDK-Ports als dedizierte Ports zur Appliance hinzugefügt.

Bevor Sie beginnen

Bevor Sie mit der Konfiguration der Citrix ADC BLX-Appliance mit DPDK-Ports beginnen, stellen Sie Folgendes sicher:

IOMMU-Unterstützung auf dem Linux-Host aktivieren

Die Unterstützung der Input-Output Memory Management Unit (IOMMU) muss auf dem Linux-Host aktiviert sein, damit der Kernel das VFIO-Modul für DPDK verwenden kann.

So aktivieren Sie die IOMMU-Unterstützung auf dem Linux-Host:

  1. Aktivieren Sie die IOMMU-Erweiterung im BIOS des Linux-Hosts. Weitere Informationen finden Sie in der zugehörigen Hardwaredokumentation des Linux-Hosts.
  2. Aktivieren Sie den IOMMU-Modus im Kernel, indem Sie die Konfigurationsdatei grub im Linux-Host bearbeiten.
    1. Öffnen Sie die Konfigurationsdatei grub im Linux-Host. Der vollständige Pfad der Konfigurationsdatei grub ist: /etc/default/grub.
    2. Hängen Sie intel_iommu=on an das Ende der Zeile GRUB_CMDLINE_LINUX an.

      # vi /etc/default/grub
      
      …
      
      GRUB_CMDLINE_LINUX="nofb splash=quiet console=tty0 ... intel_iommu=on"
      
      …
      <!--NeedCopy-->
      
    3. Speichern Sie die Konfigurationsdatei grub.

    4. Aktualisieren Sie den Grub-Bootloader, indem Sie einen der folgenden Befehle (auf der Linux-CLI) basierend auf der auf dem Linux-Host installierten Version von grub ausführen.
      • grub2-mkconfig -o /boot/grub2/grub.cfg
      • grub-mkconfig -o /boot/grub/grub.cfg
    5. Starten Sie den Linux-Host neu.

Konfigurieren Sie die Citrix ADC BLX-Appliance für die Verwendung von DPDK-Ports

Die Konfiguration der Citrix ADC BLX-Appliance mit DPDK-Ports besteht darin, die zugehörigen Parameter in der Citrix ADC BLX-Konfigurationsdatei (blx.conf) festzulegen.

Konfigurieren der Citrix ADC BLX-Appliance mit DPDK-Ports:

  1. Öffnen Sie die Citrix ADC BLX-Konfigurationsdatei (blx.conf), die auf dem Linux-Host vorhanden ist. Der vollständige Pfad der Citrix ADC BLX-Konfigurationsdatei lautet: /etc/blx/blx.conf

  2. Kommentieren Sie und stellen Sie die folgenden Parameter ein:

    • interfaces. Gibt die DPDK-kompatiblen NIC-Ports zusätzlich zu den Nicht-DPDK-NIC-Ports an, die als dedizierte Ports zur Appliance hinzugefügt werden sollen.

      Die Citrix ADC BLX-Appliance erkennt die DPDK-kompatiblen NIC-Ports automatisch aus der Liste der für diesen Parameter angegebenen Ports. Die Appliance bindet dann die erkannten DPDK-kompatiblen NIC-Ports an das DPDK-VFIO-Modul auf dem Linux-Host. Nach dem Start der Citrix ADC BLX-Appliance werden alle angegebenen Ports in diesem Parameter automatisch als dedizierte Ports zur Appliance hinzugefügt.

      Dieser Parameter gibt die Portnamen (wie auf der Linux-CLI angezeigt) durch Leerzeichen getrennt an.

    • total-hugepage-mem. Gibt die Gesamtgröße riesiger Seiten an, die dem DPDK auf dem Linux-Host zugewiesen werden sollen. Die Gesamtgröße riesiger Seiten kann in Megabyte (MB oder M) oder Gigabyte (GB oder G) angegeben werden. Zum Beispiel 1024 MB, 1024 M, 1 GB und 1 G.

      • Standardwert: 1 GB. Wenn der Parameter nicht festgelegt ist, weist die Citrix ADC BLX-Appliance standardmäßig 1 GB große Seiten für DPDK zu.
      • Minimaler Wert: 1 GB
      • Maximalwert: Wie auf dem Linux-Host verfügbar.
  3. Speichern Sie die Citrix ADC BLX-Konfigurationsdatei (blx.conf).
  4. Starten Sie die Citrix ADC BLX-Appliance neu, indem Sie den folgenden Befehl in der Linux-Host-CLI ausführen:

    systemctl start blx

    Weitere Informationen zum Starten einer Citrix ADC BLX-Appliance finden Sie unter Starten der Citrix ADC BLX-Appliance.

Beispiel-Konfiguration

Im folgenden Beispielauszug einer Datei blx.conf werden Linux-NIC-Ports ens1, enp1s0f0 und enp1s0f1 für den Parameter interfaces angegeben. Port ens1 ist ein Nicht-DPDK-Port, enp1s0f0 und enp1s0f1 sind DPDK-kompatible Ports. total-hugepage-mem Der Parameter ist auf 2 GB eingestellt.

Die Citrix ADC BLX-Appliance erkennt enp1s0f0 und enp1s0f1 als DPDK-kompatible Ports automatisch und bindet sie an das DPDK-VFIO-Modul auf dem Linux-Host. Außerdem weist die Appliance 2 GB riesige Seiten für DPDK zu.

Nach dem Start der Citrix ADC BLX-Appliance werden ens1, enp1s0f0 und enp1s0f1 der Appliance als dedizierte Ports hinzugefügt. enp1s0f0 und enp1s0f1 fungieren als DPDK-Ports auf der Citrix ADC BLX-Appliance.

blx-system-config
{
…
        worker-processes: 6
…
        interfaces: ens1 enp1s0f0 enp1s0f1
…
        total-hugepage-mem: 2G
…
        host-ipaddress: 198.51.100.11/24
…
}

…

static-routes
{
…
    default 198.51.100.1
…
}
…

<!--NeedCopy-->

Wie in der Ausgabe von show interface summary in der Citrix ADC BLX CLI gezeigt, ens1 wird als 0/3, enp1s0f0 als 10/1 und enp1s0f1 als 40/1-Schnittstelle auf der Appliance hinzugefügt.

> sh interface summary
------------------------------------------------------------------------
      Interface  MTU        MAC                  Suffix
------------------------------------------------------------------------
1     0/1        65535      f6:d5:34:f7:e4:96    NetScaler Linux Interface
2     0/2        1500       ee:14:18:4a:5b:92    NetScaler Linux Interface
3     0/3        1500       2a:ca:db:ee:66:91    NetScaler Linux Interface
4     10/1       1500       0c:c4:7a:3a:44:4d    10Gig(net_ixgbe) DPDK Interface
5     40/1       1500       68:05:ca:33:ba:b0    40Gig(net_i40e) DPDK Interface
 Done
<!--NeedCopy-->

Konfigurieren einer Citrix ADC BLX-Appliance mit DPDK-Mellanox-Ports

Eine Citrix ADC BLX-Appliance unterstützt Mellanox-Ports (mit MLX5-DPDK-Treiber) auf dem Linux-Host, die als DPDK-Ports auf der Appliance verwendet werden.

Die Citrix ADC BLX-Appliance erkennt automatisch die angegebenen Mellanox-NIC-Ports auf dem Linux-Host und initialisiert sie im DPDK-Modus. Nach dem Start der Citrix ADC BLX-Appliance werden die DPDK Mellanox-NIC-Ports als dedizierte Ports zur Appliance hinzugefügt.

Das Konfigurieren der Citrix ADC BLX-Appliance mit DPDK-Mellanox-Ports umfasst die folgenden Schritte:

  • Mellanox OpenFabrics Enterprise Distribution herunterladen und auf dem Linux-Host installieren
  • Konfigurieren Sie die Citrix ADC BLX-Appliance für die Verwendung von DPDK-Mellanox-Ports

Bevor Sie beginnen

Bevor Sie mit der Konfiguration der Citrix ADC BLX-Appliance mit DPDK-Mellanox-Ports beginnen, stellen Sie Folgendes sicher:

Mellanox OpenFabrics Enterprise Distribution herunterladen und auf dem Linux-Host installieren

Mellanox OFED (MLNX_OFED) ist eine von Mellanox getestete und verpackte Version von OpenFabrics Enterprise Distribution (OFED). Mellanox OFED wird für die Ausführung der Mellanox-Ports auf einem Linux-Host verwendet. Laden Sie das Mellanox OFED-Paket von der offiziellen Mellanox-Website auf den Linux-Host herunter. Installieren Sie anschließend die Mellanox OFED DPDK-Bibliotheken und Kernelmodule auf dem Linux-Host.

So laden Sie das Mellanox OFED-Paket auf den Linux-Host herunter:

  1. Greifen Sie auf die offizielle Mellanox OFED Seite unter Mellanox OpenFabrics Enterprise Distribution for Linux (MLNX OFED)zu.

  2. Laden Sie das entsprechende Mellanox OFED-Paket herunter, das auf der Linux-Betriebssystemversion und der Linux-Kernelversion auf dem Host basiert Installieren Sie anschließend das Mellanox OFED-Paket auf dem Linux-Host.

    Hinweis:

    Lesen Sie die offizielle Mellanox OFED für Linux-Dokumentation:

    • finden Sie eine Liste der Mellanox OFED-Pakete und der unterstützten Linux-Betriebssystemversionen und Linux-Kernel-Versionen.
    • für weitere Informationen zum Herunterladen und Installieren eines Mellanox OFED-Pakets auf einem Linux-Host.

So installieren Sie die Mellanox OFED DPDK-Bibliotheken auf dem Linux-Host:

Führen Sie den folgenden Befehl in der Linux-Host-CLI aus:

./mlnxofedinstall --upstream-libs –dpdks
<!--NeedCopy-->

Konfigurieren Sie die Citrix ADC BLX-Appliance für die Verwendung von DPDK-Mellanox-Ports

Um die DPDK-Mellanox-Ports zur Citrix ADC BLX-Appliance hinzuzufügen, müssen Sie den Parameter interface mit dem Namen der DPDK-Mellanox-Ports festlegen.

Konfigurieren der Citrix ADC BLX-Appliance für die Verwendung von DPDK-Mellanox-Ports:

  1. Öffnen Sie die Citrix ADC BLX-Konfigurationsdatei (blx.conf), die auf dem Linux-Host vorhanden ist. Der vollständige Pfad der Citrix ADC BLX-Konfigurationsdatei lautet: /etc/blx/blx.conf

  2. Stellen Sie den Parameter interfaces mit den Namen der DPDK Mellanox-Ports (wie auf der Linux-CLI gezeigt) ein, die in der Citrix ADC BLX-Appliance verwendet werden sollen. Geben Sie die Portnamen durch Kommas getrennt an.

  3. Kommentieren Sie und stellen Sie die folgenden Parameter ein:

    • interfaces. Gibt die DPDK-Mellanox-Ports an, die als dedizierte Ports zur Appliance hinzugefügt werden sollen.

      Die Citrix ADC BLX-Appliance erkennt automatisch die angegebenen Mellanox-NIC-Ports auf dem Linux-Host und initialisiert sie im DPDK-Modus. Nach dem Start der Citrix ADC BLX-Appliance werden die DPDK Mellanox-NIC-Ports als dedizierte Ports zur Appliance hinzugefügt.

      Dieser Parameter gibt die Portnamen (wie auf der Linux-CLI angezeigt) durch Leerzeichen getrennt an.

      Hinweis:

      Eine Citrix ADC BLX-Appliance unterstützt jeweils nur einen Typ von DPDK-NIC-Ports. Zum Beispiel entweder alle Mellanox-Ports oder alle Intel-Ports.

    • total-hugepage-mem. Gibt die Gesamtgröße riesiger Seiten an, die dem DPDK auf dem Linux-Host zugewiesen werden sollen. Die Gesamtgröße riesiger Seiten kann in Megabyte (MB oder M) oder Gigabyte (GB oder G) angegeben werden. Zum Beispiel, 1024MB1024M, 1GB, und 1G.

      • Standardwert: 1GB. Wenn der Parameter nicht festgelegt ist, weist die Citrix ADC BLX-Appliance standardmäßig 1GB Hugepages für DPDK zu.
      • Minimaler Wert: 1GB
      • Maximalwert: Wie auf dem Linux-Host verfügbar.
  4. Speichern Sie die Citrix ADC BLX-Konfigurationsdatei (blx.conf).
  5. Starten Sie die Citrix ADC BLX-Appliance neu, indem Sie den folgenden Befehl in der Linux-Host-CLI ausführen:

    systemctl start blx

    Weitere Informationen zum Starten einer Citrix ADC BLX-Appliance finden Sie unter Starten der Citrix ADC BLX-Appliance.

Beispiel-Konfiguration

Im folgenden Beispielauszug einer Datei blx.conf werden Linux-NIC-Ports ens1, ens1f0 und ens1f1 für den Parameter interfaces angegeben. Port ens1 ist ein Nicht-DPDK-Port, ens1f0 und enp1s0f1 sind Mellanox-Ports. Der Parameter total-hugepage-mem ist auf 2GB eingestellt.

Die Citrix ADC BLX-Appliance erkennt ens1f0 und ens1f1 automatisch als Mellanox-Ports und initialisiert sie im DPDK-Modus. Außerdem weist die Appliance 2GB Hugepages für DPDK zu.

Nach dem Start der Citrix ADC BLX-Appliance werden ens1, ens1f0 und ens1f1 der Appliance als dedizierte Ports hinzugefügt. ens1f0 und ens1f1 fungieren als DPDK-Ports auf der Citrix ADC BLX-Appliance.

blx-system-config
{
…
        worker-processes: 6
…
        interfaces: ens1 ens1f0 ens1f1
…
        total-hugepage-mem: 2G
…
        host-ipaddress: 198.51.100.11/24
…
}

…

static-routes
{
…
    default 198.51.100.1
…
}
…

<!--NeedCopy-->

Wie in der Ausgabe von show interface summary in der Citrix ADC BLX CLI gezeigt, ens1 wird als 0/3, ens1f0 als 100/1 und ens1f1 als 100/2-Schnittstelle auf der Appliance hinzugefügt.

> sh interface summary
------------------------------------------------------------------------
      Interface  MTU        MAC                  Suffix
------------------------------------------------------------------------
1     0/1        65535      f6:d5:34:f7:e4:96    NetScaler Linux Interface
2     0/2        1500       ee:14:18:4a:5b:92    NetScaler Linux Interface
3     0/3        1500       12:64:f3:e3:d3:36    NetScaler Linux Interface
4     100/1      1500       b8:59:9f:e0:70:28    100Gig(mlx5_p...DPDK Interface
5     100/2      1500       b8:59:9f:e0:70:29    100Gig(mlx5_p...DPDK Interface

Done
<!--NeedCopy-->

Unterstützung für Software-Receive Side Scaling für Citrix ADC BLX Appliance im DPDK-Modus

Eine Citrix ADC BLX-Appliance im DPDK-Modus, die mit einer höheren Anzahl von Paket-Engines konfiguriert ist, unterstützt keinen NIC-Port mit einer geringeren Anzahl von Sende- (Tx) und Empfangswarteschlangen (Rx).

Eine Citrix ADC BLX-Appliance im DPDK-Modus verwendet keinen NIC-Port, wenn beide der folgenden Bedingungen erfüllt sind:

  • Die Appliance verfügt über einen NIC-Port, der eine begrenzte Anzahl von Sende- (Tx) und Empfangswarteschlangen (Rx) unterstützt. Zum Beispiel 7
  • Die Appliance ist mit einer höheren Anzahl von Paket-Engines konfiguriert. Zum Beispiel 28.

Um dieses Problem zu beheben, verwendet die Citrix ADC BLX-Appliance ab Build 13.1 21.x Software Receive Side Scaling (RSS), um empfangene Pakete an den NIC-Ports effizient über mehrere Paket-Engines zu verteilen.

Das Software-RSS-Modul weist jedem NIC-Port ein logisches Rx- und Tx-Warteschlangenpaar zu. Das Warteschlangenpaar wird dann der Paket-Engine PE-0 zugeordnet.

Für jedes Paket in der Rx-Warteschlange eines NIC-Ports wählt das PE-0 mithilfe eines RSS-Hash-Algorithmus eine Paket-Engine aus. PE-0 sendet das Paket dann zur Verarbeitung an die ausgewählte Paket-Engine. Nachdem die Verarbeitung des Pakets abgeschlossen ist, sendet PE-0 das Paket an die Tx-Warteschlange des NIC-Ports.

Konfigurieren einer Citrix ADC BLX-Appliance mit DPDK-Unterstützung