Rozwiązywanie problemów z opóźnieniami sieci za pomocą Wireshark

Opóźnienie w sieci to czas, jaki upływa od wysłania żądania lub danych ze źródła do ich dotarcia do celu w obrębie infrastruktury sieciowej. Przyjrzyjmy się, jak można zdiagnozować i naprawić problemy związane z opóźnieniami w sieci.

Każda akcja, która wymaga interakcji z siecią, taka jak załadowanie strony internetowej, kliknięcie odnośnika lub uruchomienie aplikacji czy gry online, stanowi odrębną operację. Aktywność użytkownika generuje żądanie, a czas odpowiedzi aplikacji internetowej to okres, który upływa, zanim aplikacja odpowie na to żądanie.

Wspomniane opóźnienie czasowe uwzględnia również czas, którego serwer potrzebuje na przetworzenie żądania. W efekcie, definiuje się je jako czas podróży w obie strony – okres, w którym żądanie jest rejestrowane, przetwarzane, a następnie odsyłane do użytkownika, gdzie następuje jego dekodowanie.

Określenie „niskie opóźnienie” charakteryzuje relatywnie krótkie opóźnienia w transferze danych. Z kolei duże opóźnienia lub nadmierna latencja są niepożądane, ponieważ znacząco obniżają komfort użytkowania.

Jak usunąć opóźnienia w sieci?

W Internecie dostępna jest szeroka gama narzędzi i aplikacji służących do analizy i eliminacji problemów sieciowych. Niektóre z nich są płatne, a inne udostępniane bezpłatnie. Warto jednak zwrócić uwagę na Wireshark – oprogramowanie open-source na licencji GPL, które umożliwia przechwytywanie pakietów danych w czasie rzeczywistym. Wireshark jest jednym z najpopularniejszych i najczęściej stosowanych analizatorów protokołów sieciowych na świecie.

Ułatwia on przechwytywanie pakietów sieciowych i przedstawia je w szczegółowy sposób. Te pakiety można wykorzystać do analizy na żywo lub offline, po ich przechwyceniu. Aplikacja umożliwia wnikliwe badanie ruchu sieciowego, jego filtrowanie i analizę w celu identyfikacji przyczyn problemów, wspierając tym samym analizę i bezpieczeństwo sieci.

Jakie są przyczyny opóźnień w sieci?

Istnieje kilka głównych czynników, które mogą powodować spowolnienie sieci, w tym:

  • Wysoka latencja
  • Zależności aplikacji
  • Utrata pakietów
  • Urządzenia pośredniczące
  • Nieoptymalne rozmiary okien

W dalszej części artykułu przyjrzymy się każdej z tych przyczyn opóźnień sieciowych i omówimy metody rozwiązywania problemów przy użyciu Wireshark.

Diagnostyka z Wireshark

Wysoka latencja

Wysoka latencja to czas, jaki upływa, zanim dane zostaną przesłane z jednego punktu sieciowego do drugiego. Duża latencja ma znaczący wpływ na komunikację sieciową. Poniżej, jako przykład, omówimy czas pobierania pliku na trasie o dużej latencji. Czas podróży w obie strony może często przekroczyć jedną sekundę, co jest nieakceptowalne.

  • W Wireshark przejdź do Statystyk.
  • Wybierz opcję Wykres strumienia TCP.
  • Wybierz wykres czasu podróży w obie strony, aby sprawdzić, ile czasu zajmuje pobranie pliku.

Wireshark służy do obliczania czasu podróży w obie strony, aby zweryfikować, czy to on jest przyczyną problemów z wydajnością sieciowej komunikacji TCP (Transmission Control Protocol). Protokół TCP jest szeroko wykorzystywany w różnych zastosowaniach, takich jak przeglądanie stron internetowych, przesyłanie danych, transfer plików i wiele innych. W wielu przypadkach system operacyjny można dostroić, aby działał efektywniej w warunkach wysokiej latencji, szczególnie gdy hosty pracują pod kontrolą systemu Windows XP.

