Opcja skalowania okna TCP
Opcja skali okna TCP umożliwia zwiększenie rozmiaru okna odbioru dozwolonego w protokole kontroli transmisji powyżej jego poprzedniej maksymalnej wartości 65 535 bajtów. Ta opcja TCP, wraz z kilkoma innymi, jest zdefiniowana w dokumencie RFC 7323 , który dotyczy sieci typu long fat (LFN).
Okna TCP
Przepustowość komunikacji TCP jest ograniczona przez dwa okna: okno przeciążenia i okno odbioru. Okno przeciążenia stara się nie przekraczać przepustowości sieci ( kontrola przeciążenia ); okno odbioru stara się nie przekraczać zdolności odbiornika do przetwarzania danych ( kontrola przepływu ). Odbiornik może być przytłoczony ilością danych, jeśli na przykład jest bardzo zajęty (np. serwer WWW). Każdy segment TCP zawiera aktualną wartość okna odbioru. Jeśli na przykład nadawca otrzyma potwierdzenie, które potwierdza bajt 4000 i określa okno odbioru na 10000 (bajtów), nadawca nie wyśle pakietów po bajcie 14000, nawet jeśli okno przeciążenia na to pozwala.
Teoria
Opcja skalowania okna TCP jest potrzebna do wydajnego przesyłania danych, gdy iloczyn opóźnienia przepustowości (BDP) jest większy niż 64 KB. Na przykład, jeśli T1 o przepustowości 1,5 Mbit/s została użyta przez łącze satelitarne z czasem podróży w obie strony ) 513 milisekund, iloczyn opóźnienia przepustowości wynosi bitów lub około 96 187 bajtów. Użycie maksymalnego rozmiaru bufora 64 KB pozwala na zapełnienie bufora tylko do (65 535 / 96 187) = 68% teoretycznej maksymalnej prędkości 1,5 Mbit/s lub 1,02 Mbit/s.
Korzystając z opcji skali okna, rozmiar okna odbioru można zwiększyć do maksymalnej wartości bajty. Odbywa się to poprzez określenie dwubajtowej liczby przesunięć w polu opcji nagłówka. Prawdziwy rozmiar okna odbioru jest przesunięty w lewo o wartość licznika przesunięć. Maksymalna wartość 14 może być użyta jako wartość licznika przesunięć. Pozwoliłoby to pojedynczemu połączeniu TCP na przesyłanie danych przez przykładowe łącze satelitarne z szybkością 1,5 Mb/s przy wykorzystaniu całej dostępnej przepustowości.
Zasadniczo nie więcej niż jedno pełne okno transmisji może być przesłane w ciągu jednego okresu czasu w obie strony. Opcja skalowania okien umożliwia pojedynczemu połączeniu TCP pełne wykorzystanie LFN z BDP do 1 GB, np. łącze 10 Gbit/s z czasem podróży w obie strony 800 ms.
Możliwe efekty uboczne
Ponieważ niektóre zapory ogniowe nie implementują prawidłowo skalowania okien TCP, może to spowodować sporadyczne nieprawidłowe działanie połączenia internetowego użytkownika przez kilka minut, a następnie wydaje się, że zaczyna działać ponownie bez powodu. Występuje również problem, jeśli zapora nie obsługuje rozszerzeń TCP.
Konfiguracja systemów operacyjnych
Okna
Skalowanie okien TCP jest realizowane w systemie Windows od wersji Windows 2000 . Jest domyślnie włączona w systemach Windows Vista / Server 2008 i nowszych, ale w razie potrzeby można ją wyłączyć ręcznie. Windows Vista i Windows 7 mają stały domyślny bufor odbioru TCP o wielkości 64 kB, skalowany do 16 MB poprzez „automatyczne dostrajanie”, ograniczając ręczne dostrajanie TCP w długich grubych sieciach .
Linuks
Jądra Linuksa (od 2.6.8, sierpień 2004) mają domyślnie włączone skalowanie okna TCP. Parametry konfiguracyjne znajdują się w systemie plików /proc , patrz pseudo-plik /proc/sys/net/ipv4/tcp_window_scaling i jego towarzysze /proc/sys/net/ipv4/tcp_rmem i /proc/sys/net/ipv4/tcp_wmem ( więcej informacji: man tcp
, sekcja sysctl).
Skalowanie można wyłączyć, wydając następujące polecenie.
$ sudo sysctl -w "net.ipv4.tcp_window_scaling=0"
Aby zachować zmiany po ponownym uruchomieniu, dołącz wiersz „net.ipv4.tcp_window_scaling=0” w pliku /etc/sysctl.conf (lub /etc/sysctl.d/99-sysctl.conf od wersji systemd 207).
FreeBSD, OpenBSD, NetBSD i Mac OS X
Domyślnym ustawieniem dla FreeBSD , OpenBSD , NetBSD i Mac OS X jest włączone skalowanie okien (i inne funkcje związane z RFC 1323). Aby zweryfikować ich status, użytkownik może sprawdzić wartość zmiennej „ net.inet.tcp.rfc1323 ” za pomocą polecenia sysctl :
$ sysctl net.inet.tcp.rfc1323
Wartość 1 (wyjście " net.inet.tcp.rfc1323=1 ") oznacza, że skalowanie jest włączone, 0 oznacza "wyłączone". Jeśli jest włączony, można go wyłączyć, wydając polecenie:
$ sudo sysctl -w net.inet.tcp.rfc1323 = 0
To ustawienie jest tracone po ponownym uruchomieniu systemu. Aby upewnić się, że jest ustawiony podczas uruchamiania, dodaj następujący wiersz do /etc/sysctl.conf : net.inet.tcp.rfc1323=0
Jednak w systemie macOS 10.14 to polecenie powoduje błąd
sysctl: nieznany identyfikator „net.inet.tcp.rfc1323”
Źródła
- ^ a b Tutaj K , M , G lub T odnoszą się do przedrostków binarnych opartych na potęgach 1024.
- ^ „Połączenie sieciowe może zakończyć się niepowodzeniem podczas próby korzystania z systemu Windows Vista za urządzeniem zapory” . support.microsoft.com . Źródło 11 lipca 2019 r .
- ^ „Opis funkcji TCP systemu Windows 2000 i Windows Server 2003” . support.microsoft.com . Źródło 11 lipca 2019 r .
- ^ „Rozmiar okna odbioru TCP i skalowanie okna” . Zarchiwizowane od oryginału w dniu 1 stycznia 2008 r.
- ^ „Połączenie sieciowe kończy się niepowodzeniem, gdy próbujesz użyć systemu Windows Vista za urządzeniem zapory” . Microsoftu . 8 lipca 2009.
- Bibliografia _ _ Fasterdata.es.net . Źródło 11 lipca 2019 r .
- ^ "/proc/sys/net/ipv4/* Zmienne" .