Ich habe viele ähnliche Windows 10-Computer, auf denen ähnliche Anwendungen ausgeführt werden. Eine Reihe von Anwendungen sind Multicast-UDP-Listener. Sie haben jeweils massive Socket-Puffer (sie können 10 s + an Daten aufnehmen). Gelegentlich melden viele Anwendungen auf einem bestimmten Computer etwa zur gleichen Zeit einen Verlust.
Wenn ich eine ETL-Paketerfassung durchführe, sind die in der Anwendung fehlenden Pakete in der Erfassung enthalten, die auf demselben empfangenden Computer ausgeführt wird. Die Pakete in der Erfassung haben die richtigen Prüfsummen und die richtigen MAC-Adressen. Andere Anwendungen auf anderen Computern empfangen möglicherweise genau diese Pakete, verwerfen jedoch möglicherweise andere Pakete.
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-Identifizierung, die IP-Prüfsumme, die UDP-Prüfsumme und das im Abschnitt der Nachricht auf App-Ebene gesetzte Bit für die erneute Übertragung. Die letzten drei sind sicherlich richtig, obwohl ich nicht für die IP.Identification sprechen kann (abgesehen davon, dass sie sich von ihrem vorherigen Wert erhöht und andere Verbraucher damit richtig umgegangen sind).
Das Windows-Systemmonitor-Capture des Computers zeigt nichts Klassisch Ungewöhnliches (es zeigt eine geringe CPU-Auslastung, eine geringe Speicherauslastung, keine NIC-Discards / -Fehler, keine Winsock-BSP-Drops).
Die Firewall ist deaktiviert. Es gibt keine Internetverbindung - nur ein LAN-Intranet. Auf dem Computer werden noch einige andere Apps ausgeführt, darunter TCP- und Unicast-UDP-Listener.
Der Paketverlust tritt nur sporadisch auf, und ein sehr kleiner Teil der Pakete geht verloren, kann sich aber über den Tag auf eine Million belaufen. UDP ist natürlich unzuverlässig. Aber die Frage ist, wo und warum diese Pakete verworfen werden.
Angenommen, die ETL-Erfassung befindet sich im NIC-Treiber, bleiben der NIC-Treiber, das Betriebssystem, der Socket und die Anwendung übrig. Ich glaube fest daran, dass der Verlust vor der Steckdose liegt.
Wie kann ich feststellen, wo die Pakete verloren gehen? Wie finde ich den Ort des Abwurfs und erfahre, welches Limit ich überschreite? Wie kann ich den Umfang möglicher Probleme einschränken? Gibt es einen gemeinsam genutzten Betriebssystempuffer für alle Sockets, die keinen Verlustzähler haben?
Vielen Dank. Irgendwelche Tipps wäre dankbar.
quelle