Zależności aplikacji

Niektóre aplikacje są zależne od innych aplikacji, procesów lub komunikacji z zewnętrznymi hostami. Przykładowo, aplikacja bazodanowa może wymagać łączenia się z innymi serwerami w celu pobrania elementów bazy danych. W takich przypadkach niska wydajność tych serwerów może skutkować obniżeniem czasu ładowania aplikacji lokalnej.

Weźmy pod uwagę proces przeglądania stron internetowych, gdzie serwer docelowy odwołuje się do wielu innych witryn. Na przykład, aby wyświetlić stronę główną www.espn.com, przeglądarka musi skontaktować się z 16 hostami dostarczającymi reklamy i treści.

Na powyższym zrzucie ekranu z Wireshark okno „HTTP Load Distribution” pokazuje listę wszystkich serwerów, z których korzysta strona główna www.espn.com.

Utrata pakietów

Jednym z powszechniejszych problemów w sieciach jest utrata pakietów. Dochodzi do niej, gdy pakiety danych nie są prawidłowo dostarczane od nadawcy do odbiorcy przez sieć. Gdy użytkownik odwiedza stronę internetową i rozpoczyna pobieranie jej elementów, pominięte pakiety skutkują retransmisjami, co z kolei zwiększa niezawodność pobierania, ale spowalnia cały proces.

Ponadto, gdy aplikacja korzysta z protokołu TCP, utrata pakietów ma wyjątkowo negatywny wpływ. Gdy połączenie TCP wykryje zgubiony pakiet, przepustowość automatycznie się obniża, aby skompensować problemy sieciowe.

Następnie przepustowość powoli wzrasta do bardziej akceptowalnej wartości, dopóki nie zostanie utracony kolejny pakiet, co znowu powoduje znaczne zmniejszenie prędkości. Pobieranie dużych plików, które w normalnych warunkach powinno przebiegać sprawnie, znacznie traci z powodu utraty pakietów.

Jak wygląda utrata pakietów? To zależy. Utrata pakietów może przybierać dwie formy, gdy aplikacja działa w oparciu o TCP. W jednym przypadku, odbiorca monitoruje pakiety na podstawie ich numerów sekwencyjnych i wykrywa brakujący pakiet. Klient wysyła trzy żądania ponownej transmisji (duplikaty ACK), co skutkuje ponownym wysłaniem. W drugim przypadku, gdy nadawca widzi, że odbiorca nie potwierdził odbioru pakietu danych, przekracza limit czasu i ponownie wysyła pakiet danych.

Wireshark wizualnie, poprzez kolorowanie, wskazuje na przeciążenie sieci, gdzie duplikaty ACK powodują retransmisję problematycznego ruchu. Duża liczba duplikatów ACK sugeruje utratę pakietów i znaczące opóźnienia w sieci.

Aby poprawić wydajność sieci, kluczowe jest precyzyjne zlokalizowanie miejsca utraty pakietów. Gdy wystąpi utrata pakietów, za pomocą Wireshark analizujemy poszczególne etapy transmisji, aż utrata pakietów przestanie być widoczna. Wtedy jesteśmy w punkcie wystąpienia utraty pakietu i wiemy, gdzie skierować nasze działania diagnostyczne.

Urządzenia pośredniczące

Urządzeniami pośredniczącymi są elementy infrastruktury sieciowej, takie jak przełączniki, routery i zapory ogniowe, które dokonują wyboru co do przekazywania danych. W przypadku utraty pakietów, to te urządzenia należy zbadać jako potencjalne przyczyny.

Te elementy infrastruktury mogą generować dodatkowe opóźnienia na trasie. Przykładowo, jeśli włączona jest priorytetyzacja ruchu, możemy zaobserwować dodatkowe opóźnienia w przepływie o niskim priorytecie.

