Tipps und Tools für die Diagnose von Netzwerkproblemen in VMware vSphere

    Netzwerk-TroubleshootingIn vSphere sind wie in nahezu allen Service-orientierten Software-Architekturen viele Fehler­symp­tome auf Netzwerk­probleme zurück­zuführen. Das gilt auch für Storage-Fehler, wenn Speicher über das Netz­werk ange­bunden ist. Daher enthält vSphere eine Reihe von Tools zur Diagnose des Netz­werks.

    Mit dem umfang­reichen Toolset können Nutzer zum Beispiel die Konnek­tivität oder die Verfüg­barkeit der Band­breite überprüfen. Einige Programme beschränken sich nicht nur auf ESXi, sondern eignen sich auch zur Unter­suchung der physischen Netzwerk­komponenten, die an den Netzwerk­pfaden beteiligt sind.

    Basis-Toolset

    Nachdem die meisten der folgenden Tools CLI-Werkzeuge sind, ist in jedem Fall der Zugriff auf die ESXi-Shell erforderlich.  Ein guter Ausgangs­punkt für die Problem­behebung bei Konnektivität ist die esxtop-Netzwerkansicht (Taste "n").

    Netzwerkansicht von esxtop

    Ebenso leistungs­fähig ist esxcli network. Bereits länger in der Bordwerk­zeugkiste sind vmkping und traceroute. Möchte man dagegen tiefer in die Netzwerk­diagnose einsteigen, sollte man sich net-stats, nc, pktcap-uw imd  ipferf näher ansehen.

    Net-stats

    Mit net-stats kann man im Wesentlichen Port-Statistiken und weitere Infor­mationen wie Switch- und Client-Namen abrufen. Aufgrund der zahl­reichen Optionen sind die Einsatz­möglich­keiten des Tools sehr umfangreich. Eine erste Übersicht der möglichen Parameter liefert

    net-stats -h

    Optionen zum Aufruf von net-stats

    Beginnen wir mit der Listenoption. Mit

    net-stats -l

    kann man etwa die Switchport-Nummern und MAC-Adressen für sämtliche VMkernel- und vmnic-Uplink-Adapter sowie vNIC-Ports in einem Rutsch ermitteln. Diese Infor­mationen werden häufig benötigt, auch für viele der im Folgenden noch erläuterten Tools.

    Switchport-Nummern und MAC-Adressen für VMkernel- und vmnic-Uplink-Adapter anzeigen mit net-stats -l

    Wir können damit auch heraus­finden, welche "Worlds" (bzw. CPU-Threads, die als "sys" aufgeführt sind) momentan Netzwerk-IO verursachen. Als Ausgabe bekommen wir analog zur Liste oben aus­führliche Statistiken für jedes einzelne Gerät. Beim Befehl

    net-stats -A -t vW

    steht:

    W für Worldlets-Stats (analog könnte man auch esxcli network nic stats get -n vmnic0 für jedes einzelne Device aufrufen)

    v für VirtualNic-State

    t für die ausführlichen SCSI-Path-Statistiken

    Aufruf von net-stats -A -t vW

    Pktcap-uw

    Seit der  ESXi-Version 5.5 liefert VMware pktcap-uw mit, das im Prinzip das ältere tcpdump-uw ersetzt. Dieses ist zwar immer noch an Bord, aber das neue Tool ist deutlich leistungs­fähiger.

    tcpdump-uw schneidet nämlich nur Pakete auf der Ebene der VMkernel-Adapter mit, während pktcap-uw auch Frames für Uplink-Adapter, vSwitch oder Portgruppen erfasst, was deutlich mehr Informationen bei der Fehler­behebung liefert.

    Einzelheiten zur Syntax liefert wieder die Option -h:

    pktcap-uw -h |more

    Ein Live-Capture von einem ausgewählten VMKernel-Port kann man beispiels­weise so starten:

    pktcap-uw --vmk vmk<n>

    Um zum Beispiel Traffic vom Management-Adapter vmk0 mitzu­schneiden, gibt man

    pktcap-uw --vmk vmk0

    ein. Alternativ können wir auch Live-Traffic des angegebenen physischen Netzwerk­adapters aufzeichnen:

    pktcap-uw --uplink vmnic0

    Live-Traffic eines physischen Netzwerk­adapters aufzeichnen mit pktcap-uw

    Um ein Live-Capture eines bestimmten vSwitch-Ports für eine virtuelle Maschine anzuzeigen, verwendet man die Option switchport:

    pktcap-uw --switchport <switchportnumber>

    Live-Capture eines bestimmten vSwitch-Ports mit pktcap-uw

    Um den jeweiligen Mitschnitt in eine Datei umzuleiten, verwendet man die Option -o:

    pktcap-uw --vmk vmk<n> -o ;<datei>.pcap

    Folgendes Capture-Beispiel schreibt alle Pakete, die über vmk1 gehen, in die Datei capture.pcap im Verzeichnis  /tmp.

    pktcap-uw --vmk vmk1 -o /tmp/capture.pcap

    Achtung: Beim Verwenden der Option -o erfolgt die Ausgabe unabhängig von anderen Einstellungen im pcap-Format. Man kann dabei mit -G auch angeben, wie viele Sekunden exakt mitgeschnitten werden oder mit -C die maximale Größe der Ausgabe­datei in MB bestimmen. Generell kann man jeden Mitschnitt mit <Strg>+>C> beenden.

    Folgende Abbildung aus dem VMware-Blog zeigt detailliert, welche Syntax für pktcap-uw verwendet werden muss, um die korrekten Daten der jeweiligen Netzwerk­pfadebene zu erhalten.

    Entscheidungshilfe für den Aufruf von pktcap-uw

    Daraus ergeben sich einige weitere Einsatz­beispiele für die Praxis:

    Filtern aller Frames nach einer bestimmten IP:

    pktcap-uw --ip x.x.x.x

    Filtern aller Frames nach einer bestimmten MAC-Adresse:

    pktcap-uw --mac xx: xx: xx: xx: xx: xx

    Begrenzen der Erfassung nach Paketanzahl:

    pktcap-uw -c 200

    Automatisches Ausführen von pktcap-uw mit sleep:

    pktcap-uw $ sleep 120; pkill pktcap-uw

    Iperf

    Ebenfalls sehr nützlich ist Iperf, ein typisches Test-Tool für Bandbreiten. Es prüft die maximale Bandbreite zwischen einer Quelle und einem Ziel und wird normaler­weise von einer VM aus genutzt. Man kann aber für Quelle und Ziel den ESXi-Host selbst verwenden.

    Das Tool ist in ESXi eingebettet, seit proaktive Netzwerk­leistungs­tests von VMware vSAN verfügbar sind. Trotzdem spricht nichts dagegen, das Tool auch für andere Zwecke einzusetzen.

    Ipferf kann mit jeder beliebigen VMkernel-Schnittstelle in einem Host verwendet werden. Standard­mäßig erlaubt es ESXi allerdings nicht, iperf3 im Server-Modus von der Shell aus zu starten. Mit einem Trick geht es aber doch, indem man einfach eine Kopie von iperf mit der folgendem Befehl erstellt:

    cp /usr/lib/vmware/vsan/bin/iperf3 /usr/lib/vmware/vsan/bin/iperf3.copy

    Standard­mäßig wird iperf3 auf Ports ausgeführt, die in der ESXi-Firewall nicht zulässig sind. Eine Möglich­keit, dies zu umgehenden, besteht darin, die Firewall vorüber­gehend zu deaktivieren. Eine weitere Option ist das Erstellen zusätzlicher ESXi-Firewall-Einträge mittels

    esxcli network firewall set --enabled <false | true>

    Nun können wir iperf3.copy mit dem Schalter -s auf dem Ziel-Host ausführen. Das Schöne daran ist, dass sich alle VMkernel-IPs verwenden lassen. Wer also das Management-Netzwerk testen möchte, bindet iperf3 an die Management-IP oder bei Bedarf an den vMotion-Adapter bzw. IP-Storage.

    iPerf auf der Konsole von ESXi

    Hier ein Beispiel mit ESXi-Host 1 als Server und ESXi-Host 2 als Client:

    ESXi-Host1:

    /usr/lib/vmware/vsan/bin/iperf3.copy -s -B 192.168.1.10

    ESXi-Host 2:

    /usr/lib/vmware/vsan/bin/iperf3.copy -c 192.168.1.20

    NC

    Nicht ganz so häufig unter ESXi eingesetzt wird NetCat (nc), obwohl es ein alter Linux-Bekannter ist. NC ist das perfekte Tool zum Überprüfen der Konnek­tivität an einem bestimmten Port, da Telnet unter ESXi nicht verfügbar ist. So können wir beispiels­weise wie folgt testen, ob der iSCSI-Port eines Speicher-Arrays erreichbar ist:

    nc -z <Ziel-IP> 3260

    1 Kommentar

    Bild von Franz
    Franz sagt:
    17. April 2019 - 14:57

    Hallo,

    danke für den Beitrag.
    Ich habe aktuell das Problem, dass ich über das Management Netzwerk zu einem physikalisch anderen Backupserver beim Sicherungslauf nicht über 700Mbit/sek hinauskomme, trotz eines vorhandenen 10Gb Link. Von einer VM heraus kann ich mittels eines Filecopy sehr wohl die 10Gb Verbindung zum Backup Server auslasten. Die Backup Software verwendet zur Übertragung die NBD Schnittstelle. Welche Werkzeuge gibt es für das Troubleshooting um die Bandbreite vom ESXi Host über das Management Netzwerk zu testen?
    danke Franz