Was ist der Unterschied zwischen tun / tap und bridge + vnet und macvtap? (Für Virtualisierung KVM)

28

Ich habe gerade viele verschiedene Wege gefunden, um KVM-Netzwerke aufzubauen. Aber ich stecke fest, was der richtige Weg ist, es zu tun. Ich entdeckte, dass openstack macvtap für die Vernetzung von Neutronen verwendet. Und es sieht gut aus.

Aber was ist der Unterschied und warum ist jeder Weg zu benutzen?

Weg 1 [ALT? TUN / TAP]

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

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

Veraltet, richtig?

Weg 2 [Bridge + Vnet] <- Das macht virt-manager

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

Grundsätzlich erstellen Sie eine Bridge-Schnittstelle mit Ihrer physischen Schnittstelle in und

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

Wenn Sie eine virtuelle Maschine über virt-manager starten, wird eine vnet-Schnittstelle erstellt und der Bridge hinzugefügt. Zumindest bis ich weiß. Es wird keine Tun / Tap-Schnittstelle benötigt.

Es hat lange Zeit ganz gut funktioniert, aber jetzt mit frech habe ich Probleme gefunden.

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

Warum können Sie der Bridge eine neue vnet-Schnittstelle ohne die TAP-Schnittstelle hinzufügen?

Weg 3 [MACVTAP]

Das letzte ist die macvtap-Schnittstelle.

http://virt.kernelnewbies.org/MacVTap

Es kopiert die TUN / TAP-Softwareschnittstelle, aber es funktioniert besser. Ich weiß nicht wie, aber es scheint besser zu sein.

Was ist der Vorteil von macvtap gegenüber dem zweiten Weg?

Was ist besser?

Irgendeine Hilfe dazu?

Gonzalo Aguilar Delgado
quelle

Antworten:

4

Es kommt wirklich darauf an, was genau Sie erreichen wollen

  • TAP / TUN

Es spielt keine Rolle, ob es sich um eine VM oder eine physische Maschine handelt. TUN bringt Ihnen ein getunneltes Netzwerk und TAP ein Gerät. Kurz gesagt, Sie gehen durch ein getunneltes Netzwerk, um ein anderes Netzwerk zu erreichen.

Wenn Sie beispielsweise ein OpenVPN-Netzwerk konfigurieren, erhalten Sie 10.8.0.6 auf Ihrem Client. Der VPN-Server 10.8.0.1 leitet Ihre Anfrage an ein anderes Netzwerk (z. B. 192.168.xx) weiter. Bei Verwendung von TAP erhalten Sie eine IP (192.168.10.10/24) direkt von Ihrem Zielnetzwerk (192.168.10.x / 24). Einfach.

  • Brücke

"Linux Bridge" verbindet VNET (von VM) mit physikalischem Ethernet. Wenn Sie eine VM (KVM-basiert) möchten, ist eine Bridge zwischen vnet und ethernet auf dem Host ein Muss

j3ffyang
quelle
MMmmm. Vielen Dank für die Antwort, aber es löst meine Zweifel wirklich nicht. Wenn Sie die Links sehen, werden Sie feststellen, dass es mehrere Gründe gibt, den einen oder anderen zu verwenden. Tatsächlich funktioniert Bridging jetzt auf dem aktuellen Linux-Stack für VM nicht mehr richtig. Also musste ich MACVTAP verwenden.
Gonzalo Aguilar Delgado
2

Ich würde sagen, es hängt von Ihrem Anwendungsfall ab.

Automatisches Hinzufügen / Löschen von virtuellen Hosts?

Probieren Sie macvtap aus. Sollte auch performanter sein als macvlan (was ungefähr dem Hinzufügen eines weiteren MAC zu einem physischen Gerät gleicht, da dort ankommende Informationen vom Netzwerk-Stack verarbeitet werden) oder eine zusätzliche Bridge, da macvtap den Netzwerk-Stack irgendwie umgeht und ein Tap-Character-Gerät direkt exportiert. Aber nagle mich nicht fest. Abgesehen davon, dass beide (macvlan / macvtap) dieselben verfügbaren Modi (VEPA / Haarnadel, Überbrückung, Privat) verwenden, funktioniert die Haarnadelung nur, wenn Ihr Switch den Modus für reflektierende Relais unterstützt. (Pakete, die am physischen Switch an Port x ankommen, müssen den Switch wieder an demselben Port x verlassen dürfen.)

Da der eth0 (oder der von Ihnen verwendete) bei Verwendung einer Bridge in den Promiscuous-Modus versetzt wird, wird von höheren Durchsätzen für die macvXXX-Modi gesprochen.

Die Modi definieren auch den Grad der Isolation (können sich die VHosts gegenseitig im Verkehr sehen? Wie steht es mit der HV?). Wie das unter der Haube funktioniert weiß ich noch nicht.

Veths (virtuelle Ethernet-Paare) ähneln sich in Bezug auf die Isolierung. Sie definieren zwei virtuelle Schnittstellen, eine wird an eine Bridge angeschlossen, die andere an Ihre VM. Dort erfolgt die Isolierung, indem das VM-Interface in einen eigenen Namespace gestellt wird, sodass die Geräte etwas isoliert sind. Der gesamte Verkehr läuft auf der Brücke zusammen, aber ein Host kann die vNICs eines anderen nicht sehen.

Wenn Sie mit einer Bridge arbeiten, müssen Sie zusätzliche Einstellungen vornehmen. Wenn die Bridge nicht funktioniert, müssen Sie auch alle Verbindungen aufbauen. Wenn Sie die Bridge wieder in Betrieb nehmen, müssen Sie möglicherweise alle virtuellen Schnittstellen erneut mit der Bridge verbinden (oder einfach die gesamte Festplatte neu starten ...).

Fazit: Wenn Sie Ihre Topologie nicht häufig ändern, gehen Sie einfach zu Bridging, da Sie die meisten Informationen online finden, was besser ist als das Lesen von Kernel-Code. Selbst dem iproute2-doc-Paket selbst fehlen die meisten Informationen, die iproute2 tatsächlich hat, selbst wenn Sie hochaktuelle Versionen ausführen. man ip-tcp_metricsInformieren Sie sich in den verfügbaren Hilfeseiten oder in ip-crefs.ps ...

sjas
quelle
Ich erinnere mich nicht einmal daran, dies zu schreiben, geschweige denn, wo ich all diese Informationen gefunden habe. :(
sjas