AUF DIESER SEITE
Vorgehensweise zur Identifizierung von PCI-Adressen und Kernel-Namen für die Netzwerkkarte
Laden Sie die neueste Treibersoftware von Intel herunter und installieren Sie sie.
Vorbereiten der Netzwerkkarte für die Verwendung von SR-IOV im Systemmodus
Aktualisieren der Parameter der VMX-Konfigurationsdatei (vmx.conf)
Erforderliche Änderungen für die Verwendung des Intel ixgbe-Treibers
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
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:
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:
# echo num_of_vf > /sys/class/net/interface-name/device/sriov_numvfs
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.
As sudo user:
root@ubuntu2:~# echo 4 | sudo tee -a /sys/class/net/ens8f1/device/sriov_numvfs
As root user
root@ubuntu2:~# echo 4 > /sys/class/net/ens8f1/device/sriov_numvfs
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
Weitere Informationen zu hugepages finden Sie unter Vorbereiten des Ubuntu-Hosts für die Installation von vMX.
Bearbeiten Sie die Datei "/etc/default/grub":
lab@ubuntu2:~$ cat /etc/default/grub | grep -i cmd
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"
GRUB_CMDLINE_LINUX="isolcpus=34-41,48-55 default_hugepagesz=1G
hugepagesz=1G hugepages=120 ixgbe.max_vfs=8"
Aktualisieren Sie nach der Bearbeitung Folgendes:
sudo update-grub
Schreiben Sie einen neuen Bootloader, um die Änderungen beim nächsten Neustart aktiv zu machen.
sudo grub-install /dev/sda
Starten Sie den Host neu, um die Einstellungen zu aktivieren.
sudo reboot
Ü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
lab@ubuntu2:~$ lspci | grep 85
85:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01) 85:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01) 85:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:10.1 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:10.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:10.3 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:10.4 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:10.5 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:10.6 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:10.7 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:11.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:11.1 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:11.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:11.3 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:11.4 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:11.5 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:11.6 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 85:11.7 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
Die /sys/class/net/ens8f1/device/sriov_numvfs
enthält auch den gewünschten Wert von sriov_numvfs.
lab@ubuntu2:~$ cat /sys/class/net/ens8f1/device/sriov_numvfs
8
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:
Beenden Sie die Ausführung von VNFs mit der gemeinsam genutzten SR-IOV-NIC.
Deaktivieren Sie den SR-IOV-Netzwerkadapter, indem Sie die Anzahl der virtuellen Funktoren (VFs) auf 0 setzen.
As root:
root@ubuntu2:~# echo 0 > /sys/class/net/ens8f1/device/sriov_numvfs
As sudo:
lab@ubuntu2:~$ echo 0 | sudo tee -a /sys/class/net/ens8f1/device/sriov_numvfs
Ändern Sie die erforderliche Anzahl von VF (in diesem Beispiel verwenden Sie sechs).
root@ubuntu2:~# echo 6 > /sys/class/net/ens8f1/device/sriov_numvfs
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
root@ubuntu2:~# echo 6 > /sys/class/net/ens8f1/device/sriov_numvfs bash: echo: write error: Device or resource busy
Überprüfen Sie Ihre Konfiguration mit dem folgenden Befehl:
root@ubuntu2:~# cat /sys/class/net/ens8f1/device/sriov_numvfs
Ü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.
Komponenten |
VM-Parameter |
Beschreibung |
---|---|---|
vPFE |
|
Wird für alle Schnittstellen verwendet, die das SR-IOV verwenden, oder wird verwendet |
|
Legen Sie diese Einstellung fest |
|
Schnittstellen |
|
Wenn type auf |
|
Stellen Sie es auf |
|
|
Der Kernelname für die zu verwendende Schnittstelle. |
|
|
Wird für die erste vMX-Instanz mit dieser Netzwerkkarte auf |
|
|
Stellen Sie sicher, dass jede VF-Instanz, die die gemeinsam genutzte Netzwerkkarte verwendet, eine eindeutige oder andere MAC-Adresse verwendet. |
Eine Beispieldatei vmx.conf:
lab@ubuntu2:~/vmx/config$ cat vmx.conf.sriov
############################################################## # # vmx.conf # Config file for vmx on the hypervisor. # Uses YAML syntax. # Leave a space after ":" to specify the parameter value. # ############################################################## --- #Configuration on the host side - management interface, VM images etc. HOST: identifier : vmx1 # Maximum 6 characters host-management-interface : ens4f0 routing-engine-image : "/home/lab/vmx/images/junos-vmx-x86-64-18.1R3-S2.5.qcow2" routing-engine-hdd : "/home/lab/vmx/images/vmxhdd.img" forwarding-engine-image : "/home/lab/vmx/images/vFPC-20181023.img" --- #External bridge configuration BRIDGES: - type : external name : br-ext # Max 10 characters --- #vRE VM parameters CONTROL_PLANE: vcpus : 1 memory-mb : 1024 console_port: 8601 interfaces : - type : static ipaddr : 10.102.144.94 macaddr : "0A:00:DD:C0:DE:0E" --- #vPFE VM parameters FORWARDING_PLANE: memory-mb : 8192 vcpus : 4 console_port: 8602 device-type : mixed <<<< sriov or mixed use_native_drivers : true <<<< use drivers as provided by the host interfaces : - type : static ipaddr : 10.102.144.98 macaddr : "0A:00:DD:C0:DE:10" --- #Interfaces JUNOS_DEVICES: - interface : ge-0/0/0 type : virtio <<< required mac-address : "02:06:0A:0E:FF:F0" description : "ge-0/0/0 interface" - interface : ge-0/0/1 type : sriov <<< required mtu : 9192 <<< required port-speed-mbps : 10000 <<< required nic : ens8f1 <<< required virtual-function : 0 <<< use consecutive / unique numbers for each vMX instance mac-address : "02:06:0A:0E:FF:F1" <<< make sure that each vNF is using a DIFFERENT MAC-address description : "ge-0/0/1 interface"
Starten Sie vmx-install
lab@ubuntu2:~/vmx$ sudo ./vmx.sh --install --cfg ./config/vmx.conf.sriov
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.
user@host# set interfaces vlan-offload
Weitere Informationen finden Sie unter Geänderter und unmodifizierter IXGBE-Treiber.