Traccia di rete in Windows 7: Architettura
La figura seguente illustra l'architettura di traccia di rete di base in Windows 7.
La traccia di rete usa il framework ETW (Event Tracing for Windows) disponibile in Windows. I componenti di rete(ad esempio Winsock, TCP/IP, NDIS, acquisizione pacchetti e così via) vengono registrati come provider di traccia ETW e generano eventi correlati all'attività di rete. Qualsiasi attività registrabile di significatività può essere un evento registrato in ETW. È possibile abilitare la traccia per questi componenti di rete e le acquisizioni di pacchetti usando il contesto di traccia netsh che funge da controller ETW.
Le tracce generate vengono raccolte in un file ETL (Event Trace Log). Questi file ETL possono quindi essere analizzati usando diversi strumenti, ad esempio Network Monitor 3.2 e versioni successive, Visualizzatore eventi, netsh trace convert o Tracerpt.exe.
Ogni evento ETW ha un'intestazione comune in cui ETW archivia informazioni quali le proprietà dell'evento, i timestamp e l'ID attività. Per altre informazioni sugli ID attività, vedere Scrittura di eventi correlati in uno scenario end-to-end. L'ID attività viene usato per correlare gli eventi. In modalità utente, gli ID attività vengono archiviati nei thread e tutti gli eventi registrati in un thread verranno contrassegnati automaticamente con lo stesso ID attività. In modalità kernel, l'ID attività deve essere passato in modo esplicito quando viene registrato un evento. Per impostazione predefinita, i file ETL sono correlati agli eventi di raggruppamento con ID attività specifici.
Per altre informazioni sugli eventi di Windows e ETW, vedere Eventi di Windows.
Componenti ETW nella traccia di rete
La traccia di rete usa ETW come meccanismo di traccia principale per fornire informazioni sulle operazioni eseguite dai sottosistemi di rete. In ETW sono disponibili quattro componenti principali: sessioni di traccia eventi, provider di eventi, controller eventi e consumer di eventi.
Il buffering e la registrazione avvengono in sessioni di traccia eventi, che accettano eventi dai provider e creano file di traccia.
Un provider di eventi è un'entità logica che scrive eventi in sessioni ETW. Un provider di eventi può essere un'applicazione in modalità utente, un'applicazione gestita, un driver o qualsiasi altra entità software. I provider di eventi si registrano con ETW e scrivono eventi da vari punti nel codice richiamando l'API di registrazione ETW. A causa della crescente strumentazione degli eventi in molti componenti del sistema operativo, anche una semplice applicazione o uno scenario in Windows conterrà diversi componenti che sono provider di eventi.
Un controller eventi avvia e arresta le sessioni di traccia eventi e abilita i provider. Quando un provider di eventi viene abilitato in modo dinamico dall'applicazione controller di eventi, il provider invia eventi a una sessione di traccia eventi specifica designata dal controller eventi. Ogni evento inviato dal provider di eventi alla sessione di traccia eventi è costituito da un'intestazione fissa, che include i metadati dell'evento e tutti i dati personalizzati aggiuntivi registrati dal provider.
Un consumer di eventi è un'applicazione che legge i file di log o che rimane in ascolto di una sessione di traccia eventi per eventi in tempo reale ed elabora tali file. Un esempio di consumer di eventi è Microsoft Network Monitor 3.2, che include la possibilità di leggere e visualizzare i file di log prodotti dalla traccia di rete in Windows 7.
Gli eventi vengono recapitati ai consumer di eventi in ordine cronologico e sono disponibili varie applicazioni consumer di eventi che visualizzano gli eventi in formati specifici. Quando un evento viene registrato in una sessione, ETW aggiunge informazioni aggiuntive all'intestazione dell'evento, inclusi il timestamp, l'ID del processo e del thread, il numero del processore e i dati di utilizzo della CPU del thread di registrazione. Questi dati vengono quindi passati ai consumer di eventi, insieme a tutti i dati personalizzati inclusi dal provider.
È previsto che i provider che usano le nuove API di registrazione eventi forniscano un file XML denominato manifesto dell'evento. Questo file fornisce metadati per definire tutte le informazioni di layout e dati personalizzati per gli eventi scritti dal provider. Un'applicazione consumer per utilizzo generico usa quindi le API TDH (Trace Data Helper) per recuperare i metadati dell'evento, decodificare gli eventi e visualizzarli.
Con la traccia di rete in Windows 7, il lato controller di eventi/consumer include il supporto di traccia end-to-end basato su scenari integrato con le esperienze generali di diagnostica e supporto di Windows. Uno scenario definisce una raccolta di provider di eventi coinvolti nello scenario. Il lato controller di eventi/consumer definisce gli scenari (contesti) in cui è possibile usare la traccia, inclusi i provider pertinenti per gli scenari specificati tra i componenti di rete. Il lato del provider di eventi include eventi di traccia di rete standardizzati provenienti da componenti diversi nello stack di rete, che possono essere correlati tramite ID attività ETW. I provider usano uno schema di rete comune che standardizza l'uso di concetti ETW, ad esempio parole chiave, livelli, attività e opcode. Lo schema definisce anche eventi comuni per molti componenti di rete, ad esempio eventi di errore, eventi di rilascio di pacchetti, eventi di schema ed eventi di transizione dello stato.