Acabo de encontrar muchas formas diferentes de hacer redes KVM. Pero estoy atascado sobre cuál es la forma correcta de hacerlo. Descubrí que openstack usa macvtap para hacer redes de neutrones. Y se ve bien.
Pero, ¿cuál es la diferencia y por qué usar en cada sentido?
Camino 1 [¿ANTIGUO? TUN / TAP]
http://www.shakthimaan.com/installs/debian-tun-tap-setup.html
/--------\ /----\ /----\ /----\ /--------\
|Internet|---|eth0|---|br0 |---|tap0|---|Guest NIC
\--------/ \----/ \----/ \----/ \--------/
En desuso, ¿verdad?
Camino 2 [Bridge + Vnet] <- Eso es lo que hace virt-manager
http://www.linux-kvm.com/content/using-bridged-networking-virt-manager
Básicamente, crea una interfaz de puente con su interfaz física dentro y
auto br0
#iface br0 inet dhcp
iface br0 inet static
address 172.16.0.100
network 172.16.0.0
netmask 255.255.0.0
broadcast 172.16.255.255
gateway 172.16.0.1
bridge_ports eth2
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Y cuando inicia una máquina virtual desde virt-manager, se crea una interfaz vnet y se agrega al puente. Al menos hasta donde yo sepa. No se necesita una interfaz tun / tap.
Funcionó bastante bien durante mucho tiempo, pero ahora con picardía he encontrado problemas.
https://bugs.launchpad.net/ubuntu/+source/core-network/+bug/1255516
¿Por qué puede agregar una nueva interfaz vnet al puente sin la interfaz TAP?
Camino 3 [MACVTAP]
El último es la interfaz macvtap.
http://virt.kernelnewbies.org/MacVTap
Copia la interfaz del software TUN / TAP pero lo hace de una mejor manera. No sé de qué manera, pero parece ser mejor.
¿Cuál es la ventaja de macvtap sobre la segunda forma?
¿Que es mejor?
¿Alguna ayuda en esto?
fuente
Yo diría que depende de tu caso de uso.
Agrega / elimina automatizado de hosts virtuales?
Prueba macvtap. También debe ser más efectivo que macvlan (que es más o menos como agregar otro MAC a un dispositivo físico, la información que llega allí es manejada por la pila de red) o un puente adicional, ya que macvtap omite la pila de red de alguna manera y exporta un dispositivo de caracteres de tap directamente. Pero no me claves en eso. Además de que ambos (macvlan / macvtap) comparten los mismos modos disponibles (VEPA / horquilla, puente, privado), la horquilla solo funciona si su interruptor admite el modo de relé reflectante. (Se debe permitir que los paquetes que lleguen al conmutador físico en el puerto x salgan del conmutador nuevamente en el mismo puerto x).
Debido a que eth0 (o el que use) se pone en modo promiscuo cuando se usa un puente, se dice que los modos macvXXX tienen mayores rendimientos.
Los modos también definen la 'cantidad' de aislamiento (¿pueden los vhosts ver el tráfico de los demás? ¿Qué tal el hv?). Cómo funciona esto bajo el capó aún no lo sé.
los veth (pares virtuales de ethernet) son algo similares para el aislamiento, usted define dos interfaces virtuales, una se conecta a un puente y la otra a su VM. Allí el aislamiento se realiza poniendo la interfaz vm en su propio espacio de nombres para que los dispositivos estén algo aislados. Todo el tráfico se junta en el puente, pero un vhost no puede ver las vNIC de otro.
En caso de que trabaje con un puente, tiene que hacer una configuración adicional, y cuando el puente está caído, también lo están todas sus conexiones. Al volver a activar el puente, es posible que deba volver a conectar todas las interfaces virtuales al puente (o simplemente reiniciar el hv completo ...).
En pocas palabras: si no cambia su topología con frecuencia, simplemente realice un puente ya que encontrará la mayor cantidad de información en línea, lo cual es mejor que leer el código del kernel. Diablos, incluso el paquete iproute2-doc en sí mismo carece de la mayor parte de la información que iproute2 realmente tiene, incluso cuando ejecuta versiones de última generación. Intente averiguar sobre
man ip-tcp_metrics
las páginas de manual disponibles o ip-crefs.ps ...fuente
Estos métodos están haciendo cosas fundamentalmente diferentes. Para comprender por qué, debe comprender el modelo de redes en capas. Para nuestros propósitos aquí, las capas 1, 2 y 3 son importantes:
MACVLAN / MACVTAP
MACVLAN crea una capa virtual 2 o dispositivo de capa de enlace, con su propia dirección MAC, que comparte la capa 1 o capa física con un dispositivo existente. El caso más obviamente comprensible es cuando tiene un dispositivo Ethernet conectado a una red y crea un dispositivo MACVLAN basado en ese dispositivo Ethernet; ahora tiene dos "dispositivos" Ethernet con diferentes direcciones MAC pero que transmiten sus tramas en el mismo cable. Hablaré sobre MACVTAP un poco más abajo.
Las interfaces MACVLAN pueden interactuar de varias maneras diferentes con la interfaz Ethernet existente, en particular cuando aparece una trama en una de las interfaces que se dirige a la otra:
Tenga en cuenta que las interfaces MACVLAN tienen una restricción importante: no son capaces de abordar el aprendizaje. Por lo tanto, no puede conectar una interfaz MACVLAN a un segundo dispositivo físico y esperar poder alcanzar ese segundo dispositivo físico sobre el primero. Esto funciona con la interfaz Ethernet original pero no con una interfaz MACVLAN conectada a ella.
TUN / TAP
Una interfaz TAP también es un nuevo dispositivo virtual de capa 2 pero sin capa 1 adjunta. En cambio, un programa puede obtener un descriptor de archivo que representa la capa física. Luego puede escribir datos de trama Ethernet sin procesar en ese descriptor de archivo y el núcleo lo tratará como cualquier otro paquete Ethernet que reciba en una interfaz física real.
Lo importante de las interfaces TAP es que la capa física está en modo de usuario; cualquier bit de software con los permisos apropiados puede generar tramas Ethernet de la forma que desee y meterlas en algo que el núcleo trata de la misma manera que una interfaz física real. Esto los hace muy útiles para cosas como VPN y túneles; puede escribir cualquier tipo de software de tunelización que desee en el espacio del usuario y no es necesario entrometerse en el espacio del kernel para obtener los marcos en la pila de red, simplemente cree un dispositivo TAP y escriba los marcos en su descriptor de archivo.
Los dispositivos TUN son como los dispositivos TAP, excepto que operan en la capa 3 en lugar de la capa 2 y el software de modo de usuario tiene que escribir paquetes IP sin procesar en el descriptor de archivo en lugar de tramas Ethernet sin procesar.
Volviendo a los dispositivos MACVTAP , estos son una especie de confusión entre las interfaces MACVLAN y TAP. Al igual que las interfaces TAP, un programa en modo de usuario puede obtener un descriptor de archivo y escribir tramas Ethernet sin procesar en él. Al igual que una interfaz MACVLAN, esas tramas se envían a través de la capa física de un dispositivo Ethernet real. Esto le permite adaptar fácilmente el software que está escrito para usar dispositivos TAP para usar un dispositivo MACVLAN.
Red virtual
Esto es conceptualmente similar a las redes TUN / TAP, pero tiene un plano de control más desarrollado (por lo que el software en modo de usuario que lo utiliza puede configurar la interfaz de manera más flexible) y un plano de datos más optimizado (para que pueda mover datos a través del dispositivo de red virtual más eficientemente).
Todos estos hacen cosas similares pero tienen capacidades ligeramente diferentes. Todos ellos se pueden usar para conectar una VM a una red Ethernet:
fuente