Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Beispiel: Aktivieren von SR-IOV auf vMX-Instanzen auf KVM

vMX auf KVM unterstützt Single-Root-E/A-Virtualisierungsschnittstellen (SR-IOV). Die Single-Root-E/A-Virtualisierung (SR-IOV) ermöglicht es, dass eine physische Funktion als mehrere, separate vNICs angezeigt wird. SR-IOV ermöglicht einem Gerät, z. B. einem Netzwerkadapter, den separaten Zugriff auf seine Ressourcen durch verschiedene Hardwarefunktionen. Wenn Sie über eine physische Netzwerkkarte verfügen, die SR-IOV unterstützt, können Sie SR-IOV-fähige vNICs oder virtuelle Funktionen (VFs) an die vMX-Instanz anhängen, um die Leistung zu verbessern.

Systemvoraussetzungen:

  • Junos OS Version 18.4 oder höher.

  • Für SR-IOV auf der VMX für KVM ist einer der folgenden Intel NIC-Treiber erforderlich:

    • Intel X520 oder X540 mit 10G-Ports und ixgbe-Treiber

    • Intel X710 oder XL710 mit 10G-Ports und i40e-Treiber

    Ab Junos OS Version 19.1R1-S1 und Junos OS Version 19.2R1 ist Unterstützung für 40G-Ports mit Intel XL710-QDA2 NICs für VMX-Instanzen verfügbar. Bei Verwendung von 40G-Ports erkennt der vMX automatisch die Portgeschwindigkeit und weist zwei E/A-vCPUs zu.

Um SR-IOV auf VMX-Instanzen zu aktivieren, müssen Sie die folgenden Aufgaben ausführen:

  • Bereiten Sie eine Netzwerkkarte für die Verwendung von SR-IOV im Systemmodus (/sys/) vor.

  • Installieren Sie den Treiber von Intel, Sie müssen den Treiber kompilieren, den alten Treiber deinstallieren und den neuen kompilierten Treiber installieren

    Hinweis:

    Der vMX-Installer stellt ebenfalls einen modifizierten Intel-Treiber zur Verfügung. Sie können entweder die nativen Treiber von Intel oder den modifizierten vMX-Treiber verwenden.

  • Bereiten Sie die Datei vmx.conf vor

  • Verwenden der Junos CLI zum Konfigurieren des nativen Treibers

  • BIOS-Anforderung zur Aktivierung von SR-IOV- Stellen Sie sicher, dass Intel VT-d oder AMD IOMMU in den BIOS-Einstellungen des Systems aktiviert sind.

Vorgehensweise zur Identifizierung von PCI-Adressen und Kernel-Namen für die Netzwerkkarte

  1. Verwenden Sie den folgenden Befehl, um die PCI-Adresse zu ermitteln:
  2. Um den Kernelnamen mithilfe von PCI zu ermitteln, verwenden Sie den folgenden Befehl:
  3. Verwenden Sie den folgenden Befehl, um den für die Netzwerkkarte verwendeten Treiber zu ermitteln:

Laden Sie die neueste Treibersoftware von Intel herunter und installieren Sie sie.

Sie können die neueste Treibersoftware von Intel herunterladen und die vorhandene Treibersoftware von Ubuntu ersetzen.

Laden Sie in diesem Beispiel die Software von Intel® Network Adapter Driver for PCIe* herunter Intel® 10 Gigabit Ethernet-Netzwerkverbindungen unter Linux und speichern Sie sie in einem beliebigen Verzeichnis Ihrer Wahl und befolgen Sie die README-Anweisungen, um als nächstes fortzufahren.

So installieren Sie Treibersoftware von Intel:

  1. Installieren Sie die Treibersoftware.
  2. Deinstallieren Sie den alten Treiber und laden Sie den aktualisierten Treiber mit dem rmmodBefehl /modprobe .
    Warnung:

    Der Befehl rmmod deinstalliert den 10GE-Treiber. Wenn dies die einzige Schnittstelle ist, mit der Sie verbunden sind, geht der Zugriff auf den Host verloren.

  3. Überprüfen Sie, ob der neue Treiber korrekt installiert ist.

