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

Opóźnienie sieci to opóźnienie w przesyłaniu żądań lub danych ze źródła do miejsca docelowego w ekosystemie sieciowym. Zobaczmy, jak możesz rozwiązać problemy z opóźnieniem sieci.

Każda czynność wymagająca korzystania z sieci, taka jak otwieranie strony internetowej, kliknięcie łącza lub otwieranie aplikacji i granie w grę online, nazywana jest czynnością. Aktywność użytkownika to żądanie, a czas odpowiedzi aplikacji internetowej to czas potrzebny na odpowiedź na to żądanie.

To opóźnienie czasowe obejmuje również czas potrzebny serwerowi na wykonanie żądania. W rezultacie określa się go jako podróż w obie strony – czas potrzebny do zarejestrowania, przetworzenia żądania, a następnie odebrania go przez użytkownika, gdzie jest ono dekodowane.

Termin „niskie opóźnienie” odnosi się do stosunkowo krótkich opóźnień w przesyłaniu danych. Z drugiej strony duże opóźnienia lub nadmierna latencja są niepożądane, ponieważ pogarszają wrażenia użytkownika.

Jak naprawić opóźnienie sieci?

W Internecie dostępnych jest wiele narzędzi i programów do analizowania i rozwiązywania problemów z siecią. Niektóre są płatne, a niektóre bezpłatne. Istnieje jednak narzędzie tzw Wireshark, która jest aplikacją typu open source i na licencji GPL, służącą do przechwytywania pakietów danych w czasie rzeczywistym. Wireshark to najpopularniejszy i najczęściej używany analizator protokołów sieciowych na świecie.

Pomoże ci w przechwytywaniu pakietów sieciowych i wyświetlaniu ich szczegółowo. Możesz użyć tych pakietów do analizy w czasie rzeczywistym lub offline po przechwyceniu pakietów sieciowych. Ta aplikacja pozwala badać ruch sieciowy pod mikroskopem, filtrować go i drążyć w celu znalezienia źródła problemów, pomagając w analizie sieci, a ostatecznie w bezpieczeństwie sieci.

Co powoduje opóźnienie sieci?

Kilka głównych przyczyn powolnej łączności sieciowej, w tym:

  • Duże opóźnienie
  • Zależności aplikacji
  • Utrata pakietu
  • Urządzenia przechwytujące
  • Nieefektywne rozmiary okien

W tym artykule przyjrzymy się każdej przyczynie opóźnienia sieci i sposobom rozwiązania problemów z Wireshark.

Badanie za pomocą Wireshark

Duże opóźnienie

Duże opóźnienie odnosi się do czasu potrzebnego do przesłania danych z jednego punktu końcowego do drugiego. Wpływ dużych opóźnień na komunikację sieciową jest ogromny. Na poniższym diagramie jako przykład przyjrzymy się czasowi pobierania pliku w obie strony na ścieżce o dużym opóźnieniu. Czas opóźnienia w obie strony może często przekraczać jedną sekundę, co jest niedopuszczalne.

  • Przejdź do statystyk Wireshark.
  • Wybierz opcję Wykres strumienia TCP.
  • Wybierz wykres czasu podróży w obie strony, aby dowiedzieć się, ile czasu zajmuje pobranie pliku.

Wireshark służy do obliczania czasu podróży w obie strony na ścieżce, aby sprawdzić, czy jest to przyczyną wadliwej wydajności sieci komunikacyjnej protokołu TCP (Transmission Control Protocol). Protokół TCP jest używany w różnych aplikacjach, w tym w surfowaniu po Internecie, transmisji danych, protokole przesyłania plików i wielu innych. W wielu przypadkach system operacyjny można zmodyfikować, aby działał wydajniej na kanałach o dużym opóźnieniu, zwłaszcza gdy hosty używają systemu Windows XP.

Zależności aplikacji

Niektóre aplikacje są zależne od innych aplikacji, procesów lub komunikacji z hostem. Załóżmy na przykład, że aplikacja bazodanowa polega na łączeniu się z innymi serwerami w celu pobrania elementów bazy danych. W takim przypadku niska wydajność na tych innych serwerach może pogorszyć czas ładowania aplikacji lokalnej.

Weźmy na przykład przeglądanie sieci Web, w którym serwer docelowy odwołuje się do kilku innych witryn internetowych. Na przykład, aby załadować główną stronę witryny, www.espn.com, musisz najpierw odwiedzić 16 hostów, które dostarczają reklamy i treści dla głównej strony www.espn.com.

Na powyższym rysunku okno HTTP Load Distribution w programie Wireshark wyświetla listę wszystkich serwerów używanych przez stronę główną www.espn.com.

Utrata pakietu

Jednym z najczęstszych problemów w sieciach jest utrata pakietów. Utrata pakietów występuje, gdy pakiety danych nie są prawidłowo dostarczane od nadawcy do odbiorcy przez Internet. Kiedy użytkownik odwiedza witrynę internetową i zaczyna pobierać elementy witryny, pominięte pakiety powodują retransmisje, zwiększając pewność pobrania plików internetowych i spowalniając ogólny proces pobierania.

Ponadto, gdy aplikacja korzysta z protokołu TCP, brakujące pakiety mają szczególnie negatywny wpływ. Gdy połączenie TCP wykryje porzucony pakiet, przepustowość automatycznie spada, aby zrekompensować problemy z siecią.

Stopniowo poprawia się do bardziej akceptowalnego tempa, aż do odrzucenia następnego pakietu, co powoduje znaczne zmniejszenie przepustowości danych. Pobieranie dużych plików, które w innym przypadku powinny przebiegać bezproblemowo przez sieć, znacznie cierpi z powodu utraty pakietów.

