Rastreamento de rede no Windows 7: arquitetura
A ilustração a seguir mostra a arquitetura básica de rastreamento de rede no Windows 7.
O rastreamento de rede utiliza a estrutura ETW (Rastreamento de Eventos para Windows) disponível no Windows. Os componentes de rede (como Winsock, TCP/IP, NDIS, captura de pacotes e assim por diante) registram-se como provedores de rastreamento ETW e emitem eventos relacionados à atividade de rede. Qualquer atividade gravável de significância pode ser um evento registrado no ETW. O rastreamento desses componentes de rede e capturas de pacotes pode ser habilitado usando o contexto de rastreamento netsh que atua como um controlador ETW.
Os rastreamentos gerados são coletados em um arquivo ETL (Log de Rastreamento de Eventos). Esses arquivos ETL podem ser analisados usando várias ferramentas, como Monitor de Rede 3.2 e posterior, Visualizador de Eventos, conversão de rastreamento netsh ou Tracerpt.exe.
Cada evento ETW tem um cabeçalho comum em que o ETW armazena informações como as propriedades do evento, carimbos de data/hora e ID da atividade. (Para obter mais informações sobre IDs de atividade, consulte Escrevendo eventos relacionados em um cenário de ponta a ponta). A ID da atividade é usada para correlacionar eventos. No modo de usuário, as IDs de atividade são armazenadas em threads e todos os eventos registrados em um thread serão marcados automaticamente com a mesma ID de atividade. No modo kernel, a ID da atividade deve ser passada explicitamente quando um evento é registrado. Por padrão, os arquivos ETL são correlacionados a eventos de grupo em IDs de atividade específicas.
Para obter mais informações sobre Eventos do Windows e ETW, consulte Eventos do Windows.
Componentes etw no rastreamento de rede
O rastreamento de rede usa o ETW como seu mecanismo de rastreamento principal para fornecer informações sobre o que os subsistemas de rede estão fazendo. Há quatro componentes main no ETW: sessões de rastreamento de eventos, provedores de eventos, controladores de eventos e consumidores de eventos.
O buffer e o registro em log ocorrem em sessões de rastreamento de eventos, que aceitam eventos de provedores e criam arquivos de rastreamento.
Um provedor de eventos é uma entidade lógica que grava eventos em sessões ETW. Um provedor de eventos pode ser um aplicativo de modo de usuário, um aplicativo gerenciado, um driver ou qualquer outra entidade de software. Os provedores de eventos registram-se no ETW e gravam eventos de vários pontos no código invocando a API de registro em log do ETW. Devido à crescente instrumentação de eventos em muitos componentes do sistema operacional, até mesmo um aplicativo ou cenário simples no Windows conterá vários componentes que são provedores de eventos.
Um controlador de eventos inicia e interrompe sessões de rastreamento de eventos e habilita provedores. Quando um provedor de eventos é habilitado dinamicamente pelo aplicativo do controlador de eventos, o provedor envia eventos para uma sessão de rastreamento de eventos específica designada pelo controlador de eventos. Cada evento enviado pelo provedor de eventos para a sessão de rastreamento de eventos consiste em um cabeçalho fixo, que inclui metadados de evento e quaisquer dados personalizados adicionais registrados pelo provedor.
Um consumidor de eventos é um aplicativo que lê arquivos de log ou que escuta uma sessão de rastreamento de eventos para eventos em tempo real e os processa. Um exemplo de um consumidor de eventos é o Microsoft Network Monitor 3.2, que inclui a capacidade de ler e exibir arquivos de log produzidos pelo rastreamento de rede no Windows 7.
Os eventos são entregues aos consumidores de eventos em ordem cronológica e há vários aplicativos de consumidor de eventos que exibem os eventos em formatos específicos. Quando um evento é registrado em uma sessão, o ETW adiciona informações adicionais ao cabeçalho do evento, incluindo o carimbo de data/hora, a ID do processo e do thread, o número do processador e os dados de uso da CPU do thread de log. Esses dados são então passados para os consumidores de eventos, juntamente com todos os dados personalizados incluídos pelo provedor.
Espera-se que os provedores que usam as novas APIs de Log de Eventos forneçam um arquivo XML chamado manifesto do evento. Esse arquivo fornece metadados para definir todos os dados personalizados e informações de layout para os eventos gravados pelo provedor. Em seguida, um aplicativo de consumidor de uso geral usa APIs do TDH (Auxiliar de Dados de Rastreamento) para recuperar os metadados do evento, decodificar os eventos e exibi-los.
Com o rastreamento de rede no Windows 7, o lado do controlador de eventos/consumidor inclui suporte de rastreamento de ponta a ponta baseado em cenário integrado com experiências gerais de diagnóstico e suporte do Windows. Um cenário define uma coleção de provedores de eventos envolvidos no cenário. O lado do controlador de eventos/consumidor define os cenários (contextos) em que o rastreamento pode ser usado, incluindo os provedores relevantes para determinados cenários em componentes de rede. O lado do provedor de eventos inclui eventos de rastreamento de rede padronizados de diferentes componentes na pilha de rede, que podem ser correlacionados por meio de IDs de atividade ETW. Os provedores usam um esquema de rede comum que padroniza o uso de conceitos de ETW, como palavras-chave, níveis, tarefas e opcodes. O esquema também define eventos que são comuns para muitos componentes de rede, como eventos de erro, eventos de remoção de pacotes, eventos de esquema e eventos de transição de estado.