Receive Window Auto-Tuning

Dziś zajmę się problemem już dawno rozwiązanym. Niestety wraca on jednak co jakiś czas jak bumerang, choć co na szczęście dość rzadko. Jednak gwoli wstępu od systemu Windows 2008 zostały unowocześnione protokoły TCP/IP. Dodano również kilka gadżetów „nowej generacji”, m.in. jest to „automatyczne dostrajanie okna odbiorczego”. Nie wnikając w szczegóły ideologia tego rozwiązania jest bardzo ciekawa – zoptymalizowanie wielkości okna odbiorczego dla każdego połączenia w celu poprawy/zwiększenia wykorzystania sieci.

Jak mówiłem ideologia jest bardzo fajna, lecz w praktyce wychodzi gorzej. W moim środowisku wszystko jest ok. dopóki transmisja danych odbywa się pomiędzy systemami Windows 2008/Vista wzwyż. W momencie gdy trzeba nawiązać połączenie ze starszą wersją systemu jak np. Windows 2003 transfer drastycznie spada. Przykład: 10GB danych potrafi się kopiować kilka dni, a obciążenie łącza 1 gigabit Ethernet wacha się około 0,1%. W przypadku robienia backupów (no i nie tylko :)) to troszeczkę niedopuszczalne.

By móc rozwiązać ten dość uciążliwy problem wystarczy skonfigurować, konkretnie wyłączyć (disabled) kilka parametrów:

Autotuninglevel:
disabled – Ustala rozmiar okna odbioru równy wartości domyślnej.
highlyrestricted – Zezwala na zwiększanie okna odbioru poza rozmiar domyślny, ale robi to w sposób bardzo zachowawczy.
restricted – Zezwala na zwiększanie okna poza rozmiar domyślny, ale ogranicza powiększanie w niektórych scenariuszach.
normal – Zezwala na odpowiednie zwiększenie okna dla prawie wszystkich scenariuszy.
experimental – Zezwala na odpowiednie zwiększanie okna dla skrajnych scenariuszy.

Chimney:
disabled – Wyłącza odciążanie przy użyciu technologii Chimney.
enabled – Włącza odciążanie przy użyciu technologii Chimney.
automatic – Włącza odciążanie przy użyciu technologii Chimney i algorytmów heurystycznych
default – Przywraca stan odciążania przy użyciu technologii Chimney do systemowej wartości domyślnej (automatic).

RSS:
disabled – Włącza skalowanie odbioru
enabled – Włącza skalowanie odbioru
default – Przywraca systemową wartość domyślną stanu skalowania odbioru.

Taskoffload:
disabled – wyłącz odciążanie zadań
enabled – włącz odciążanie zadań

By sprawdzić aktualny stan parametrów możemy posłużyć się:

netsh interface tcp show global
netsh interface ip show global

Aby zmienić wartość parametrów:

netsh interface tcp set global RSS=disabled
netsh interface tcp set global autotuninglevel=disabled
netsh interface tcp set global chimney=disabled
netsh interface ip set global taskoffload=disabled

W większości przypadków po tym zabiegu i restarcie system pomaga – przynajmniej u mnie. Nie wiem jedynie dlaczego ten problem u mnie co jakiś czas powraca, tzn. wartość parametru autotuninglevel zmienia się na normal – aktualizacje ?? Nie wiem problem ten na szczęście i niestety występuje tak rzadko (co kilka miesięcy), iż ciężko zdiagnozować jednoznaczną przyczynę.

Wracając jeszcze do problemu, gdyby powyższa konfiguracja nie pomogła to jest wersja bardziej hardkorowa tzn. reset wszystkich ustawień tcp/ip i konfiguracja od zera, gdyż możliwe iż problem tkwi nie tylko w powyższych parametrach. Niemniej jednak jest to dość radykalny zabieg i radzę wcześniej wykonać dump’a konfiguracji, by nie było ze nie ostrzegałem.

netsh int tcp dump >> c:\tcp_dump.txt
netsh int ip dump >> c:\ip_dump.txt
netsh int tcp reset
netsh int ip reset

Źródła:
http://technet.microsoft.com/en-us/magazine/2007.01.cableguy.aspx
http://www.microsoft.com/poland/technet/bazawiedzy/centrumrozwiazan/cr190_01.mspx
http://technet.microsoft.com/en-us/library/cc731258(WS.10).aspx

Advertisements

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s