ADC
Merci pour vos commentaires

Ce article a été traduit automatiquement. (Clause de non responsabilité)

Configurer une instance NetScaler VPX sur KVM pour utiliser les interfaces hôtes basées sur OVS DPDK

Vous pouvez configurer une instance NetScaler VPX exécutée sur KVM (Fedora et RHOS) pour utiliser Open vSwitch (OVS) avec le kit de développement Data Plane (DPDK) afin d’améliorer les performances du réseau. Ce document explique comment configurer l’instance NetScaler VPX pour qu’elle fonctionne sur les vhost-user ports exposés par OVS-DPDK sur l’hôte KVM.

OVS est un commutateur virtuel multicouche sous licence Apache 2.0 open source. DPDK est un ensemble de bibliothèques et de pilotes permettant un traitement rapide des paquets.

Les versions suivantes de Fedora, RHOS, OVS et DPDK sont qualifiées pour configurer une instance NetScaler VPX :

Fedora RHOS
Fedora 25 ENCORE 7,4
OS 2.7.0 VERSION 2.6.1
DPDK 16.11.12 DPDK 16.11.12

Composants requis

Avant d’installer DPDK, assurez-vous que l’hôte dispose de pages gigantesques de 1 Go.

Pour plus d’informations, consultez cette documentation relative à la configuration système requise pour DPDK. Voici un résumé des étapes requises pour configurer une instance NetScaler VPX sur KVM afin d’utiliser des interfaces hôtes basées sur OVS DPDK :

  • Installez DPDK.
  • Créez et installez OVS.
  • Créez un pont OVS.
  • Attachez une interface physique au pont OVS.
  • Connectez des vhost-user ports au chemin de données OVS.
  • Provisionnez un KVM-VPX avec des vhost-user ports OVS-DPDK.

Installer DPDK

Pour installer DPDK, suivez les instructions données dans ce document Open vSwitch with DPDK .

Construire et installer OVS

Téléchargez OVS depuis la page de téléchargementd’OVS. Ensuite, créez et installez OVS à l’aide d’un chemin de données DPDK. Suivez les instructions fournies dans le document Installer Open vSwitch .

Pour plus d’informations, consultez DPDK Getting Started Guide for Linux.

Créer un pont OVS

Selon vos besoins, tapez la commande Fedora ou RHOS pour créer un pont OVS :

Commande Fedora :

> $OVS_DIR/utilities/ovs-vsctl add-br ovs-br0 -- set bridge ovs-br0 datapath_type=netdev

Commande RHOS :

ovs-vsctl add-br ovs-br0 -- set bridge ovs-br0 datapath_type=netdev

Raccorder l’interface physique au pont OVS

Liez les ports à DPDK, puis connectez-les au pont OVS en saisissant les commandes Fedora ou RHOS suivantes :

Commande Fedora :

> $OVS_DIR/utilities/ovs-vsctl add-port ovs-br0 dpdk0 -- set Interface dpdk0 type=dpdk options:dpdk-devargs=0000:03:00.0 > $OVS_DIR/utilities/ovs-vsctl add-port ovs-br0 dpdk1 -- set Interface dpdk1 type=dpdk options:dpdk-devargs=0000:03:00.1

Commande RHOS :

ovs-vsctl add-port ovs-br0 dpdk0 -- set Interface dpdk0 type=dpdk options:dpdk-devargs=0000:03:00.0 ovs-vsctl add-port ovs-br0 dpdk1 -- set Interface dpdk1 type=dpdk options:dpdk-devargs=0000:03:00.1

Le dpdk-devargs indiqué dans les options spécifie le BDF PCI de la carte réseau physique respective.

Connectez des vhost-user ports au chemin de données OVS

Tapez les commandes Fedora ou RHOS suivantes pour attacher des vhost-user ports au chemin de données OVS :

Commande Fedora :

> $OVS_DIR/utilities/ovs-vsctl add-port ovs-br0 vhost-user1 -- set Interface vhost-user1 type=dpdkvhostuser -- set Interface vhost-user1 mtu_request=9000 > $OVS_DIR/utilities/ovs-vsctl add-port ovs-br0 vhost-user2 -- set Interface vhost-user2 type=dpdkvhostuser -- set Interface vhost-user2 mtu_request=9000 chmod g+w /usr/local/var/run/openvswitch/vhost*

Commande RHOS :

ovs-vsctl add-port ovs-br0 vhost-user1 -- set Interface vhost-user1 type=dpdkvhostuser -- set Interface vhost-user1 mtu_request=9000 ovs-vsctl add-port ovs-br0 vhost-user2 -- set Interface vhost-user2 type=dpdkvhostuser -- set Interface vhost-user2 mtu_request=9000 chmod g+w /var/run/openvswitch/vhost*

Provisionner un KVM-VPX avec des vhost-user ports OVS-DPDK

Vous pouvez provisionner une instance VPX sur Fedora KVM avec des vhost-user ports OVS-DPDK uniquement à partir de l’interface de ligne de commande à l’aide des commandes QEMU suivantes : commande Fedora :

qemu-system-x86_64 -name KVM-VPX -cpu host -enable-kvm -m 4096M \ -object memory-backend-file,id=mem,size=4096M,mem-path=/dev/hugepages,share=on -numa node,memdev=mem \ -mem-prealloc -smp sockets=1,cores=2 -drive file=<absolute-path-to-disc-image-file>,if=none,id=drive-ide0-0-0,format=<disc-image-format> \ -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \ -netdev type=tap,id=hostnet0,script=no,downscript=no,vhost=on \ -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:3c:d1:ae,bus=pci.0,addr=0x3 \ -chardev socket,id=char0,path=</usr/local/var/run/openvswitch/vhost-user1> \ -netdev type=vhost-user,id=mynet1,chardev=char0,vhostforce -device virtio-net-pci,mac=00:00:00:00:00:01,netdev=mynet1,mrg_rxbuf=on \ -chardev socket,id=char1,path=</usr/local/var/run/openvswitch/vhost-user2> \ -netdev type=vhost-user,id=mynet2,chardev=char1,vhostforce -device virtio-net pci,mac=00:00:00:00:00:02,netdev=mynet2,mrg_rxbuf=on \ --nographic

