Mam wiele podobnych komputerów z systemem Windows 10 z podobnym zestawem aplikacji. Szereg aplikacji to multiemisje nasłuchujące UDP. Każdy z nich ma ogromne bufory gniazd (mogą pomieścić 10 sekund + danych). Czasami wiele aplikacji na danej maszynie zgłasza utratę w tym samym czasie.
Po uruchomieniu przechwytywania pakietów ETL pakiety, których brakuje w aplikacji, są obecne w przechwytywaniu działającym na tym samym komputerze odbierającym. Pakiety w przechwytywaniu mają poprawne sumy kontrolne i poprawne adresy MAC. Inne aplikacje na innych komputerach mogą otrzymywać te dokładne pakiety, ale mogą upuszczać inne pakiety.
Źródło wysłało retransmisję odebraną przez aplikację. Porównując zrzuty heksadecymalne w Wiresharku, jedyne różnice obejmowały identyfikację IP, sumę kontrolną IP, sumę kontrolną UDP i bit retransmisji ustawiony w części komunikatu na poziomie aplikacji. Te ostatnie trzy są z pewnością poprawne, chociaż nie mogę mówić o IP.Identification (poza tym, że zwiększa się ono z poprzedniej wartości i wiedząc, że inni konsumenci obchodzili się z nim prawidłowo).
Przechwytywanie monitora wydajności systemu Windows maszyny nie pokazuje niczego klasycznie nietypowego (pokazuje niskie użycie procesora, niskie zużycie pamięci, brak odrzutów / błędów karty sieciowej, brak spadków BSP Winsock).
Zapora jest wyłączona. Nie ma połączenia z Internetem - tylko intranet LAN. Na komputerze działają inne aplikacje, w tym detektory TCP i unicastowe UDP.
Utrata pakietów jest sporadyczna i bardzo niewielka część pakietów zostaje utracona, ale może wynosić milion w ciągu dnia. UDP jest oczywiście zawodny. Ale pytanie brzmi, gdzie i dlaczego te pakiety są odrzucane.
Zakładając, że przechwytywanie ETL jest w sterowniku NIC, pozostawia sterownik NIC, system operacyjny, gniazdo i aplikację. Mocno wierzę, że strata jest przed gniazdem.
Jak mogę zidentyfikować, gdzie zagubione są pakiety? Jak mogę znaleźć lokalizację kropli i dowiedzieć się, jaki jest limit, który przekraczam? Jak mogę zawęzić zakres możliwych problemów? Czy istnieje wspólny bufor systemu operacyjnego dla wszystkich gniazd, które nie mają licznika strat?
Dzięki. Wszelkie wskazówki będą mile widziane.
źródło