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:
- La capa 1 es la capa física: esto especifica cosas como qué cables puede usar, qué patrones de voltaje / corriente representan 1s y 0s en ese cable, cómo los dispositivos en cada extremo de un cable negocian a qué velocidad de bits operan, etc.
- La capa 2 es la capa de enlace: esto especifica en qué idioma se comunican las cosas en cada extremo de un cable. Los dispositivos Ethernet en esta capa tienen elementos como marcos y direcciones MAC.
- La capa 3 es la capa de red: esto especifica cómo los dispositivos usan un enlace directo de la capa 2 a otro dispositivo para llegar a un tercer dispositivo que no pueden alcanzar directamente en la capa 2. Los dispositivos en esta capa tienen direcciones IP y tablas de enrutamiento.
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:
- En modo privado , el marco se tira; No es posible que las dos interfaces se comuniquen entre sí, solo con dispositivos externos.
- En modo vepa , el cuadro se envía a través de la capa física como cualquier otro cuadro. Si tiene el dispositivo conectado a un conmutador que es lo suficientemente inteligente como para detectar que la trama debe enviarse de vuelta al mismo puerto en el que llegó, entonces será recibida por la misma capa física que la envió y luego la capa 2 use el MAC para enviarlo a la interfaz de red deseada.
- En modo puente , cuando aparece un marco en un dispositivo, se verifica para ver si está destinado al otro y, de ser así, se envía allí sin pasar por la capa 1.
- También hay un par de modos más oscuros.
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:
- Un producto de virtualización puede tomar tramas Ethernet del huésped y escribirlas en el descriptor de archivo para un dispositivo TAP. El host puede asignar a su dispositivo TAP su propia dirección IP, o puede ser esclavo de un puente junto con una interfaz Ethernet para compartir la dirección IP del host, o iptables puede configurarse para reenviar el tráfico en él utilizando NAT.
- Un producto de virtualización puede que tramas Ethernet del invitado y escribirlas en el descriptor de archivo para un dispositivo MACVTAP; estos se transmiten directamente en la capa física de un dispositivo Ethernet, lo que le da a la VM un dispositivo Ethernet "real" (aunque tenga en cuenta que es posible crear dispositivos MACVLAN / MACVTAP para otros tipos de interfaces de red, como puentes).
- Un producto de virtualización puede conectar un controlador virtio en el invitado al controlador virtio en el host para una red muy eficiente.