Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Packet Monitor (Pktmon) è uno strumento di diagnostica di rete tra componenti integrato per Windows. Può essere usato per l'acquisizione pacchetti, il rilevamento dell'eliminazione di pacchetti, il filtro dei pacchetti e il conteggio. Lo strumento è particolarmente utile negli scenari di virtualizzazione, ad esempio, la rete dei contenitori e SDN, perché offre visibilità all'interno dello stack di rete. Packet Monitor è disponibile nella casella tramite pktmon.exe comando in Windows 10 e Windows Server 2019 (versione 1809 e successive). È possibile usare questo argomento per informazioni su come comprendere la sintassi pktmon, la formattazione dei comandi e l'output. Per un elenco completo dei comandi, consultare la sezione sintassi pktmon.
Avvio rapido
Usare la procedura seguente per iniziare a utilizzare scenari generici:
Identificare il tipo di pacchetti necessari per l'acquisizione, ad esempio indirizzi IP, porte o protocolli specifici associati al pacchetto.
Controllare la sintassi per applicare i filtri di acquisizione e applicare i filtri per i pacchetti identificati nel passaggio precedente.
C:\Test> pktmon filter add help C:\Test> pktmon filter add <filters>
Avviare l'acquisizione e abilitare la registrazione dei pacchetti.
C:\Test> pktmon start -c
Riprodurre il problema da diagnosticare. Contatori delle query per verificare la presenza del traffico previsto e ottenere una panoramica generale del flusso del traffico nel computer.
C:\Test> pktmon counters
Arrestare l'acquisizione e recuperare i log in formato txt per l'analisi.
C:\Test> pktmon stop C:\Test> pktmon etl2txt <etl file>
Per istruzioni sull'analisi dell'output txt, consultare la sezione Analizzare l'output di Packet Monitor.
Filtri di acquisizione
È consigliabile applicare filtri prima di avviare qualsiasi acquisizione di pacchetti, perché la risoluzione dei problemi di connettività a una determinata destinazione è più semplice quando ci si concentra su un singolo flusso di pacchetti. L'acquisizione di tutto il traffico di rete può rendere l'output troppo rumoroso da analizzare. Affinché un pacchetto venga segnalato, deve corrispondere a tutte le condizioni specificate in almeno un filtro. Fino a 32 filtri sono supportati contemporaneamente.
Ad esempio, il set di filtri seguente acquisisce qualsiasi traffico ICMP da o verso l'indirizzo IP 10.0.0.10 insieme a qualsiasi traffico sulla porta 53.
C:\Test> pktmon filter add -i 10.0.0.10 -t icmp
C:\Test> pktmon filter add -p 53
Funzionalità filtro
Packet Monitor supporta il filtro in base a indirizzi MAC, indirizzi IP, porte, EtherType, protocollo di trasporto e ID VLAN.
Packet Monitor non distingue tra origine o destinazione quando si tratta di indirizzi MAC, indirizzo IP o filtri di porta.
Per filtrare ulteriormente i pacchetti TCP, è possibile specificare un elenco facoltativo di flag TCP da associare. I flag supportati sono FIN, SYN, RST, PSH, ACK, URG, ECE e CWR.
- Ad esempio, il filtro seguente acquisisce tutti i pacchetti SYN inviati o ricevuti dall'indirizzo IP 10.0.0.10:
C:\Test> pktmon filter add -i 10.0.0.10 -t tcp syn
- Packet Monitor può applicare un filtro ai pacchetti interni incapsulati, oltre al pacchetto esterno se il flag [-e] è stato aggiunto a qualsiasi filtro. I metodi di incapsulamento supportati sono VXLAN, GRE, NVGRE e IP-in-IP. La porta VXLAN personalizzata è facoltativa e il valore predefinito è 4789.
Per maggiori informazioni, leggere l'articolo relativo alla sintassi filtro pktmon.
Acquisizione di pacchetti ed eventi generali
Packet Monitor può acquisire pacchetti tramite il parametro [-c] con il comando start. In questo modo, verranno abilitate l'acquisizione e la registrazione di pacchetti, nonché i contatori dei pacchetti. Per abilitare i contatori dei pacchetti senza registrare il pacchetto, aggiungere il parametro [-o] al comando start. Per maggiori informazioni sui contatori dei pacchetti, consultare la sezione Contatori pacchetti di seguito.
È possibile selezionare i componenti da monitorare tramite il parametro [--comp]. Può essere solo schede di interfaccia di rete o un elenco di ID componente e per impostazione predefinita tutti i componenti. È anche possibile filtrare in base allo stato di propagazione dei pacchetti (eliminati o di flusso) usando il parametro [--type].
Oltre all'acquisizione di pacchetti, Packet Monitor consente l'acquisizione di eventi generali, ad esempio eventi ETW e WPP dichiarando il parametro [-t] e specificando i provider tramite il parametro [-p]. Usare "pktmon stop" per arrestare tutta la raccolta di dati.
Ad esempio, il comando seguente acquisisce pacchetti solo delle schede di rete:
C:\Test> pktmon start -c --comp nics
Il comando seguente acquisisce solo i pacchetti eliminati che passano i componenti 4 e 5 e li registra:
C:\Test> pktmon start -c --comp 4,5 --type drop
Questo comando acquisisce pacchetti e registra eventi dal provider "Microsoft-Windows-TCPIP":
C:\Test> pktmon start --capture --trace -p Microsoft-Windows-TCPIP
Funzionalità di registrazione pacchetti
Packet Monitor supporta più modalità di registrazione:
- Circular: nuovi pacchetti sovrascrivono quelli meno recenti quando viene raggiunta la dimensione massima del file. Questa è la modalità di registrazione predefinita.
- Multi-file: viene creato un nuovo file di log quando viene raggiunta la dimensione massima del file. I file di log sono numerati in sequenza: PktMon1.etl, PktMon2.etl e così via. Applicare questa modalità di registrazione per mantenere tutto il log, ma fare attenzione all'utilizzo dello spazio di archiviazione. Nota: usare il timestamp di creazione del file di ogni file di log come indicazione di un intervallo di tempo specifico nell'acquisizione.
- In tempo reale: i pacchetti vengono visualizzati sullo schermo in tempo reale. Non viene creato alcun file di log. Usare Ctrl+C per arrestare il monitoraggio.
- Memoria: gli eventi vengono scritti in un buffer di memoria circolare. Le dimensioni del buffer sono specificate tramite il parametro [-s]. Il contenuto del buffer viene scritto in un file di log dopo l'arresto dell'acquisizione. Usare questa modalità di registrazione per scenari molto rumorosi per acquisire una grande quantità di traffico in un intervallo di tempo molto breve nel buffer di memoria. Usando qualsiasi altra modalità di registrazione, il traffico potrebbe andare perso.
Specificare la quantità di pacchetti da registrare tramite il parametro [-p]. Registrare l'intero pacchetto di ogni pacchetto indipendentemente dalle dimensioni impostando tale parametro su 0. Il valore predefinito è 128 byte che deve includere le intestazioni della maggior parte dei pacchetti.
Specificare le dimensioni del file di log tramite il parametro [-s]. Questa sarà la dimensione massima del file in modalità di registrazione circolare prima che Packet Monitor inizi a sovrascrivere i pacchetti precedenti con quelli più recenti. Questa sarà anche la dimensione massima di ogni file nella modalità di registrazione multi-file prima che Packet Monitor crei un nuovo file per registrare i pacchetti successivi. È anche possibile usare questo parametro per impostare le dimensioni del buffer per la modalità di registrazione della memoria.
Per maggiori informazioni, leggere l'articolo relativo alla sintassi pktmon start.
Analisi e formattazione dei pacchetti
Packet Monitor genera file di log in formato ETL. Esistono diversi modi per formattare il file ETL per l'analisi:
- Convertire il log in formato testo (opzione predefinita) e analizzarlo con lo strumento editor di testo come TextAnalysisTool.NET. I dati dei pacchetti verranno visualizzati in formato TCPDump. Seguire la guida seguente per informazioni su come analizzare l'output nel file di testo.
- Convertire il log in formato pcapng per analizzarlo usando Wireshark*
- Aprire il file ETL con Network Monitor*
Nota
*Usare i collegamenti ipertestuali precedenti per informazioni su come analizzare e analizzare i log di Monitoraggio pacchetti in Wireshark e Network Monitor.
Per maggiori informazioni, consultare la sezione sintassi pktmon format.
Analizzare l'output di Packet Monitor
Packet Monitor acquisisce uno snapshot del pacchetto da ogni componente dello stack di rete. Di conseguenza, ci saranno più snapshot di ogni pacchetto (rappresentato nell'immagine sottostante dalle righe della casella blu). Ciascuno di questi snapshot di pacchetto è rappresentato da un paio di righe (caselle rosse e verdi). È presente almeno una riga che include alcuni dati sull'istanza del pacchetto a partire dal timestamp. Subito dopo, è presente almeno una riga (in grassetto nell'immagine seguente) per mostrare il pacchetto non elaborato analizzato in formato testo (senza timestamp); potrebbe trattarsi di più righe se il pacchetto è incapsulato, ad esempio il pacchetto nella casella verde.
Per correlare tutti gli snapshot degli stessi pacchetti, monitorare i valori PktGroupId e PktNumber (evidenziati in giallo); tutti gli snapshot dello stesso pacchetto devono avere questi 2 valori in comune. Il valore Aspetto (evidenziato in blu) funge da contatore per ogni snapshot successivo dello stesso pacchetto. Ad esempio, il primo snapshot del pacchetto (in cui il pacchetto è apparso per la prima volta nello stack di rete) ha il valore 1 per l'aspetto, lo snapshot successivo ha il valore 2 e così via.
Ciascun snapshot del pacchetto ha un ID componente (sottolineato nell'immagine precedente) che indica il componente associato allo snapshot. Per risolvere il nome del componente e i parametri, cercare questo ID componente nell'elenco dei componenti nella parte inferiore del file di log. Una parte della tabella dei componenti è illustrata nell'immagine seguente evidenziando "Component 1" in giallo (questo è il componente in cui è stato acquisito l'ultimo snapshot precedente). I componenti con 2 bordi segnalano 2 snapshot a ogni bordo ,ad esempio gli snapshot con Aspetto 3 e Aspetto 4, ad esempio nell'immagine precedente.
Nella parte inferiore di ogni file di log, l'elenco dei filtri viene visualizzato come illustrato nell'immagine seguente (evidenziata in blu). Ciascun filtro visualizza i parametri specificati (Protocollo ICMP nell'esempio seguente) e zeri per il resto dei parametri.
Per i pacchetti eliminati, la parola "drop" viene visualizzata prima di qualsiasi riga che rappresenta lo snapshot in cui è stato eliminato il pacchetto. Ciascun pacchetto eliminato fornisce anche un valore dropReason. Questo parametro dropReason fornisce una breve descrizione del motivo di rilascio del pacchetto; ad esempio, mancata corrispondenza MTU, VLAN filtrata e così via.
Contatori di pacchetti
I contatori di Packet Monitor offrono una visualizzazione generale del traffico di rete in tutto lo stack di rete senza la necessità di analizzare un log, che può essere un processo costoso. Esaminare i modelli di traffico eseguendo query sui contatori dei pacchetti con contatori pktmon dopo l'avvio dell'acquisizione di Packet Monitor. Reimpostare i contatori su zero usando pktmon reset o arrestare il monitoraggio usando pktmon stop.
- I contatori sono disposti da stack di associazione con schede di rete nella parte superiore e protocolli nella parte inferiore.
- Tx/Rx: i contatori sono separati in due colonne per le direzioni Send (Tx) e Receive (Rx).
- Archi: i componenti segnalano la propagazione dei pacchetti quando un pacchetto supera il limite del componente (bordo). Ciascun componente può avere uno o più bordi. I driver Miniport in genere hanno un singolo bordo superiore, i protocolli hanno un singolo bordo inferiore e i driver di filtro hanno bordi superiori e inferiori.
- Eliminazioni: i contatori di rilascio dei pacchetti vengono segnalati nella stessa tabella.
Nell'esempio seguente è stata avviata una nuova acquisizione, quindi è stato usato il comando pktmon per eseguire query sui contatori prima dell'arresto dell'acquisizione. I contatori mostrano un singolo pacchetto che lo rende fuori dallo stack di rete, a partire dal livello del protocollo fino alla scheda di rete fisica e la risposta torna nell'altra direzione. Se il ping o la risposta non è presente, è facile rilevarla tramite i contatori.
Nell'esempio seguente, le eliminazioni vengono segnalate nella colonna "Counter". Recuperare il motivo dell'ultima eliminazione per ogni componente richiedendo i dati dei contatori in formato JSON usando i contatori pktmon --json o analizzando il log di output per ottenere informazioni più dettagliate.
Come illustrato in questi esempi, i contatori potrebbero fornire molte informazioni tramite un diagramma che può essere analizzato solo da un rapido sguardo.
Per maggiori informazioni, consultare la sezione sintassi pktmon counters.
Layout dello stack di rete
Esaminare il layout dello stack di rete tramite il comando pktmon list.
Il comando mostra i componenti di rete (driver) disposti dalle associazioni degli adattatori.
Un'associazione tipica è costituita da:
- Una scheda di interfaccia di rete singola (NIC)
- Alcuni driver di filtro (possibilmente zero)
- Uno o più driver di protocollo (TCP/IP o altri)
Ciascun componente viene identificato in modo univoco da un ID componente di Packet Monitor, che viene usato per la destinazione di singoli componenti per il monitoraggio.
Nota
Gli ID non sono persistenti e possono cambiare tra i riavvii e quando il driver di Packet Monitor viene riavviato.
Alcuni ID visualizzati nell'output di Packet Monitor potrebbero non essere visualizzati nell'elenco dei componenti. Ciò è dovuto all'aggregazione di alcuni componenti in un singolo ID per semplificare la selezione e la visualizzazione. Per trovare gli ID originali per questi componenti, usare pktmon list --json e cercare la proprietà SecondaryId nell'output.
Per maggiori informazioni, consultare la sezione sintassi pktmon list.