Vorbereiten der Netzwerkkarte für die Verwendung von SR-IOV im Systemmodus

Der Host muss für jede dedizierte Netzwerkkarte informiert werden, indem der sriov_numvfs Wert festgelegt wird, wie viele VFs SR-IOV für die angegebene Netzwerkkarte verwenden werden. Das vmx.sh Skript enthält keine Informationen darüber, wie viele VFs die gemeinsam genutzte Netzwerkkarte verwenden. Aus diesem Grund müssen Sie die sriov_numvfs entsprechend konfigurieren.

Dieser Wert kann als Boot-Option so eingestellt werden, dass er nach einem Neustart persistent ist und im laufenden Betrieb geändert werden kann, was nach einem Neustart nicht persistent wäre.

Die in diesem Beispiel angegebene Prozedur ist eine vorübergehende Lösung für die Konfiguration mit /sys Jede Einstellung auf /sys/class/net//device/interface-namesriov_numvfs ist nicht permanent, daher überlebt die Konfiguration sriov_numvfs einen Neustart nicht.

Führen Sie die folgenden Schritte aus, um die Netzwerkkarte für die Verwendung von SR-IOV vorzubereiten:

Erstellen Sie eine virtuelle Funktion (VF) mit dem folgenden Befehl:

Der folgende Befehl ermöglicht 4 VNFs die Verwendung der gemeinsam genutzten Netzwerkkarte ens8f1 für SR-IOV. Sie müssen entweder sudo verwenden oder sich als Root-Benutzer anmelden.

Hinweis:

Die sriov_numvfs Option akzeptiert nur die Werte 0-n, wobei n die maximale Anzahl von VFs ist, die vom SR-IOV unterstützt werden.

Einstellen von SR-IOV beim Booten

Die folgenden Verfahren stellen einige alternative Methoden zum Konfigurieren von SR-IOV bereit, bei denen die Konfiguration einen Neustart des Hosts beibehält.

Folgende Optionen stehen zur Verfügung, um den Wert während des Bootvorgangs des Hosts zu setzen:

  • Verwendung von rc.local

  • Festlegen von Modprobe-Optionen

  • Festlegen von kernel-paramater mit grub

Das folgende Beispiel zeigt eine Methode zum Konfigurieren des Werts mithilfe des sriov_numvfs Befehls grub kernel

Sie müssen "intel_iommu=on" und ixgbe.max_vfs= value

Weitere Informationen zu hugepages finden Sie unter Vorbereiten des Ubuntu-Hosts für die Installation von vMX.

Bearbeiten Sie die Datei "/etc/default/grub":

Aktualisieren Sie nach der Bearbeitung Folgendes:

Schreiben Sie einen neuen Bootloader, um die Änderungen beim nächsten Neustart aktiv zu machen.

Starten Sie den Host neu, um die Einstellungen zu aktivieren.

Überprüfen Sie die sriov_numvfs Einstellungen

Zweck

So überprüfen Sie die sriov_numvfs Konfiguration mithilfe der CLI. In diesem Beispiel ist die erforderliche Netzwerkkarte für die Verwendung mit SR-IOV ens8f1 an der PCI-Adresse 85:00.0. Bitte beachten Sie die "Virtuelle Funktion" in der Ausgabe.

Aktion

Die /sys/class/net/ens8f1/device/sriov_numvfs enthält auch den gewünschten Wert von sriov_numvfs.

Zum Testen kann die sriov_numvfs schnell geändert werden, indem direkt in geschrieben wird /sys/class/net/interface-name/device/sriov_numvfs.

Ändern der Anzahl der sriov_numvfs

Wir empfehlen, sriov_numvfs im Voraus zu erstellen (Beispiel: mit dem Befehl grub beim Booten), da das Ändern der VF-Nummer nach der Bereitstellung der 1. vMX-Instanz, die eine bestimmte Netzwerkkarte mit SR-IOV verwendet, nicht zulässig ist. Wenn Sie die VF-Nummer ändern müssen, müssen Sie das laufende vMX stoppen. Wir empfehlen, die Option sriov_numvfs auf einen höheren Wert zu setzen, um zu vermeiden, dass die sriov_numvfs Nummer nachträglich geändert wird.

