Abilitazione di SR-IOV in KVM

Nel documento Guida del partner di VMware SD-WAN VMware SD-WAN 4.0 (pagine 98-111)

Per abilitare la modalità SR-IOV in KVM, eseguire i passaggi seguenti.

Prerequisiti

Questa operazione richiede una scheda NIC specifica. I seguenti chipset sono certificati da VMware per l'utilizzo con SD-WAN Gateway e SD-WAN Edge.

n Intel 82599/82599ES

Guida del partner di VMware SD-WAN

n Intel X710/XL710

Nota Prima di utilizzare le schede Intel X710/XL710 in modalità SR-IOV in KVM, verificare che le versioni supportate di firmware e driver specificate nella sezione Prerequisiti di distribuzione siano installate correttamente.

Per abilitare SR-IOV in KVM:

1 Abilitare SR-IOV nel BIOS. Questa operazione dipende dal BIOS. Accedere alla console del BIOS e cercare SR-IOV Support/DMA. È possibile verificare il supporto nel prompt

controllando che Intel abbia il flag di CPU corretto.

cat /proc/cpuinfo | grep vmx

2 Aggiungere le opzioni in Bboot (in /etc/default/grub).

GRUB_CMDLINE_LINUX="intel_iommu=on"

a Eseguire i seguenti comandi: update-grub e update-initramfs -u.

b Eseguire il riavvio

c Assicurarsi che IOMMU sia abilitato.

velocloud@KVMperf3:~$ dmesg | grep -i IOMMU

