ADC
Gracias por los comentarios

Este artículo ha sido traducido automáticamente. (Aviso legal)

Configure una instancia de NetScaler VPX en KVM para utilizar interfaces de host basadas en DPDK de OVS

Puede configurar una instancia de NetScaler VPX que se ejecute en KVM (Fedora y RHOS) para utilizar Open vSwitch (OVS) con el Kit de desarrollo de planos de datos (DPDK) para un mejor rendimiento de la red. En este documento se describe cómo configurar la instancia NetScaler VPX para que funcione en los vhost-user puertos expuestos por OVS-DPDK en el host KVM.

OVS es un conmutador virtual multicapa licenciado bajo la licencia Apache 2.0 de código abierto. DPDK es un conjunto de bibliotecas y controladores para un procesamiento rápido de paquetes.

Las siguientes versiones de Fedora, RHOS, OVS y DPDK están calificadas para configurar una instancia de NetScaler VPX:

Fedora RHOS
Fedora 25 RHOS 7.4
FRENTE A 2.7.0 VERSIÓN 2.6.1
DPDK 16.11.12 DPDK 16.11.12

Requisitos previos

Antes de instalar DPDK, asegúrese de que el host tiene páginas enormes de 1 GB.

Para obtener más información, consulte esta documentación de requisitos del sistema de DPDK. A continuación se presenta un resumen de los pasos necesarios para configurar una instancia de NetScaler VPX en KVM para utilizar interfaces de host basadas en DPDK de OVS:

  • Instale DPDK.
  • Cree e instale OVS.
  • Cree un puente OVS.
  • Conecte una interfaz física al puente OVS.
  • Conecte vhost-user puertos a la ruta de datos OVS.
  • Aprovisione un KVM-VPX con vhost-user puertos basados en OVS-DPDK.

Instalar DPDK

Para instalar DPDK, siga las instrucciones que se dan en este documento Open vSwitch con DPDK .

Crear e instalar OVS

Descargue OVS desde la página de descargasde OVS. A continuación, cree e instale OVS mediante una ruta de datos DPDK. Siga las instrucciones que figuran en el documento Instalación de Open vSwitch .

Para obtener información más detallada, Guía de introducción de DPDK para Linux.

Creación de un puente OVS

Según sus necesidades, escriba el comando Fedora o RHOS para crear un puente OVS:

Comando de Fedora:

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

Comando RHOS:

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

Conecte la interfaz física al puente OVS

Enlace los puertos a DPDK y, a continuación, conéctelos al puente OVS escribiendo los siguientes comandos de Fedora o RHOS:

Comando de 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

Comando 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

El dpdk-devargs mostrado como parte de las opciones especifica el PCI BDF de la NIC física respectiva.

Adjuntar vhost-user puertos a la ruta de datos OVS

Escriba los siguientes comandos de Fedora o RHOS para conectar vhost-user puertos a la ruta de datos OVS:

Comando de 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*

Comando 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*

Aprovisionamiento de un KVM-VPX con vhost-user puertos basados en OVS-DPDK

Puede aprovisionar una instancia VPX en KVM de Fedora con vhost-user puertos basados en OVS-DPDK solo desde la CLI mediante los siguientes comandos QEMU: comando 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

Para RHOS, utilice el siguiente archivo XML de ejemplo para aprovisionar la instancia NetScaler VPX, mediante 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

Puntos que tener en cuenta

En el archivo XML, el hugepage tamaño debe ser de 1 GB, como se muestra en el archivo de ejemplo.

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

Además, en el archivo de ejemplo vhost-user1 está el puerto de vhost usuario vinculado a 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>

Para abrir la instancia NetScaler VPX, empiece a utilizar el comando virsh.

La versión oficial de este contenido está en inglés. Para mayor comodidad, parte del contenido de la documentación de Cloud Software Group solo tiene traducción automática. Cloud Software Group no puede controlar el contenido con traducción automática, que puede contener errores, imprecisiones o un lenguaje inadecuado. No se ofrece ninguna garantía, ni implícita ni explícita, en cuanto a la exactitud, la fiabilidad, la idoneidad o la precisión de las traducciones realizadas del original en inglés a cualquier otro idioma, o que su producto o servicio de Cloud Software Group se ajusten a cualquier contenido con traducción automática, y cualquier garantía provista bajo el contrato de licencia del usuario final o las condiciones de servicio, o cualquier otro contrato con Cloud Software Group, de que el producto o el servicio se ajusten a la documentación no se aplicará en cuanto dicha documentación se ha traducido automáticamente. Cloud Software Group no se hace responsable de los daños o los problemas que puedan surgir del uso del contenido traducido automáticamente.
Configure una instancia de NetScaler VPX en KVM para utilizar interfaces de host basadas en DPDK de OVS