Jak wygląda utrata pakietu? Jest to dyskusyjne. Utrata pakietów może przybrać dwie formy, jeśli program działa przez TCP. W jednym przykładzie odbiornik monitoruje pakiety na podstawie ich numerów sekwencyjnych i wykrywa brakujący pakiet. Klient wysyła trzy żądania brakującego pakietu (podwójne potwierdzenia), co skutkuje ponownym wysłaniem. Gdy nadawca zauważy, że odbiorca nie potwierdził odbioru pakietu danych, nadawca przekracza limit czasu i ponownie przesyła pakiet danych.

Wireshark wskazuje, że wystąpiło przeciążenie sieci, a wielokrotne potwierdzenia powodują retransmisję problematycznego ruchu poprzez kodowanie go kolorami. Duża liczba zduplikowanych potwierdzeń wskazuje na utratę pakietów i znaczne opóźnienie w sieci.

Aby poprawić szybkość sieci, kluczowe znaczenie ma dokładne określenie miejsca utraty pakietów. Kiedy następuje utrata pakietów, przesuwamy Wireshark wzdłuż ścieżki, aż utrata pakietów nie będzie już widoczna. W tej chwili jesteśmy „na górze” punktu zrzutu pakietu, więc wiemy, gdzie skoncentrować nasze wysiłki związane z debugowaniem.

Urządzenia przechwytujące

Policjanci ruchu sieciowego to urządzenia łączące, które dokonują wyborów dotyczących przekazywania, takie jak przełączniki, routery i zapory ogniowe. W przypadku utraty pakietów należy zbadać te urządzenia jako prawdopodobną przyczynę.

Te urządzenia łączące mogą dodać do ścieżki opóźnienie. Na przykład, jeśli priorytetyzacja ruchu jest włączona, możemy być świadkami wprowadzenia dodatkowego opóźnienia do strumienia o niskim priorytecie.

Nieefektywne rozmiary okien

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

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

Okna te składają się na wydajność komunikacji sieci opartej na protokole TCP. Zacznijmy od zdefiniowania każdego z tych okien i ich wpływu na przepustowość sieci.

Okno przesuwne

Po potwierdzeniu danych przesuwane okno jest wykorzystywane do rozgłaszania kolejnych segmentów TCP w sieci. Nadawca otrzymuje potwierdzenia dla przesłanych fragmentów danych, przesuwane okno rozwija się. Dopóki w sieci nie ma utraconych transmisji, można przesyłać większe ilości danych. Kiedy pakiet zostaje utracony, przesuwane okno kurczy się, ponieważ sieć nie jest w stanie poradzić sobie ze zwiększoną ilością danych na linii.

Okno odbiornika

Okno odbiornika stosu TCP jest przestrzenią bufora. Po odebraniu danych są one przechowywane w tej przestrzeni buforowej, dopóki aplikacja ich nie odbierze. Okno odbiornika zapełnia się, gdy aplikacja nie nadąża za szybkością odbierania, co ostatecznie prowadzi do scenariusza „okna zerowego”. Cała transmisja danych do hosta musi zostać zatrzymana, gdy odbiornik ogłosi stan okna zerowego. Przepustowość spada do zera. Metoda znana jako skalowanie okna (RFC 1323) umożliwia hostowi zwiększenie rozmiaru okna odbiornika i zmniejszenie prawdopodobieństwa scenariusza zerowego okna.

Powyższy rysunek przedstawia 32-sekundowe opóźnienie w komunikacji sieciowej spowodowane scenariuszem zerowego okna.

Okno zatoru

Okno przeciążenia określa maksymalną ilość danych, które sieć może obsłużyć. Szybkość transmisji pakietu nadawcy, wskaźnik utraty pakietów sieciowych i rozmiar okna odbiorcy składają się na tę liczbę. Okno przeciążenia stale rośnie podczas prawidłowej komunikacji sieciowej, aż do zakończenia transferu lub osiągnięcia „pułapu” ustalonego przez stan sieci. Możliwości nadawania nadawcy lub rozmiar okna odbiorcy. Każde nowe połączenie rozpoczyna od nowa procedurę negocjacji rozmiaru okna.

Wskazówki dotyczące zdrowej sieci

  • Dowiedz się, jak wykorzystać Wireshark jako zadanie pierwszej odpowiedzi, aby szybko i skutecznie wykryć źródło niskiej wydajności.
  • Zidentyfikuj źródło opóźnienia ścieżki sieciowej i, jeśli to możliwe, zredukuj je do akceptowalnego poziomu.
  • Zlokalizuj i usuń źródło utraty pakietów.
  • Sprawdź rozmiar okna transmisji danych i jeśli to możliwe, zmniejsz go.
  • Sprawdź wydajność urządzeń przechwytujących, aby zobaczyć, czy dodają opóźnienia lub odrzucają pakiety.
  • Zoptymalizuj aplikacje, aby mogły dostarczać większe ilości danych i, jeśli to możliwe, pobierać dane z okna odbiornika.

Podsumowanie 👨‍🏫

Omówiliśmy główne przyczyny problemów z wydajnością sieci, ale jednym z czynników, którego nie należy pomijać, jest brak zrozumienia zachowania komunikacji sieciowej. Wireshark zapewnia widoczność sieci, podobnie jak zdjęcia rentgenowskie, a tomografia komputerowa zapewnia wgląd w ludzkie ciało w celu dokładnej i szybkiej diagnozy. To narzędzie stało się niezbędnym narzędziem do lokalizowania i diagnozowania problemów z siecią.

Powinieneś teraz zbadać i rozwiązać wydajność sieci za pomocą kilku filtrów i narzędzi korzystających z Wireshark. 👍