
Estamos ejecutando varias máquinas virtuales Debian Wheezy sobre servidores Ubuntu 12.04.4/Libvirt 0.9.8-2ubuntu17.17.
El host está conectado a la red a través de un troncal. Luego divide las VLAN y crea un puente para cada una de ellas con la siguiente configuración:
auto eth4.2 kvmbrtrunk.2
iface eth4.2 inet manual
up ifconfig eth4.2 up
down ifconfig eth4.2 down
iface kvmbrtrunk.2 inet manual
bridge-ports eth4.2
bridge-stp no
bridge-fd 0
bridge-maxwait 0
Las máquinas virtuales están configuradas de la siguiente manera:
<interface type='bridge'>
<mac address='54:52:00:02:10:70'/>
<source bridge='kvmbrtrunk.2'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</interface>
Y usan VirtIO
00:09.0 Ethernet controller: Red Hat, Inc Virtio network device
Protagonistas (todos en la misma VLAN):
A: 1st Ubuntu 12.04 desktop
B: 2nd Ubuntu 12.04 desktop
C: 1st VM, 1st host
D: 2nd VM, 1st host
E: 3rd VM, 2nd host
Cuando hacemos una serie de 60 pings "rtt min/avg/max/mdev":
A -> B = 0.093/0.132/0.158/0.015 ms
A -> C = 0.272/0.434/1.074/0.113 ms
A -> D = 0.294/0.460/0.832/0.091 ms
A -> E = 0.324/0.505/0.831/0.069 ms
C -> D = 0.348/0.607/0.863/0.124 ms
C -> E = 0.541/0.792/0.972/0.101 ms
Entonces esos resultados parecen indicar que el libvirtconmutador/filtrado virtualno sólo añade algo de latencia, como era de esperar, sino que la triplica (0,132 frente a 0,460)
Pregunta
Is there anything that can be done to attenuate this extra latency?
Gracias de antemano por cualquier consejo.
Respuesta1
¿Qué tipo de funciones estás dispuesto a sacrificar por esta reducción de la latencia?
Para empezar, intente deshabilitar iptables/ebtables en las interfaces del puente. Puede cambiar /proc/sys/net/bridge/bridge-nf-call-iptables
a 0 para lograr esto. La desventaja aquí es que ya no se puede realizar ningún tipo de filtrado en el tráfico de invitados.
La "mejor" opción aquí es cambiar a tarjetas de red virtualizadas, usando SR-IOV. Esto requiere que su placa base y su controlador de red lo admitan. También está limitado a 7 invitados por tarjeta de red (para gigabit ethernet, creo que 10 gigas es más alto). Esto funciona brindando a cada invitado acceso directo al hardware de red. El sistema operativo del host no participa en el flujo de paquetes, la VM simplemente habla directamente con la NIC.
SR-IOV le brindará el mejor rendimiento (el uso de la CPU fue aproximadamente un 10 % menor en nuestras pruebas, para altos niveles de tráfico de red) y la latencia más baja (ya que hay muchas menos capas de software que interactúan con los paquetes). Creo que puedes configurar el etiquetado VLAN con esto, pero la configuración probablemente sería un poco difícil (SR-IOV es básicamente magia no documentada, y tendrás que jugar mucho con la configuración).