Quiero saber si hay alguna otra forma además de usar puentes de Linux para interconectar interfaces de dos máquinas virtuales.
Dado que estoy intentando ejecutar una implementación de árbol de expansión privada en máquinas virtuales... el puente de Linux subyacente que conecta ambas máquinas virtuales está eliminando las BPDU.
VirtualBox resuelve el problema proporcionando una opción de red interna.
¿Existe alguna opción similar si uso KVM?
Actualización-01:Habilitar STP terminaría creando una topología que contiene 3 puentes (2 VM y 1 puente Linux que conecta ambas VM) en lugar de 2 puentes (2 VM).
Respuesta1
Parece que podrías usar -netdev socket
la opción de QEMU aquí, probablemente la versión UDP se ajuste mejor.
También -netdev vde
puede funcionar, aunque es más complicado y requiere configurar el demonio de conmutación VDE.
Pero intentaría solucionar el problema con el puente de Linux de todos modos, con la opción STP habilitada, como sugirió @Martin. Esta es una configuración simple y muy común.
Respuesta2
Puede intentar utilizar el controlador macvtap. Tenga en cuenta que esto tiene algunas limitaciones; asegúrese de leer la documentación de libvirt al respecto.
Respuesta3
QEmu/KVM proporciona las opciones para utilizar unGRIFOinterfaz en su host:
cuando su anfitrión envía una trama Ethernet a esta interfaz, se envía a la interfaz de su invitado;
cuando su invitado envía una trama Ethernet a su interfaz, se envía a la interfaz TAP de su host.
Puede crear ambos VMS con interfaces TAP. Ahora necesita intercambiar las tramas entre las dos interfaces TAP: es posible que pueda hacerlo escribiendo un programa que reenvíe tramas Ethernet entre las interfaces (usando AF_PACKET
, SOCK_RAW
sockets) medianterecibir marcosdesde una interfaz yenviandoellos al otro.
Respuesta4
Las personas que sugirieron un dispositivo TAP estaban en el camino correcto, pero también necesitas algo más:
Primero, crea unquinto par. Se trata de un par de interfaces virtuales, cada una de las cuales simplemente pasa el tráfico que recibe a la otra.
A continuación, conecte una de sus dos máquinas virtuales a través de macvtap a una de las interfaces veth del par y conecte la otra VM a la otra interfaz veth.
Finalmente, envíe algo de tráfico.