Pour RHOS, utilisez l’exemple de fichier XML suivant pour provisionner l’instance NetScaler VPX, en utilisant. virsh

<domain type='kvm'> <name>dpdk-vpx1</name> <uuid>aedb844b-f6bc-48e6-a4c6-36577f2d68d6</uuid> <memory unit='KiB'>16777216</memory> <currentMemory unit='KiB'>16777216</currentMemory> <memoryBacking> <hugepages> <page size='1048576' unit='KiB'/> </hugepages> </memoryBacking> <vcpu placement='static'>6</vcpu> <cputune> <shares>4096</shares> <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset='2'/> <vcpupin vcpu='2' cpuset='4'/> <vcpupin vcpu='3' cpuset='6'/> <emulatorpin cpuset='0,2,4,6'/> </cputune> <numatune> <memory mode='strict' nodeset='0'/> </numatune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> </features> <cpu mode='custom' match='minimum' check='full'> <model fallback='allow'>Haswell-noTSX</model> <vendor>Intel</vendor> <topology sockets='1' cores='6' threads='1'/> <feature policy='require' name='ss'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <domain type='kvm'> <name>dpdk-vpx1</name> <uuid>aedb844b-f6bc-48e6-a4c6-36577f2d68d6</uuid> <memory unit='KiB'>16777216</memory> <currentMemory unit='KiB'>16777216</currentMemory> <memoryBacking> <hugepages> <page size='1048576' unit='KiB'/> </hugepages> </memoryBacking> <vcpu placement='static'>6</vcpu> <cputune> <shares>4096</shares> <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset='2'/> <vcpupin vcpu='2' cpuset='4'/> <vcpupin vcpu='3' cpuset='6'/> <emulatorpin cpuset='0,2,4,6'/> </cputune> <numatune> <memory mode='strict' nodeset='0'/> </numatune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> </features> <cpu mode='custom' match='minimum' check='full'> <model fallback='allow'>Haswell-noTSX</model> <vendor>Intel</vendor> <topology sockets='1' cores='6' threads='1'/> <feature policy='require' name='ss'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='xsaveopt'/> <feature policy='require' name='pdpe1gb'/> <numa> <cell id='0' cpus='0-5' memory='16777216' unit='KiB' memAccess='shared'/> </numa> </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/home/NSVPX-KVM-12.0-52.18_nc.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='usb' index='0' model='piix3-uhci'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='pci' index='0' model='pci-root'/> <interface type='direct'> <mac address='52:54:00:bb:ac:05'/> <source dev='enp129s0f0' mode='bridge'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='vhostuser'> <mac address='52:54:00:55:55:56'/> <source type='unix' path='/var/run/openvswitch/vhost-user1' mode='client'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </interface> <interface type='vhostuser'> <mac address='52:54:00:2a:32:64'/> <source type='unix' path='/var/run/openvswitch/vhost-user2' mode='client'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </interface> <interface type='vhostuser'> <mac address='52:54:00:2a:32:74'/> <source type='unix' path='/var/run/openvswitch/vhost-user3' mode='client'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </interface> <interface type='vhostuser'> <mac address='52:54:00:2a:32:84'/> <source type='unix' path='/var/run/openvswitch/vhost-user4' mode='client'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'> <listen type='address'/> </graphics> <video> <model type='cirrus' vram='16384' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </memballoon> </devices> </domain

Points à noter

Dans le fichier XML, la hugepage taille doit être de 1 Go, comme indiqué dans le fichier exemple.

<memoryBacking> <hugepages> <page size='1048576' unit='KiB'/> </hugepages>

En outre, dans le fichier exemple, vhost-user1 est le port vhost utilisateur lié à ovs-br0.

<interface type='vhostuser'> <mac address='52:54:00:55:55:56'/> <source type='unix' path='/var/run/openvswitch/vhost-user1' mode='client'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </interface>

Pour faire apparaître l’instance NetScaler VPX, commencez à utiliser la commande. virsh

La version officielle de ce document est en anglais. Certains contenus de la documentation Cloud Software Group ont été traduits de façon automatique à des fins pratiques uniquement. Cloud Software Group n'exerce aucun contrôle sur le contenu traduit de façon automatique, qui peut contenir des erreurs, des imprécisions ou un langage inapproprié. Aucune garantie, explicite ou implicite, n'est fournie quant à l'exactitude, la fiabilité, la pertinence ou la justesse de toute traduction effectuée depuis l'anglais d'origine vers une autre langue, ou quant à la conformité de votre produit ou service Cloud Software Group à tout contenu traduit de façon automatique, et toute garantie fournie en vertu du contrat de licence de l'utilisateur final ou des conditions d'utilisation des services applicables, ou de tout autre accord avec Cloud Software Group, quant à la conformité du produit ou service à toute documentation ne s'applique pas dans la mesure où cette documentation a été traduite de façon automatique. Cloud Software Group ne pourra être tenu responsable de tout dommage ou problème dû à l'utilisation de contenu traduit de façon automatique.
Configurer une instance NetScaler VPX sur KVM pour utiliser les interfaces hôtes basées sur OVS DPDK