Przegląd algorytmu Nagle'a dla komunikacji w sieci TCP

Spisu treści:

Przegląd algorytmu Nagle'a dla komunikacji w sieci TCP
Przegląd algorytmu Nagle'a dla komunikacji w sieci TCP
Anonim

Algorytm Nagle, nazwany na cześć inżyniera Johna Nagle, został zaprojektowany w celu zmniejszenia przeciążenia sieci spowodowanego problemami z małymi pakietami w aplikacjach TCP. Implementacje systemu UNIX zaczęły używać algorytmu Nagle'a w latach 80. XX wieku i do dziś pozostaje on standardową funkcją protokołu TCP.

Jak działa algorytm Nagle'a

Algorytm Nagle'a przetwarza dane po stronie wysyłającej aplikacji TCP za pomocą metody zwanej nagling. Wykrywa małe wiadomości i gromadzi je w większych pakietach TCP przed wysłaniem danych przez sieć. Proces ten pozwala uniknąć generowania niepotrzebnie dużej liczby małych pakietów.

Techniczna specyfikacja algorytmu Nagle'a została opublikowana w 1984 r. jako RFC 896. Decyzje dotyczące ilości zgromadzonych danych i czasu oczekiwania między wysyłkami mają kluczowe znaczenie dla jego ogólnej wydajności.

Korzyści z Nagling

Nagling może efektywnie wykorzystywać przepustowość połączenia sieciowego kosztem dodawania opóźnień lub opóźnień. Przykład opisany w RFC 896 ilustruje potencjalne korzyści w zakresie przepustowości i powód jego utworzenia:

  • Jeśli aplikacja TCP, która przechwytuje naciśnięcia klawiszy klawiatury, chce przekazać każdy wpisywany znak do odbiorcy, może wygenerować serię wiadomości, z których każda zawiera 1 bajt danych.
  • Zanim te wiadomości będą mogły być wysłane przez sieć, każda z nich musi być spakowana z informacjami nagłówka TCP zgodnie z wymaganiami TCP/IP. Każdy nagłówek ma rozmiar od 20 do 60 bajtów.
  • Bez narzekania, ta przykładowa aplikacja generowałaby komunikaty sieciowe składające się z co najmniej 95 procent informacji nagłówka (co najmniej 20 z 21 bajtów) i 5 procent lub mniej rzeczywistych danych z klawiatury nadawcy. Korzystając z algorytmu Nagle, te same dane mogą być dostarczane przy użyciu mniejszej liczby wiadomości, co skutkuje dużymi oszczędnościami przepustowości.

Aplikacje kontrolują wykorzystanie algorytmu Nagle'a za pomocą opcji programowania gniazd TCP_NODELA. Systemy Windows, Linux i Java zwykle domyślnie włączają Nagle'a. Dlatego aplikacje napisane dla tych środowisk muszą określić TCP_NODELAY, aby wyłączyć algorytm.

Image
Image

Ograniczenia

Aplikacje wymagające szybkiej odpowiedzi sieciowej, takie jak rozmowy wideo i gry online, mogą nie działać dobrze, gdy włączony jest Nagle. Opóźnienia spowodowane tym, że algorytm zajmuje dodatkowy czas, aby zebrać mniejsze porcje danych, mogą powodować zauważalne opóźnienie wizualnie na ekranie lub w cyfrowym strumieniu audio. Takie aplikacje zazwyczaj wyłączają Nagle.

Algorytm ten został pierwotnie opracowany w czasie, gdy sieci komputerowe obsługiwały mniejszą przepustowość niż obecnie. Opisany powyżej przykład oparto na doświadczeniach Johna Nagle'a z Ford Aerospace we wczesnych latach 80., kiedy to kłótliwe kompromisy w powolnej, mocno obciążonej, dalekobieżnej sieci Forda miały sens. Obecnie jest coraz mniej sytuacji, w których aplikacje sieciowe mogą skorzystać z jego algorytmu.

Algorytm Nagle'a działa tylko z TCP. Inne protokoły, takie jak UDP, nie obsługują tego.

Zalecana: