Share via


Formato del comando Pktmon

Se aplica a: Windows Server 2022, Windows Server 2019, Windows 10, Azure Stack Hub, Azure, Azure Stack HCI, versiones 21H2 y 20H2

El Monitor de paquetes (Pktmon) es una herramienta de diagnóstico de red integrada para componentes de Windows. Se puede usar para la captura de paquetes, la detección de paquetes caídos, el filtrado de paquetes y su recuento. La herramienta es especialmente útil en escenarios de virtualización, como redes de contenedor y SDN, ya que proporciona visibilidad dentro de la pila de redes. El Monitor de paquetes está disponible de serie a través del comando pktmon.exe en Windows 10 y Windows Server 2019 (versión 1809 y posteriores). Use este tema para obtener información sobre cómo entender la sintaxis, el formato de los comandos y la salida de pktmon. Para obtener una lista completa de los comandos, consulte pktmon syntax.

Inicio rápido

Use los siguientes pasos para comenzar con escenarios genéricos:

  1. Identifique el tipo de paquetes necesarios para la captura, como direcciones IP, puertos o protocolos específicos asociados al paquete.

  2. Compruebe la sintaxis para aplicar filtros de captura y aplique los filtros para los paquetes identificados en el paso anterior.

    C:\Test> pktmon filter add help
    C:\Test> pktmon filter add <filters>
    
  3. Inicie la captura y habilite el registro de paquetes.

    C:\Test> pktmon start -c
    
  4. Reproduzca el problema que se está diagnosticando. Consulte los contadores para confirmar la presencia del tráfico esperado y obtener una visión global de cómo fluyó el tráfico en la máquina.

    C:\Test> pktmon counters
    
  5. Detenga la captura y recupere los registros en formato txt para su análisis.

    C:\Test> pktmon stop
    C:\Test> pktmon etl2txt <etl file>
    

Consulte Analizar salida del Monitor de paquetes para obtener instrucciones sobre cómo analizar la salida txt.

Filtros de captura

Se recomienda encarecidamente aplicar filtros antes de iniciar cualquier captura de paquetes, ya que la solución de problemas de conectividad a un destino determinado es más fácil al centrarse en una sola secuencia de paquetes. Capturar todo el tráfico de red puede hacer que el resultado sea demasiado ruidoso para analizarlo. Para que se notifique un paquete, debe coincidir con todas las condiciones especificadas en al menos un filtro. Se admiten hasta 32 filtros a la vez.

Por ejemplo, el siguiente conjunto de filtros capturará cualquier tráfico ICMP de o a la dirección IP 10.0.0.10, así como cualquier tráfico en el puerto 53.

C:\Test> pktmon filter add -i 10.0.0.10 -t icmp
C:\Test> pktmon filter add -p 53

Funcionalidad de filtrado

  • El Monitor de paquetes admite el filtrado por direcciones MAC, direcciones IP, puertos, EtherType, protocolo de transporte e id. de VLAN.

  • El Monitor de paquetes no distinguirá entre el origen o el destino cuando se trata de direcciones MAC, direcciones IP o filtros de puerto.

  • Para filtrar aún más los paquetes TCP, se puede proporcionar una lista opcional de marcas TCP para que coincidan. Las marcas admitidas son FIN, SYN, RST, PSH, ACK, URG, ECE y CWR.

    • Por ejemplo, el siguiente filtro capturará todos los paquetes SYN enviados o recibidos por la dirección IP 10.0.0.10:
C:\Test> pktmon filter add -i 10.0.0.10 -t tcp syn
  • El Monitor de paquetes puede aplicar un filtro a los paquetes internos encapsulados, además del paquete externo si se agregó la marca [-e] a cualquier filtro. Los métodos de encapsulación admitidos son VXLAN, GRE, NVGRE e IP en IP. El puerto VXLAN personalizado es opcional y su valor predeterminado es 4789.

Para más información, consulte sintaxis de pktmon filter.

Captura de paquetes y eventos generales

El Monitor de paquetes puede capturar paquetes a través del parámetro [-c] con el comando start. Esto habilitará la captura y el registro de paquetes, así como los contadores de paquetes. Para habilitar los contadores de paquetes solo sin registrar el paquete, agregue el parámetro [-o] al comando start. Para obtener más información sobre los contadores de paquetes, consulte la sección Contadores de paquetes a continuación.

Puede seleccionar componentes para supervisar a través del parámetro [--comp]. Puede ser solo NIC o una lista de id. de componentes, y está predeterminado a todos los componentes. El uso del parámetro [--type] también permite filtrar por el estado de propagación de los paquetes (paquetes perdidos o que fluyen).

