J'ai de nombreuses machines Windows 10 similaires exécutant un ensemble d'applications similaire. Un certain nombre d'applications sont des écouteurs UDP multicast. Ils ont chacun des tampons de socket massifs (ils peuvent contenir plus de 10 secondes de données). Il arrive parfois que de nombreuses applications sur une machine signalent des pertes à peu près au même moment.

Lorsque j'exécute une capture de paquet ETL, les paquets manquants dans l'application sont présents dans la capture qui s'exécute sur le même ordinateur récepteur. Les paquets de la capture ont les totaux de contrôle et les adresses MAC corrects. D'autres applications sur d'autres machines peuvent recevoir ces paquets exacts, mais peuvent abandonner d'autres paquets.

La source a envoyé une retransmission qui a été reçue par l'application. En comparant les vidages hexadécimaux dans Wireshark, les seules différences concernaient l'identification IP, la somme de contrôle IP, la somme de contrôle UDP et le bit de retransmission défini dans la partie du message relative à l'application. Les trois derniers sont certainement corrects, bien que je ne puisse pas parler pour l'IP.Identification (sauf si elle augmente par rapport à sa valeur précédente et sachant que d'autres consommateurs l'ont gérée correctement).

La capture du moniteur de performances Windows de l'appareil ne montre rien d'inhabituel classique (elle indique une faible utilisation du processeur, une faible utilisation de la mémoire, aucun écart / erreur de la carte réseau, aucune suppression de Winsock BSP).

Le pare-feu est désactivé. Il n'y a pas de connexion Internet - juste un intranet LAN. Il existe d'autres applications en cours d'exécution sur la machine, notamment des écouteurs TCP et unicast UDP.

La perte de paquets est intermittente et une très petite fraction des paquets est perdue, mais peut atteindre un million par jour. UDP est naturellement peu fiable. Mais la question est de savoir où et pourquoi ces paquets sont abandonnés.

En supposant que la capture ETL se trouve sur le pilote de la carte réseau, cela laisse le pilote de la carte réseau, le système d'exploitation, le socket et l'application. Je crois fermement que la perte est avant la prise.

Comment puis-je identifier où les paquets sont perdus? Comment puis-je trouver l'emplacement de la chute et apprendre quelle est la limite que je dépasse? Comment puis-je réduire la portée des problèmes possibles? Existe-t-il un tampon de système d'exploitation partagé pour tous les sockets sans compteur de pertes?

Merci. Des conseils seraient appréciés.

user2588666
la source