Die Netsh-Ereignisverfolgungs-Paketerfassung zeigt Pakete; Anwendung bekommen sie nicht

319
user2588666

Ich habe viele ähnliche Windows 10-Computer, auf denen eine ähnliche Gruppe von Anwendungen ausgeführt wird. Eine Reihe von Anwendungen sind Multicast-UDP-Listener. Sie verfügen jeweils über massive Socket-Puffer (sie können Daten von mehr als 10 Sekunden halten). Gelegentlich melden viele Anwendungen auf einer bestimmten Maschine etwa zur selben Zeit einen Verlust.

Wenn ich eine ETL-Paketerfassung durchführe, sind die in der Anwendung fehlenden Pakete in der Erfassung vorhanden, die auf demselben empfangenden Computer ausgeführt wird. Die Pakete im Capture haben die richtigen Prüfsummen und die richtigen MAC-Adressen. Andere Anwendungen auf anderen Computern können diese exakten Pakete empfangen, andere Pakete jedoch fallen lassen.

Die Quelle hat eine erneute Übertragung gesendet, die von der Anwendung empfangen wurde. Beim Vergleich der Hex-Dumps in Wireshark waren die einzigen Unterschiede die IP-Identifikation, die IP-Prüfsumme, die UDP-Prüfsumme und das im App-Level der Nachricht festgelegte Neuübertragungsbit. Die letzten drei sind sicherlich richtig, obwohl ich nicht für die IP.Identification sprechen kann (abgesehen davon, dass sie von ihrem vorherigen Wert zunimmt und weiß, dass andere Verbraucher sie richtig handhaben).

Die Windows-Leistungsmonitorerfassung des Geräts zeigt nichts Klassisch Ungewöhnliches (es zeigt eine geringe CPU-Auslastung, wenig Speicherauslastung, keine NIC-Verwerfungen / Fehler, keine Winsock-BSP-Abbrüche).

Die Firewall ist deaktiviert. Es gibt keine Internetverbindung - nur LAN-Intranet. Auf dem Computer werden einige andere Anwendungen ausgeführt, darunter TCP- und Unicast-UDP-Listener.

Der Paketverlust ist zeitweilig und ein sehr kleiner Bruchteil der Pakete geht verloren, kann sich aber im Laufe des Tages auf eine Million belaufen. UDP ist von Natur aus unzuverlässig. Die Frage ist jedoch, wo und warum diese Pakete verworfen werden.

Unter der Annahme, dass sich die ETL-Erfassung beim NIC-Treiber befindet, verbleiben der NIC-Treiber, das Betriebssystem, der Socket und die Anwendung. Ich glaube fest daran, dass der Verlust vor der Steckdose liegt.

Wie kann ich feststellen, wo die Pakete verloren gehen? Wie kann ich den Ort der Ablage finden und erfahren, welche Grenze ich überschritten habe? Wie kann ich den Umfang möglicher Probleme einschränken? Gibt es einen gemeinsamen Betriebssystempuffer für alle Sockets, für den kein Verlustzähler vorhanden ist?

Vielen Dank. Irgendwelche Tipps wären dankbar.

0

0 Antworten auf die Frage