Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Paketmonitor (Pktmon) ist ein integriertes, komponentenübergreifendes Netzwerkdiagnosetool für Windows. Es kann für die Paketerfassung, die Erkennung von Paketablegung, die Paketfilterung sowie die Zählung verwendet werden. Das Tool ist besonders in Virtualisierungsszenarios wie Containernetzwerken und SDN hilfreich, da es einen Überblick über den Netzwerkstapel bietet. Packet Monitor ist unter Windows 10 und Windows Server 2019 (Version 1809 und höher) über den Befehl pktmon.exe verfügbar. In diesem Artikel erfahren Sie mehr über die Pktmon-Syntax, die Befehlsformatierung und die Ausgabe. Eine vollständige Liste der Befehle finden Sie unter Pktmon-Syntax.
Schnellstart
Führen Sie in generischen Szenarios zuerst die folgenden Schritte aus:
Identifizieren Sie den für die Erfassung erforderlichen Pakettyp (z. B. bestimmte IP-Adressen, Ports oder Protokolle, die dem Paket zugeordnet sind).
Überprüfen Sie die Syntax, um Erfassungsfilter anzuwenden, und wenden Sie die Filter für die im vorherigen Schritt identifizierten Pakete an.
C:\Test> pktmon filter add help C:\Test> pktmon filter add <filters>
Starten Sie die Erfassung, und aktivieren Sie die Paketprotokollierung.
C:\Test> pktmon start -c
Reproduzieren Sie das diagnostizierte Problem. Fragen Sie Zähler ab, um zu überprüfen, ob der erwartete Datenverkehr vorliegt, und eine allgemeine Übersicht über den Datenverkehrsfluss auf dem Computer zu erhalten.
C:\Test> pktmon counters
Beenden Sie die Erfassung, und rufen Sie die Protokolle im TXT-Format für die Analyse ab.
C:\Test> pktmon stop C:\Test> pktmon etl2txt <etl file>
Anweisungen zum Analysieren von TXT-Ausgaben finden Sie unter Analysieren von Packet Monitor-Ausgaben.
Erfassungsfilter
Es wird dringend empfohlen, vor dem Starten einer Paketerfassung Filter anzuwenden, da die Problembehandlung bei einer Verbindung mit einem bestimmten Ziel einfacher ist, wenn Sie sich auf einen einzelnen Paketdatenstrom konzentrieren können. Die Erfassung des gesamten Netzwerkdatenverkehrs kann dazu führen, dass die Ausgabe für die Analyse zu umfangreich ist. Damit ein Paket gemeldet werden kann, muss es allen Bedingungen entsprechen, die in mindestens einem Filter angegeben sind. Sie können maximal 32 Filter gleichzeitig verwenden.
Beispielsweise erfassen die folgenden Filter den gesamten ICMP-Datenverkehr von oder zur IP-Adresse 10.0.0.10 sowie den gesamten Datenverkehr an Port 53.
C:\Test> pktmon filter add -i 10.0.0.10 -t icmp
C:\Test> pktmon filter add -p 53
Filterfunktion
Packet Monitor unterstützt das Filtern nach MAC-Adressen, IP-Adressen, Ports, EtherType, Transportprotokoll und VLAN-ID.
Packet Monitor unterscheidet bei MAC-Adressen, IP-Adressen oder Portfiltern nicht zwischen Quelle und Ziel.
Um TCP-Pakete weiter zu filtern, können Sie eine optionale Liste von TCP-Flags bereitstellen, mit denen eine Übereinstimmung vorliegen muss. Unterstützte Flags sind FIN, SYN, RST, PSH, ACK, URG, ECE und CWR.
- Der folgende Filter erfasst beispielsweise alle SYN-Pakete, die von der IP-Adresse 10.0.0.10 gesendet oder empfangen werden:
C:\Test> pktmon filter add -i 10.0.0.10 -t tcp syn
- Packet Monitor kann zusätzlich zum äußeren Paket einen Filter auf gekapselte innere Pakete anwenden, wenn einem Filter das Flag [-e] hinzugefügt wurde. Unterstützte Kapselungsmethoden sind VXLAN, GRE, NVGRE und IP-in-IP. Ein benutzerdefinierter VXLAN-Port ist optional und standardmäßig auf 4789 festgelegt.
Weitere Informationen finden Sie unter pktmon filter-Syntax.
Erfassung von Paketen und allgemeinen Ereignissen
Packet Monitor kann Pakete über den Parameter [-c] mit dem start-Befehl erfassen. Dadurch werden die Paketerfassung und -protokollierung sowie Paketzähler aktiviert. Um Paketzähler nur ohne Protokollierung des Pakets zu aktivieren, fügen Sie dem start-Befehl den Parameter [-o] hinzu. Weitere Informationen zu Paketzählern finden Sie im Abschnitt Paketzähler weiter unten.
Sie können die zu überwachenden Komponenten über den Parameter [--comp] auswählen. Dies können nur NICs oder Listen von Komponenten-IDs sein. Standardmäßig sind alle Komponenten ausgewählt. Sie können auch nach dem Paketverteilungsstatus filtern (vorzeitig abgelegte oder derzeit übertragene Pakete), indem Sie den Parameter [--type] verwenden.
Neben dem Erfassen von Paketen ermöglicht Packet Monitor auch die Erfassung von allgemeinen Ereignissen wie ETW- und WPP-Ereignissen. Hierfür wird der Parameter [-t] deklariert, und die Anbieter werden über den Parameter [-p] angegeben. Verwenden Sie „pktmon stop“, um die gesamte Datenerfassung zu beenden.
Mit dem folgenden Befehl werden beispielsweise nur Pakete der Netzwerkadapter erfasst:
C:\Test> pktmon start -c --comp nics
Mit dem folgenden Befehl werden nur die vorzeitig abgelegten Pakete erfasst und protokolliert, die die Komponenten 4 und 5 durchlaufen:
C:\Test> pktmon start -c --comp 4,5 --type drop
Mit diesem Befehl werden Pakete und Protokollereignisse des Anbieters „Microsoft-Windows-TCPIP“ erfasst:
C:\Test> pktmon start --capture --trace -p Microsoft-Windows-TCPIP
Paketprotokollierungsfunktion
Packet Monitor unterstützt mehrere Protokollierungsmodi:
- Zirkulär: Neue Pakete überschreiben die ältesten, wenn die maximale Dateigröße erreicht ist. Dies ist der Standardprotokollierungsmodus.
- Multidatei: Eine neue Protokolldatei wird erstellt, wenn die maximale Dateigröße erreicht wird. Protokolldateien werden sequenziell nummeriert (PktMon1.etl, PktMon2.etl usw.). Wenden Sie diesen Protokollierungsmodus an, um das gesamte Protokoll beizubehalten, aber behalten Sie die Speicherauslastung im Auge. Hinweis: Verwenden Sie den Zeitstempel der Dateierstellung jeder Protokolldatei als Hinweis auf einen bestimmten Zeitrahmen bei der Erfassung.
- Echtzeit: Pakete werden in Echtzeit auf dem Bildschirm angezeigt. Es wird keine Protokolldatei erstellt. Verwenden Sie STRG+C, um die Überwachung zu beenden.
- Speicher: Ereignisse werden in einen zirkulären Speicherpuffer geschrieben. Die Puffergröße wird über den Parameter [-s] angegeben. Pufferinhalte werden nach dem Beenden der Erfassung in eine Protokolldatei geschrieben. Verwenden Sie diesen Protokollierungsmodus für sehr umfangreiche Szenarios, um eine große Menge von Datenverkehr in sehr kurzer Zeit im Speicherpuffer zu erfassen. Wenn Sie andere Protokollierungsmodi verwenden, geht ein Teil des Datenverkehrs möglicherweise verloren.
Geben Sie über den Parameter [-p] an, wie viel des Pakets protokolliert werden soll. Wenn Sie diesen Parameter auf 0 festlegen, wird unabhängig von der Größe der gesamte Datenverkehr des Pakets protokolliert. Der Standardwert beträgt 128 Bytes, die die Header der meisten Pakete enthalten sollten.
Geben Sie mit dem Parameter [-s] die Größe der Protokolldatei an. Dies ist die maximale Größe der Datei im zirkulären Protokollierungsmodus, bevor Packet Monitor beginnt, die älteren Pakete mit den neueren zu überschreiben. Es handelt sich hierbei auch um die maximale Größe jeder Datei im Multidatei-Protokollierungsmodus, bevor Packet Monitor eine neue Datei erstellt, um die nächsten Pakete zu protokollieren. Sie können diesen Parameter auch verwenden, um die Puffergröße für den Speicherprotokollierungsmodus festzulegen.
Weitere Informationen finden Sie unter pktmon start-Syntax.
Paketanalyse und -formatierung
Packet Monitor generiert Protokolldateien im ETL-Format. Es gibt mehrere Möglichkeiten zum Formatieren der ETL-Datei für die Analyse:
- Konvertieren des Protokolls ins Textformat (Standardoption) und Analysieren des Protokolls mit einem Text-Editor-Tool wie TextAnalysisTool.NET. Paketdaten werden im TCPDump-Format angezeigt. Befolgen Sie die nachstehende Anleitung, um zu erfahren, wie Sie die Ausgabe in der Textdatei analysieren.
- Konvertieren des Protokolls in das pcapng-Format zur Analyse mithilfe von Wireshark*
- Öffnen der ETL-Datei mit Network Monitor*
Hinweis
* Verwenden Sie die obigen Links, um zu erfahren, wie Sie Packet Monitor-Protokolle in Wireshark und Network Monitor analysieren.
Weitere Informationen finden Sie unter Pktmon-Formatsyntax.
Analysieren der Packet Monitor-Ausgabe
Packet Monitor erfasst eine Momentaufnahme des Pakets durch jede Komponente des Netzwerkstapels. Dementsprechend gibt es mehrere Momentaufnahmen jedes Pakets (in der folgenden Abbildung durch die Linien des blauen Kästchens dargestellt). Jede dieser Paketmomentaufnahmen wird durch ein paar Zeilen (rote und grüne Kästchen) dargestellt. Es gibt mindestens eine Zeile, die Daten zur Paketinstanz enthält (beginnend mit dem Zeitstempel). Direkt danach gibt es mindestens eine Zeile (in der folgenden Abbildung fett formatiert), um das analysierte unformatierte Paket im Textformat (ohne Zeitstempel) anzuzeigen. Dies können mehrere Zeilen sein, wenn das Paket gekapselt ist (siehe Paket im grünen Kästchen).
Um alle Momentaufnahmen derselben Pakete zu korrelieren, sehen Sie sich die Werte PktGroupId und PktNumber an (gelb hervorgehoben). Alle Momentaufnahmen des gleichen Pakets sollten diese beiden Werte gemeinsam haben. Der Appearance-Wert (blau hervorgehoben) fungiert als Zähler für jede nachfolgende Momentaufnahme desselben Pakets. Beispielsweise weist die erste Momentaufnahme des Pakets (erstes Vorkommen des Pakets im Netzwerkstapel) für Appearance den Wert 1 auf, die nächste Momentaufnahme den Wert 2 usw.
Jede Paketmomentaufnahme verfügt über eine Komponenten-ID (in der obigen Abbildung unterstrichen), die die Komponente angibt, die der Momentaufnahme zugeordnet ist. Um den Komponentennamen und die Parameter aufzulösen, suchen Sie in der Komponentenliste unten in der Protokolldatei nach dieser Komponenten-ID. Ein Teil der Komponententabelle ist in der folgenden Abbildung mit gelber Hervorhebung von „Component 1“ zu sehen (Komponente, in der die letzte Momentaufnahme oben erfasst wurde). Komponenten mit zwei Edges melden zwei Momentaufnahmen an jedem Edge (z. B. Momentaufnahmen mit „Appearance 3“ und „Appearance 4“ in der obigen Abbildung).
Unten in jeder Protokolldatei wird die Filterliste wie in der folgenden Abbildung dargestellt (blau hervorgehoben). Jeder Filter zeigt die angegebenen Parameter („Protocol ICMP“ im folgenden Beispiel) und Nullen für den Rest der Parameter an.
Bei vorzeitig abgelegten Paketen wird das Wort „Drop“ vor den Zeilen angezeigt, die die Momentaufnahme darstellen, in der das Paket abgelegt wurde. Jedes vorzeitig abgelegte Paket stellt auch einen DropReason-Wert bereit. Dieser DropReason-Parameter bietet eine kurze Beschreibung des Paketablagegrunds (z. B. „MTU Mismatch“, „Filtered VLAN“ usw.).
Paketleistungsindikatoren
Packet Monitor-Zähler bieten eine allgemeine Ansicht des Netzwerkdatenverkehrs im gesamten Netzwerkstapel, ohne dass ein Protokoll analysiert werden muss, was ein teurer Vorgang sein kann. Untersuchen Sie die Datenverkehrsmuster, indem Sie Paketzähler mit pktmon counters abfragen, nachdem Sie die Packet Monitor-Erfassung gestartet haben. Setzen Sie Zähler mithilfe von pktmon reset auf null zurück, oder beenden Sie die gesamte Überwachung mit pktmon stop.
- Zum Anordnen der Zähler werden Stapel mit Netzwerkadaptern oben und Protokollen unten verknüpft.
- Tx/Rx: Die Zähler sind für die Richtungen „Send“ (TX) und „Receive“ (Rx) in zwei Spalten unterteilt.
- Edges: Komponenten melden eine Paketweitergabe, wenn ein Paket die Komponentengrenze (Edge) überschreitet. Jede Komponente kann ein oder mehrere Edges aufweisen. Miniporttreiber haben in der Regel ein einzelnes oberes Edge, Protokolle ein einzelnes unteres Edge und Filtertreiber obere und untere Edges.
- Ablagen: Paketablagezähler werden in derselben Tabelle gemeldet.
Im folgenden Beispiel wurde eine neue Erfassung gestartet. Anschließend wurde der Befehl pktmon counters verwendet, um die Zähler abzufragen, bevor die Erfassung beendet wurde. Die Zähler melden ein einzelnes Paket aus dem Netzwerkstapel (beginnend von der Protokollebene bis hin zum physischen Netzwerkadapter) sowie dessen in die andere Richtung zurückgegebene Antwort. Wenn der Ping oder die Antwort fehlt, ist es einfach, dies über die Zähler zu erkennen.
Im nächsten Beispiel werden Ablagen unter der Spalte „Counter“ gemeldet. Rufen Sie für jede Komponente den Grund für die letzte vorzeitige Ablage ab, indem Sie mit pktmon counters --json die Zählerdaten im JSON-Format anfordern oder das Ausgabeprotokoll analysieren, um detailliertere Informationen zu erhalten.
Wie in diesen Beispielen gezeigt, könnten die Zähler viele Informationen über ein Diagramm bereitstellen, das nur mit einem kurzen Blick analysiert werden kann.
Weitere Informationen finden Sie unter pktmon counters-Syntax.
Layout des Netzwerkstapels
Untersuchen Sie das Layout des Netzwerkstapels mithilfe des Befehls pktmon list.
Der Befehl zeigt die von Adapterbindungen angeordneten Netzwerkkomponenten (Treiber) an.
Eine typische Bindung umfasst Folgendes:
- Einzelne Netzwerkschnittstellenkarte (NIC)
- Einige (möglicherweise keine) Filtertreiber
- Mindestens ein Protokolltreiber (TCP/IP oder andere)
Jede Komponente wird eindeutig durch eine Packet Monitor-Komponenten-ID identifiziert, die für die Festlegung einzelner Komponenten zur Überwachung verwendet werden.
Hinweis
IDs sind nicht beständig und können sich bei Systemneustarts und bei Neustart des Packet Monitor-Treibers ändern.
Einige IDs, die in der Packet Monitor-Ausgabe angezeigt werden, werden möglicherweise nicht in der Komponentenliste angezeigt. Dies ist auf die Aggregation einiger Komponenten in eine einzelne ID zurückzuführen, um die Auswahl und Anzeige zu vereinfachen. Um die ursprünglichen IDs für diese Komponenten zu finden, verwenden Sie pktmon list --json, und suchen Sie in der Ausgabe nach der SecondaryId-Eigenschaft.
Weitere Informationen finden Sie unter pktmon list-Syntax.