web-dev-qa-db-fra.com

Quelle est la différence entre tun / tap vs bridge + vnet vs macvtap? (Pour KVM de virtualisation)

Je viens de trouver beaucoup de façons différentes de faire KVM la mise en réseau. Mais je suis coincé sur quelle est la bonne façon de le faire. J'ai découvert que openstack utilise macvtap pour la mise en réseau neutronique. Et ça a l'air bien.

Mais quelle est la différence et pourquoi utiliser chaque méthode?.

Voie 1 [OLD? TUN/TAP]

http://www.shakthimaan.com/installs/debian-tun-tap-setup.html

/--------\   /----\   /----\   /----\   /--------\
|Internet|---|eth0|---|br0 |---|tap0|---|Guest NIC
\--------/   \----/   \----/   \----/   \--------/

Déconseillé, non?

Way 2 [Bridge + Vnet] <- C'est ce que virt-manager fait

http://www.linux-kvm.com/content/using-bridged-networking-virt-manager

Fondamentalement, vous créez une interface de pont avec votre interface physique à l'intérieur et

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

Et lorsque vous démarrez une machine virtuelle à partir de virt-manager, une interface vnet est créée et ajoutée au pont. Au moins jusqu'à où je sais. Aucune interface tun/tap n'est nécessaire.

Cela a assez bien fonctionné pendant longtemps, mais maintenant, je suis confronté à des problèmes.

https://bugs.launchpad.net/ubuntu/+source/core-network/+bug/1255516

Pourquoi pouvez-vous ajouter une nouvelle interface vnet au pont sans l'interface TAP?

Voie 3 [MACVTAP]

Le dernier est l'interface macvtap.

http://virt.kernelnewbies.org/MacVTap

Il copie l'interface du logiciel TUN/TAP mais d'une manière plus efficace. Je ne sais pas comment, mais cela semble être mieux.

Quel est l'avantage de macvtap par rapport à la seconde façon?

Ce qui est mieux?

Toute aide sur ceci?

28

Cela dépend vraiment de ce que vous voulez réaliser exactement

  • TAP/TUN

Peu importe que ce soit VM ou une machine physique. TUN vous apporte un réseau en tunnel et tapotez un appareil. En bref, vous passez par un réseau en tunnel pour atteindre un autre réseau.

Par exemple, lors de la configuration d'un réseau OpenVPN, vous recevrez 10.8.0.6 sur votre client. Le serveur VPN 10.8.0.1 achemine votre demande vers un autre réseau (par exemple, 192.168.x.x). Lorsque vous utilisez TAP, vous recevez une adresse IP (192.168.10.10/24) directement de votre réseau cible (192.168.10.x/24). Simple.

  • Pont

"Linux Bridge" établit un pont entre VNET (de la machine virtuelle) et Ethernet physique. Si vous voulez un VM (basé sur KVM), un pont est indispensable entre vnet et ethernet sur l'hôte.

4
j3ffyang

Je dirais que cela dépend de votre cas d'utilisation.

Ajouts/Suppressions automatiques d'hôtes virtuels?

Essayez macvtap. Should doit également être plus performant que macvlan (ce qui revient plus ou moins à ajouter un autre MAC à un périphérique physique, les informations qui y arrivent étant gérées par la pile réseau) ou à un pont supplémentaire, car macvtap contourne d’une manière ou d’une autre la pile réseau. exporte directement un périphérique de caractère tactile. Mais ne me claque pas là-dessus. Outre que les deux modes (macvlan/macvtap) partagent les mêmes modes disponibles (VEPA/épingle à cheveux, pontage, privé), l’épingle à cheveux ne fonctionne que si votre commutateur prend en charge le mode de relais réfléchissant. (Les paquets arrivant au commutateur physique sur le port x doivent être autorisés à quitter le commutateur sur le même port x.)

Etant donné que l'eth0 (ou celui que vous utilisez) est mis en mode promiscuous lors de l'utilisation d'un pont, les modes macvXXX ont des débits plus élevés.

Les modes définissent également le "montant" d'isolement (les hôtes hôtes peuvent-ils se voir mutuellement? Que diriez-vous du hv?). Comment cela fonctionne sous le capot, je ne sais pas encore.

veth (paires Ethernet virtuelles) sont assez similaires pour l'isolation, vous définissez deux interfaces virtuelles, l'une étant attachée à un pont, l'autre à votre machine virtuelle. Là, l'isolation est réalisée en plaçant l'interface vm-interface dans son propre espace de noms afin que les périphériques soient en quelque sorte isolés. Tout le trafic se réunit sur le pont, mais un vhost ne peut pas voir les vNICs d'un autre.

Si vous travaillez avec un pont, vous avez une configuration supplémentaire à faire. Lorsque le pont est arrêté, toutes vos connexions le sont également. Lors de la restauration du pont, vous devrez peut-être reconnecter toutes les interfaces virtuelles au pont (ou simplement redémarrer la totalité du disque dur ...).

Conclusion: si vous ne modifiez pas souvent votre topologie, optez pour le pontage, car vous y trouverez le plus d'informations en ligne, ce qui est préférable à la lecture du code du noyau. En fait, même le paquet iproute2-doc lui-même manque de la plupart des informations dont dispose réellement iproute2, même lorsque vous exécutez des versions bleeding-Edge. Essayez de trouver man ip-tcp_metrics à partir des pages de manuel disponibles ou de ip-crefs.ps ...

2
sjas