A captura de pacotes de rastreio de eventos Netsh mostra pacotes; aplicação não obtê-los

0

Tenho muitas máquinas semelhantes do Windows 10 executando um conjunto semelhante de aplicativos. Vários aplicativos são ouvintes UDP de multicast. Cada um deles tem buffers de soquete massivos (eles podem conter 10 segundos ou mais de dados). Ocasionalmente, muitos dos aplicativos em uma determinada máquina relatam perdas no mesmo período.

Quando executo uma captura de pacotes ETL, os pacotes que estão faltando no aplicativo estão presentes na captura em execução na mesma máquina de recebimento. Os pacotes na captura possuem as somas de verificação corretas e os endereços MAC corretos. Outros aplicativos em outras máquinas podem receber esses pacotes exatos, mas podem soltar outros pacotes.

A origem enviou uma retransmissão que foi recebida pelo aplicativo. Comparando os dumps hexadecimais no Wireshark, as únicas diferenças incluíam a identificação IP, a soma de verificação IP, a soma de verificação UDP e o bit de retransmissão definidos na parte em nível de aplicativo da mensagem. Os últimos três estão certamente corretos, embora eu não possa falar pelo IP.Identificação (além de aumentar de seu valor anterior e saber que outros consumidores lidaram com isso corretamente).

A captura do monitor de desempenho do Windows da máquina não mostra nada classicamente incomum (mostra baixo uso de CPU, baixo uso de memória, nenhum descarte / erro de NIC, nenhuma queda de Winsock BSP).

O firewall está desativado. Não há conexão com a internet - apenas a intranet da LAN. Existem alguns outros aplicativos em execução na máquina, incluindo ouvintes TCP e unicast UDP.

A perda de pacotes é intermitente e uma fração muito pequena de pacotes se perde, mas pode chegar a um milhão ao longo do dia. O UDP é naturalmente não confiável. Mas a questão é onde e por que esses pacotes são descartados.

Supondo que a captura de ETL esteja no driver da NIC, deixe o driver da NIC, o SO, o soquete e o aplicativo. Eu acredito strongmente que a perda é antes da tomada.

Como posso identificar onde os pacotes estão sendo perdidos? Como posso encontrar a localização da queda e saber qual é o limite que estou excedendo? Como posso limitar o escopo de possíveis problemas? Existe um buffer de sistema operacional compartilhado para todos os soquetes que não possuem um contador de perdas?

Obrigado. Qualquer dica seria apreciada.

    
por user2588666 05.03.2018 / 00:13

0 respostas