
Wir betreiben eine Reihe von Debian Wheezy VMs auf Ubuntu Servern 12.04.4 / Libvirt 0.9.8-2ubuntu17.17
Der Host ist über einen Trunk mit dem Netzwerk verbunden. Anschließend teilt er die VLANs auf und erstellt für jedes davon eine Brücke mit der folgenden Konfiguration:
auto eth4.2 kvmbrtrunk.2
iface eth4.2 inet manual
up ifconfig eth4.2 up
down ifconfig eth4.2 down
iface kvmbrtrunk.2 inet manual
bridge-ports eth4.2
bridge-stp no
bridge-fd 0
bridge-maxwait 0
Die VMs sind wie folgt konfiguriert:
<interface type='bridge'>
<mac address='54:52:00:02:10:70'/>
<source bridge='kvmbrtrunk.2'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</interface>
Und sie verwenden VirtIO
00:09.0 Ethernet controller: Red Hat, Inc Virtio network device
Protagonisten (alle im selben VLAN):
A: 1st Ubuntu 12.04 desktop
B: 2nd Ubuntu 12.04 desktop
C: 1st VM, 1st host
D: 2nd VM, 1st host
E: 3rd VM, 2nd host
Wenn wir eine Serie von 60 Pings "rtt min/avg/max/mdev" machen:
A -> B = 0.093/0.132/0.158/0.015 ms
A -> C = 0.272/0.434/1.074/0.113 ms
A -> D = 0.294/0.460/0.832/0.091 ms
A -> E = 0.324/0.505/0.831/0.069 ms
C -> D = 0.348/0.607/0.863/0.124 ms
C -> E = 0.541/0.792/0.972/0.101 ms
Diese Ergebnisse deuten darauf hin, dass die libvirtvirtueller Switch/Filterungfügt nicht nur, wie zu erwarten, etwas Latenz hinzu, sondern verdreifacht diese (0,132 gegenüber 0,460)
Frage
Is there anything that can be done to attenuate this extra latency?
Vielen Dank im Voraus für alle Tipps.
Antwort1
Auf welche Funktionen sind Sie bereit, für diese Latenzreduzierung zu verzichten?
Versuchen Sie zunächst, iptables/ebtables auf den Bridge-Schnittstellen zu deaktivieren. Sie können /proc/sys/net/bridge/bridge-nf-call-iptables
dazu den Wert auf 0 ändern. Der Nachteil dabei ist, dass Sie den Gastverkehr nicht mehr filtern können.
Die „bessere“ Option ist hier der Wechsel zu virtualisierten Netzwerkkarten mit SR-IOV. Dies setzt voraus, dass Ihr Motherboard und Ihr Netzwerkcontroller dies unterstützen. Sie sind außerdem auf 7 Gäste pro Netzwerkkarte beschränkt (bei Gigabit-Ethernet sind 10 GB meiner Meinung nach besser). Dies funktioniert, indem jedem Gast direkter Zugriff auf die Netzwerkhardware gewährt wird. Das Betriebssystem des Hosts ist nicht am Paketfluss beteiligt, die VM kommuniziert nur direkt mit der Netzwerkkarte.
SR-IOV bietet Ihnen die beste Leistung (die CPU-Auslastung war bei unseren Tests bei hohem Netzwerkverkehr um etwa 10 % niedriger) und die geringste Latenz (da weitaus weniger Softwareschichten mit den Paketen interagieren). Ich glaube, Sie können damit VLAN-Tagging konfigurieren, aber die Einrichtung dürfte etwas schwierig sein (SR-IOV ist im Grunde undokumentierte Zauberei, und Sie werden viel an den Einstellungen herumfummeln müssen).