Nieefektywne rozmiary okien

Oprócz systemu operacyjnego Microsoft, w sieci TCP/IP istnieją inne „okna”.

  • Okno przesuwne
  • Okno odbiornika
  • Okno kontroli przeciążenia

Te okna mają wpływ na wydajność komunikacji sieciowej w oparciu o protokół TCP. Przyjrzyjmy się każdemu z tych okien i jego oddziaływaniu na przepustowość sieci.

Okno przesuwne

Okno przesuwne służy do rozgłaszania kolejnych segmentów TCP w sieci po potwierdzeniu danych. W miarę otrzymywania potwierdzeń przesłanych fragmentów danych, okno przesuwne się powiększa. Można przesyłać coraz więcej danych, dopóki nie wystąpią straty w sieci. W przypadku utraty pakietu okno przesuwne się kurczy, ponieważ sieć nie jest w stanie obsłużyć większej ilości danych.

Okno odbiornika

Okno odbiornika w stosie TCP to przestrzeń buforowa. Otrzymane dane są przechowywane w tej przestrzeni, do czasu ich odebrania przez aplikację. W sytuacji, gdy aplikacja nie nadąża z odczytywaniem danych, okno odbiornika się zapełnia, co ostatecznie prowadzi do stanu „zerowego okna”. Wtedy cała transmisja do hosta musi zostać zatrzymana, a przepustowość spada do zera. Mechanizm skalowania okna (RFC 1323) pozwala hostowi na zwiększenie rozmiaru okna odbiornika, zmniejszając tym samym ryzyko wystąpienia stanu zerowego okna.

Powyższy zrzut ekranu ilustruje 32-sekundowe opóźnienie w komunikacji sieciowej, spowodowane scenariuszem zerowego okna.

Okno kontroli przeciążenia

Okno kontroli przeciążenia definiuje maksymalną ilość danych, jaką sieć może obsłużyć. Na tę wartość wpływa szybkość transmisji nadawcy, poziom utraty pakietów w sieci oraz rozmiar okna odbiorcy. W trakcie prawidłowej komunikacji okno przeciążenia stale rośnie, aż do zakończenia transferu danych lub osiągnięcia górnej granicy ustalonej przez aktualny stan sieci. Każde nowe połączenie rozpoczyna proces negocjacji rozmiaru okna od nowa.

Wskazówki dotyczące sprawnej sieci

  • Zacznij używać Wireshark jako narzędzia pierwszej pomocy do szybkiej i skutecznej identyfikacji źródeł problemów z wydajnością sieci.
  • Zidentyfikuj źródło opóźnień w ścieżce sieciowej i, jeśli to możliwe, zredukuj je do akceptowalnego poziomu.
  • Zlokalizuj i wyeliminuj źródło utraty pakietów.
  • Sprawdź rozmiar okna transmisji i, jeśli to możliwe, zoptymalizuj go.
  • Przeanalizuj wydajność urządzeń pośredniczących, aby upewnić się, czy nie generują one opóźnień lub nie porzucają pakietów.
  • Optymalizuj aplikacje tak, aby mogły obsługiwać większe ilości danych i, jeśli to możliwe, pobierać dane z okna odbiornika.

Podsumowanie 👨‍🏫

Omówiliśmy główne czynniki wpływające na problemy z wydajnością sieci, ale nie można pomijać aspektu zrozumienia mechanizmów komunikacji sieciowej. Wireshark zapewnia wgląd w sieć, niczym zdjęcia rentgenowskie lub tomografia komputerowa, umożliwiając szybką i trafną diagnostykę. To narzędzie stało się nieodzowne w lokalizowaniu i diagnozowaniu problemów sieciowych.

Teraz, uzbrojeni w wiedzę o filtrach i narzędziach Wireshark, możecie sprawnie analizować i rozwiązywać problemy z wydajnością sieci. 👍


newsblog.pl