Junto con la captura de paquetes, el Monitor de paquetes permite la captura de eventos generales como eventos ETW y WPP declarando el parámetro [-t] y especificando los proveedores a través del parámetro [-p]. Use "pktmon stop" para detener toda la recopilación de datos.

Por ejemplo, el siguiente comando capturará paquetes solo de los adaptadores de red:

C:\Test> pktmon start -c --comp nics

El siguiente comando capturará solo los paquetes perdidos que pasen por los componentes 4 y 5, y los registrará:

C:\Test> pktmon start -c --comp 4,5 --type drop

Este comando capturará paquetes y eventos de registro del proveedor "Microsoft-Windows-TCPIP":

C:\Test> pktmon start --capture --trace -p Microsoft-Windows-TCPIP

Funcionalidad de registro de paquetes

  • El Monitor de paquetes admite varios modos de registro:

    • Circular: los paquetes nuevos sobrescriben los más antiguos cuando se alcanza el tamaño máximo del archivo. Este es el modo de registro predeterminado.
    • Varios archivos: se crea un nuevo archivo de registro cuando se alcanza el tamaño máximo del archivo. Los archivos de registro se numeran secuencialmente: PktMon1.etl, PktMon2.etl, etc. Aplique este modo de registro para mantener todo el registro, pero tenga cuidado con el uso del almacenamiento. Nota: use la marca de tiempo de creación de archivos de cada archivo de registro como indicación de un período de tiempo específico en la captura.
    • En tiempo real: los paquetes se muestran en pantalla en tiempo real. No se crea ningún archivo de registro. Use Ctrl+C para detener la supervisión.
    • Memoria: los eventos se escriben en un búfer de memoria circular. El tamaño del búfer se especifica a través del parámetro [-s]. El contenido del búfer se escribe en un archivo de registro después de detener la captura. Use este modo de registro para escenarios muy ruidosos para capturar una gran cantidad de tráfico en una cantidad muy corta de tiempo en el búfer de memoria. El uso de cualquier otro modo de registro puede hacer que se pierda parte del tráfico.
  • Especifique la cantidad del paquete que se va a registrar a través del parámetro [-p]. Registre el paquete completo de cada paquete independientemente de su tamaño estableciendo ese parámetro en 0. El valor predeterminado es 128 bytes, que deberían incluir las cabeceras de la mayoría de los paquetes.

  • Especifique el tamaño del archivo de registro mediante el parámetro [-s]. Este será el tamaño máximo del archivo en un modo de registro circular antes de que el Monitor de paquetes comience a sobrescribir los paquetes más antiguos con los más recientes. También será el tamaño máximo de cada archivo en el modo de registro de varios archivos antes de que el Monitor de paquetes cree un nuevo archivo para registrar los siguientes paquetes. También puede usar este parámetro para establecer el tamaño del búfer para el modo de registro de memoria.

Para más información, consulte sintaxis de pktmon start.

Análisis y formato de paquetes

El Monitor de paquetes genera archivos de registro en formato ETL. Hay varias maneras de dar formato al archivo ETL para su análisis:

  • Convierta el registro en formato de texto (la opción predeterminada) y analícelo con la herramienta de editor de texto como TextAnalysisTool.NET. Los datos del paquete se mostrarán en formato TCPDump. Siga la guía siguiente para aprender a analizar la salida en el archivo de texto.
  • Convierta el registro a formato pcapng para analizarlo usando Wireshark*
  • Abra el archivo ETL con Monitor de red*

Nota:

*Use los hipervínculos anteriores para obtener información sobre cómo analizar los registros del Monitor de paquetes en Wireshark y Monitor de red.

Para más información, consulte sintaxis de pktmon format.

Análisis de la salida del Monitor de paquetes

El Monitor de paquetes captura una instantánea del paquete por cada componente de la pila de red. En consecuencia, habrá varias instantáneas de cada paquete (representadas en la imagen siguiente por las líneas del recuadro azul). Cada una de estas instantáneas de paquetes se representa mediante un par de líneas (cuadros rojos y verdes). Hay al menos una línea que incluye algunos datos sobre la instancia de paquete a partir de la marca de tiempo. Justo después, hay al menos una línea (en negrita en la imagen siguiente) para mostrar el paquete sin formato analizado en formato de texto (sin una marca de tiempo); podría ser varias líneas si el paquete está encapsulado, como el paquete en el cuadro verde.

Example of Packet Monitor's txt log output