Um einen bereits konfigurierten Wert von VFs zu ändern, müssen Sie zuerst den Wert als 0 und dann in den erforderlichen ganzzahligen Wert ändern.

Wenn keine VFs zugewiesen sind, kann die Anzahl der VFs auf einen beliebigen gültigen Wert geändert werden (0 - n, wobei n die maximale Anzahl von VFs ist, die vom SR-IOV unterstützt werden)

Sie müssen die folgenden Schritte ausführen, um die Anzahl der VFs zu ändern:

  1. Beenden Sie die Ausführung von VNFs mit der gemeinsam genutzten SR-IOV-NIC.

  2. Deaktivieren Sie den SR-IOV-Netzwerkadapter, indem Sie die Anzahl der virtuellen Funktoren (VFs) auf 0 setzen.

  3. Ändern Sie die erforderliche Anzahl von VF (in diesem Beispiel verwenden Sie sechs).

    Hinweis:

    Wenn die folgende Fehlermeldung angezeigt wird, setzen Sie den Wert zunächst wie in Schritt 2 beschrieben auf Null, bevor Sie Schritt 3 ausführen

  4. Überprüfen Sie Ihre Konfiguration mit dem folgenden Befehl:

Übernehmen Sie vor dem Neustart von vMX die Datei vmx.conf für die SR-IOV-Verwendung.

Aktualisieren der Parameter der VMX-Konfigurationsdatei (vmx.conf)

Die Parameter, die für die Konfiguration von vMX erforderlich sind, sind in der Startkonfigurationsdatei definiert. Die Konfigurationsdatei liegt im YAML-Format vor. Die Standarddatei ist config/vmx.conf. Sie können Ihre Konfigurationsdatei für verschiedene Instanzen unter einem anderen Namen speichern.

Um Schnittstellen für SR-IOV-Gerätetypen zu konfigurieren, müssen Sie die Schnittstelle, die Netzwerkkarte und die MAC-Adresse angeben. Tabelle 1 enthält die Details der Konfigurationsparameter, die zum Ändern der Datei vmx.conf verwendet werden.

Tabelle 1: Parameter der VMX-Konfigurationsdatei

Komponenten

VM-Parameter

Beschreibung

vPFE

device-type

Wird für alle Schnittstellen verwendet, die das SR-IOV verwenden, oder wird verwendet sriov mixed , um das Mischen von SR-IOV- und nicht-SR-IOV-basierten Schnittstellen zu ermöglichen.

use_native_drivers

Legen Sie diese Einstellung fest true , um die Verwendung des Intel ixgbe-Treibers des Hosts zuzulassen (der heruntergeladen und in den obigen Schritten ausgeführt wurde).

Schnittstellen

type

Wenn type auf sriovfestgelegt ist, muss port-speed-mbps und nic festgelegt werden.

port-speed-mbps

Stellen Sie es auf 10000 10GE NIC ein.

nic

Der Kernelname für die zu verwendende Schnittstelle.

virtual-function

Wird für die erste vMX-Instanz mit dieser Netzwerkkarte auf 0 festgelegt. Stellen Sie sicher, dass Sie für den 2. vMX mit dieser gemeinsam genutzten Netzwerkkarte (usw.) eingestellt 1 sind.

mac-address

Stellen Sie sicher, dass jede VF-Instanz, die die gemeinsam genutzte Netzwerkkarte verwendet, eine eindeutige oder andere MAC-Adresse verwendet.

Eine Beispieldatei vmx.conf:

Starten Sie vmx-install

Erforderliche Änderungen für die Verwendung des Intel ixgbe-Treibers

Wenn Sie versuchen, eine vorhandene Bereitstellung vom modifizierten IXGBE-Treiber in den unveränderten IXGBE-Treiber zu verschieben, wechseln Sie in der Junos CLI in den Bearbeitungsmodus und verwenden Sie den folgenden Befehl, wenn Sie "native" Treiber verwenden.

Weitere Informationen finden Sie unter Geänderter und unmodifizierter IXGBE-Treiber.