[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.13.0-107-generic root=/dev/mapper/qa--multiboot--002--vg-root ro intel_iommu=on splash quiet vt.handoff=7

[ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.13.0-107-generic root=/dev/mapper/qa--multiboot--002--vg-root ro intel_iommu=on splash quiet vt.handoff=7

[ 0.000000] Intel-IOMMU: enabled ….

velocloud@KVMperf3:~$

3 In base al chipset NIC utilizzato, aggiungere un driver come indicato di seguito:

n Per le schede Intel 82599/82599ES in modalità SR-IOV:

1 Scaricare e installare il driver ixgbe dal sito Web Intel.

2 Configurare il file di configurazione di ixgbe (tar e sudo consentono di eseguire l'installazione).

velocloud@KVMperf1:~$ cat /etc/modprobe.d/ixgbe.conf

3 Se il file di configurazione di ixgbe non esiste, è necessario creare il file come indicato di seguito.

options ixgbe max_vfs=32,32

options ixgbe allow_unsupported_sfp=1 options ixgbe MDD=0,0

blacklist ixgbevf Guida del partner di VMware SD-WAN

5 Utilizzare il comando modinfo per verificare se l'installazione è stata eseguita correttamente.

velocloud@KVMperf1:~$ modinfo ixgbe and ip link

filename: /lib/modules/4.4.0-62-generic/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko version: 5.0.4

license: GPL

description: Intel(R) 10GbE PCI Express Linux Network Driver author: Intel Corporation, <linux.nics@intel.com>

srcversion: BA7E024DFE57A92C4F1DC93

n Per le schede Intel X710/XL710 in modalità SR-IOV:

1 Scaricare e installare il driver i40e dal sito Web Intel.

2 Creare le funzioni virtuali.

echo 4 > /sys/class/net/device name/device/sriov_numvfs

3 Per rendere persistenti le funzioni virtuali dopo un riavvio, aggiungere il comando dal passaggio precedente al file "/etc/rc.d/rc.local".

4 Disabilitare il driver VF.

echo “blacklist i40evf” >> /etc/modprobe.d/blacklist.conf

5 Eseguire il comando update-initramfs -u e riavviare il server.

Convalida di SR-IOV (facoltativa)

È possibile verificare rapidamente se nella macchina host è abilitato SR-IOV utilizzando il comando seguente:

lspci | grep -i Ethernet

Verificare di disporre delle funzioni virtuali:

01:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function(rev 01)

Installazione di SD-WAN Gateway in KVM

In questa sezione viene descritto come installare il file qcow di SD-WAN Gateway in KVM.

Considerazioni preliminari all'installazione

KVM offre diversi modi per fornire la rete alle macchine virtuali. La rete in libvirt deve essere sottoposta a provisioning prima della configurazione della macchina virtuale. Esistono diversi modi per configurare la rete in KVM. Informazioni complete sulle opzioni di configurazione delle reti in libvirt sono disponibili al seguente link:

https://libvirt.org/formatnetwork.html

Guida del partner di VMware SD-WAN

Dall'elenco completo delle opzioni, VMware consiglia le seguenti modalità:

n SR-IOV (questa modalità è necessaria affinché SD-WAN Gateway fornisca la velocità effettiva massima specificata da VMware)

n Bridge OpenVSwitch

Se si decide di utilizzare la modalità SR-IOV, abilitare SR-IOV in KVM. Per abilitare SR-IOV in KVM, vedere Abilitazione di SR-IOV in KVM.

Procedura di installazione di SD-WAN Gateway in KVM

1 Copiare i file qcow e cloud-init creati nella sezione Creazione di cloud-init in una nuova directory vuota.

2 Creare le interfacce di rete che si intende utilizzare per il dispositivo.

Utilizzo di SR-IOV (Using SR-IOV): di seguito è disponibile un modello di interfaccia di rete di esempio specifico per le schede NIC Intel X710/XL710 che utilizza SR-IOV.

<interface type='hostdev' managed='yes'>

<mac address='52:54:00:79:19:3d'/>

<driver name='vfio'/>

<source>

<address type='pci' domain='0x0000' bus='0x83' slot='0x0a' function='0x0'/>

</source>

<model type='virtio'/>

</interface>

Utilizzo di OpenVSwitch (Using OpenVSwitch): di seguito sono disponibili i modelli di esempio di un'interfaccia di rete che utilizzano OpenVSwitch.

git ./vcg/templates/KVM_NETWORKING_SAMPLES/template_outside_openvswitch.xml

<?xml version="1.0" encoding="UTF-8"?>

<network>

<name>public_interface</name>

<!--This is the network name-->

<model type="virtio" />

<forward mode="bridge" />

<bridge name="publicinterface" />

<virtualport type="openvswitch" />

<vlan trunk="yes">

<tag id="50" />

Guida del partner di VMware SD-WAN

Creare una rete per inside_interface:

git ./vcg/templates/KVM_NETWORKING_SAMPLES/template_inside_openvswitch.xml

<network>

<name>inside_interface</name> <!--This is the network name-->

<model type='virtio'/>

<forward mode="bridge"/>

<bridge name="insideinterface"/>

<virtualport type='openvswitch'></virtualport>

<vlan trunk='yes'></vlan>

<tag id='200'/> <!—Define all the VLANS for this Bridge -->

<tag id='201'/> <!—Define all the VLANS for this Bridge -->

<tag id='202'/> <!—Define all the VLANS for this Bridge -->

</network>

Se si utilizza la modalità OpenVSwitch, è necessario verificare che le reti di base siano create e attive prima di avviare la macchina virtuale.

Nota Questo passaggio di convalida non è applicabile per la modalità SR-IOV poiché non si crea alcuna rete prima che la macchina virtuale venga avviata.

3 Modificare il file XML della macchina virtuale. Esistono diversi modi per creare una macchina virtuale in KVM. È possibile definire la macchina virtuale in un file XML e crearla utilizzando libvirt, utilizzando il modello XML della macchina virtuale di esempio specifico per la modalità OpenVSwitch e la modalità SR-IOV.

vi my_vm.xml

Di seguito è riportato un modello di esempio di una macchina virtuale che utilizza le interfacce OpenVSwitch. Utilizzare questo modello effettuando, ove applicabile, le modifiche richieste.

<?xml version="1.0" encoding="UTF-8"?>

<domain type="kvm">

<name>#domain_name#</name>

<memory unit="KiB">8388608</memory>

<currentMemory unit="KiB">8388608</currentMemory>

<vcpu>8</vcpu>

<cputune>

<vcpupin vcpu="0" cpuset="0" />

<vcpupin vcpu="1" cpuset="1" />

<vcpupin vcpu="2" cpuset="2" />

<vcpupin vcpu="3" cpuset="3" />

<vcpupin vcpu="4" cpuset="4" />

Guida del partner di VMware SD-WAN

<vcpupin vcpu="5" cpuset="5" />

<vcpupin vcpu="6" cpuset="6" />

<vcpupin vcpu="7" cpuset="7" />

</cputune>

<resource>

<partition>/machine</partition>

</resource>

<cpu mode="host-passthrough" />

<clock offset="utc" />

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/bin/kvm-spice</emulator>

<disk type="file" device="disk">

<driver name="qemu" type="qcow2" />

<source file="#folder#/#qcow_root#" />

<target dev="hda" bus="ide" />

<alias name="ide0-0-0" />

<address type="drive" controller="0" bus="0" target="0" unit="0" />

</disk>

<disk type="file" device="cdrom">

<driver name="qemu" type="raw" />

<source file="#folder#/#Cloud_ INIT_ ISO#" />

<target dev="sdb" bus="sata" />

<readonly />

<alias name="sata1-0-0" />

<address type="drive" controller="1" bus="0" target="0" unit="0" />

</disk>

<controller type="usb" index="0">

<alias name="usb0" />

<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2" />

</controller>

<controller type="pci" index="0" model="pci-root">

<alias name="pci.0" />

</controller>

<controller type="ide" index="0">

<alias name="ide0" />

<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1" />

</controller>

<interface type="network">

<source network="public_interface" />

<vlan>

<tag id="#public_vlan#" />

</vlan>

<alias name="hostdev1" />

Guida del partner di VMware SD-WAN

</interface>

<interface type="network">

<source network="inside_interface" />

<alias name="hostdev2" />

<address type="pci" domain="0x0000" bus="0x00" slot="0x12" function="0x0" />

</interface>

<console type="pty" tty="/dev/pts/3">

<source path="/dev/pts/3" />

<target type="serial" port="0" />

<alias name="serial0" />

</console>

<memballoon model="none" />

</devices>

<seclabel type="none" />

</domain>

Di seguito è riportato un modello di esempio di una macchina virtuale che utilizza le interfacce SR-IOV. Utilizzare questo modello effettuando, ove applicabile, le modifiche richieste.

<?xml version="1.0" encoding="UTF-8"?>

<domain type="kvm">

<name>#domain_name#</name>

<memory unit="KiB">8388608</memory>

<currentMemory unit="KiB">8388608</currentMemory>

<vcpu>8</vcpu>

<cputune>

<vcpupin vcpu="0" cpuset="0" />

<vcpupin vcpu="1" cpuset="1" />

<vcpupin vcpu="2" cpuset="2" />

<vcpupin vcpu="3" cpuset="3" />

<vcpupin vcpu="4" cpuset="4" />

<vcpupin vcpu="5" cpuset="5" />

<vcpupin vcpu="6" cpuset="6" />

<vcpupin vcpu="7" cpuset="7" />

</cputune>

<resource>

<partition>/machine</partition>

</resource>

<cpu mode="host-passthrough" />

<clock offset="utc" />

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

Guida del partner di VMware SD-WAN

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/bin/kvm-spice</emulator>

<disk type="file" device="disk">

<driver name="qemu" type="qcow2" />

<source file="#folder#/#qcow_root#" />

<target dev="hda" bus="ide" />

<alias name="ide0-0-0" />

<address type="drive" controller="0" bus="0" target="0" unit="0" />

</disk>

<disk type="file" device="cdrom">

<driver name="qemu" type="raw" />

<source file="#folder#/#Cloud_ INIT_ ISO#" />

<target dev="sdb" bus="sata" />

<readonly />

<alias name="sata1-0-0" />

<address type="drive" controller="1" bus="0" target="0" unit="0" />

</disk>

<controller type="usb" index="0">

<alias name="usb0" />

<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2" />

</controller>

<controller type="pci" index="0" model="pci-root">

<alias name="pci.0" />

</controller>

<controller type="ide" index="0">

<alias name="ide0" />

<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1" />

</controller>

<interface type='hostdev' managed='yes'>

<mac address='52:54:00:79:19:3d'/>

<interface type='hostdev' managed='yes'>

<mac address='52:54:00:74:69:4d'/>

<console type="pty" tty="/dev/pts/3">

<source path="/dev/pts/3" />

<target type="serial" port="0" />

<alias name="serial0" />

Guida del partner di VMware SD-WAN

<memballoon model="none" />

</devices>

<seclabel type="none" />

</domain>

4 Avviare la macchina virtuale effettuando i seguenti passaggi:

a Assicurarsi di disporre dei seguenti tre file nella directory, come mostrato nella seguente schermata di esempio:

n qcow file - vcg-root

n cloud-init - vcg-test.iso

n File XML del dominio che definisce la macchina virtuale test_vcg.xml, dove test_vcg è il nome del dominio).

b Definire la macchina virtuale.

velocloud@KVMperf2:/tmp/VeloCloudGateway$ virsh define test_vcg.xml Domain test_vcg defined from test_vcg.xml

c Impostare l'avvio automatico della macchina virtuale.

velocloud@KVMperf2:/tmp/VeloCloudGateway$ virsh autostart test_vcg

d Avviare la macchina virtuale.

velocloud@KVMperf2:/tmp/VeloCloudGateway$ virsh start test_vcg

5 Se si utilizza la modalità SR-IOV, dopo aver avviato la macchina virtuale, impostare quanto segue sulle funzioni virtuali utilizzate:

a Impostare la verifica dello spoofing su off.

ip link set eth1 vf 0 spoofchk off

b Impostare la modalità attendibile su on.

ip link set dev eth1 vf 0 trust on Guida del partner di VMware SD-WAN

c Impostare la VLAN, se richiesto.

ip link set eth1 vf 0 vlan 3500

Nota Il passaggio di configurazione delle funzioni virtuali non è applicabile per la modalità OpenVSwitch (OVS).

6 Accedere alla macchina virtuale tramite la console.

virsh list

Considerazioni speciali per l'host KVM (Special Consideration for KVM Host)

n Disabilitare GRO (Generic Receive Offload) nelle interfacce fisiche (per evitare una nuova frammentazione non necessaria in SD-WAN Gateway).

ethtool –K <interface> gro off tx off

n Disabilitare gli stati C della CPU (gli stati di alimentazione influiscono sulle prestazioni in tempo reale). Questa operazione può in genere essere eseguita come parte delle opzioni di avvio del kernel aggiungendo processor.max_cstate=1 o semplicemente eseguendo la disabilitazione nel BIOS. Per ulteriori informazioni, vedere https://docs.fedoraproject.org/en-US/Fedora/13/

html/Virtualization_Guide/chap-Virtualization-KVM_guest_timing_management.html.

n Per la distribuzione di produzione, le vCPU devono essere aggiunte all'istanza. Non deve essere consentita alcuna oversubscription nei core. Per ulteriori informazioni, vedere https://

docs.fedoraproject.org/en-US/Fedora/13/html/Virtualization_Guide/ch25s06.html.

Attività successive all'installazione

Questa sezione illustra i passaggi di verifica dell'installazione e successivi all'installazione.

Se tutto funziona come previsto nell'installazione, è ora possibile accedere alla macchina virtuale.

1 Se tutto funziona come previsto, viene visualizzato il prompt di accesso nella console. Il nome del prompt dovrebbe essere quello specificato in cloud-init.

Guida del partner di VMware SD-WAN

2 È inoltre possibile fare riferimento a /run/cloud-init/result.json. Se viene visualizzato il messaggio seguente, è probabile che cloud-init venga eseguito correttamente.

3 Verificare che SD-WAN Gateway sia registrato con SD-WAN Orchestrator.

4 Verificare la connettività esterna.

5 Verificare che MGMT VRF risponda alle istanze di ARP.

Guida del partner di VMware SD-WAN

6 Facoltativo: disabilitare cloud-init in modo che non venga eseguito a ogni avvio.

touch /etc/cloud/cloud-init.disabled

7 Associare il nuovo pool di gateway (creato nella sezione intitolata "Creazione di un gateway e recupero della chiave di attivazione") al cliente.

8 Associare il gateway a un Edge.

9 Verificare che l'Edge sia in grado di stabilire un tunnel con il gateway sul lato Internet. Da VMware SD-WAN Orchestrator, passare a Monitora (Monitor) > Edge > Panoramica (Overview).

Guida del partner di VMware SD-WAN

Da VMware SD-WAN Orchestrator, passare a Test e risoluzione problemi (Test &

Troubleshoot) > Diagnostica remota (Remote Diagnostics) > [Edge] > Elenca percorsi (List Paths) e fare clic su Esegui (Run) per visualizzare l'elenco dei percorsi attivi.

10 Configurare l'interfaccia di handoff.

11 Verificare che la sessione BGP sia attiva.

12 Modificare la configurazione di rete.

I file di configurazione di rete si trovano in /etc/netplan.

Guida del partner di VMware SD-WAN

Configurazione di rete di esempio (lo spazio vuoto è importante) -

Importante: quando cloud-init è abilitato, la configurazione di rete viene rigenerata a ogni avvio.

Per apportare modifiche alla configurazione della posizione, disabilitare cloud-init oppure il componente della configurazione di rete cloud-init:

echo 'network: {config: disabled}' > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

Nel documento Guida del partner di VMware SD-WAN VMware SD-WAN 4.0 (pagine 98-111)

Documenti correlati