Para correlacionar todas las instantáneas de los mismos paquetes, supervise los valores PktGroupId y PktNumber (resaltados en amarillo); todas las instantáneas del mismo paquete deberían tener estos 2 valores en común. El valor Apariencia (resaltado en azul) actúa como contador para cada instantánea posterior del mismo paquete. Por ejemplo, la primera instantánea del paquete (donde el paquete apareció por primera vez en la pila de red) tiene el valor 1 de aparición, la siguiente instantánea tiene el valor 2, y así sucesivamente.

Cada instantánea de paquete tiene un id. de componente (subrayado en la imagen superior) que indica el componente asociado a la instantánea. Para resolver el nombre del componente, y los parámetros, busque el id. de este componente en la lista de componentes en la parte inferior del archivo de registro. En la imagen inferior se muestra una parte de la tabla de componentes resaltando el "Componente 1" en amarillo (se trata del componente en el que se capturó la última instantánea anterior). Los componentes con 2 bordes informarán de 2 instantáneas en cada borde (como las instantáneas con Appearance 3 y Appearance 4, por ejemplo, en la imagen anterior).

En la parte inferior de cada archivo de registro, se enumera la lista de filtros como se muestra en la imagen siguiente (resaltada en azul). Cada filtro muestra el parámetro o parámetros especificados (Protocolo ICMP en el ejemplo siguiente), y ceros para el resto de parámetros.

Example of Packet Monitor's txt log output components

Para los paquetes perdidos, la palabra "drop" aparece antes de cualquiera de las líneas que representan la instantánea en la que se perdió el paquete. Cada paquete perdido proporciona también un valor dropReason. Este parámetro dropReason proporciona una breve descripción del motivo de la pérdida del paquete; por ejemplo, error de coincidencia de MTU, VLAN filtrada, etc.

Example of a dropped packet log

Contadores de paquetes

Los contadores del Monitor de paquetes proporcionan una visión global del tráfico de red en toda la pila de red sin necesidad de analizar un registro, lo que puede resultar un proceso costoso. Examine los patrones de tráfico consultando los contadores de paquetes con pktmon counters tras iniciar la captura del Monitor de paquetes. Use pktmon reset para restablecer los contadores a cero o use pktmon stop para detener la supervisión.

  • Los contadores se organizan por pilas de enlace con los adaptadores de red en la parte superior y los protocolos en la inferior.
  • Tx/Rx: Los contadores están separados en dos columnas para las direcciones de Envío (Tx) y Recepción (Rx).
  • Bordes: los componentes informan de la propagación de paquetes cuando un paquete cruza el límite del componente (borde). Cada componente puede tener uno o varios bordes. Los controladores de minipuerto suelen tener un solo borde superior, los de protocolo tienen un solo borde inferior y los de filtro tienen bordes superiores e inferiores.
  • Pérdidas: los contadores de paquetes perdidos se notifican en la misma tabla.

En el siguiente ejemplo, se inició una nueva captura y después se usó el comando pktmon counters para consultar los contadores antes de detener la captura. Los contadores muestran un solo paquete saliendo de la pila de red, desde la capa de protocolo hasta el adaptador físico de red, y su respuesta volviendo en la otra dirección. Si faltó el ping o la respuesta, es fácil detectarlo a través de los contadores.

Example of a packet counter with perfect flow

En el siguiente ejemplo, las pérdidas se registran en la columna " Counter" (contador). Recupere el Motivo de última pérdida de cada componente solicitando los datos de los contadores en formato JSON usando pktmon counters --json o analice el registro de salida para obtener información más detallada.

Example of a packet counter with a dropped packet

Como se muestra a través de estos ejemplos, los contadores pueden proporcionar mucha información a través de un diagrama que puede analizarse con un simple vistazo.

Para más información, consulte sintaxis de pktmon counters.

Diseño de la pila de redes

Examine la distribución de la pila de redes mediante el comando pktmon list.

Example of the networking stack layout

El comando muestra los componentes de red (controladores) ordenados por enlaces de adaptadores.

Un enlace típico consta de:

  • Una sola tarjeta de interfaz de red (NIC)
  • Algunos controladores de filtro (posiblemente cero)
  • Uno o varios controladores de protocolo (TCP/IP u otros)

Cada componente se identifica de forma única mediante un id. de componente del Monitor de paquetes, que se usa para seleccionar componentes individuales para su supervisión.

Nota:

Los id. no son persistentes y pueden cambiar al reiniciar el sistema y al reiniciar el controlador del Monitor de paquetes.

Algunos id. que aparecen en la salida del Monitor de paquetes pueden no aparecer en la lista de componentes. Esto se debe a la agregación de algunos componentes en un único id. para facilitar su selección y visualización. Para encontrar los id. originales de estos componentes, use pktmon list --json y busque la propiedad SecondaryId en la salida.

Para más información, vea sintaxis de pktmon list.