Tuning TCP/IP w Linuksie

Coraz większa liczba użytkowników korzysta z szybkiego łącza DSL. Pokażemy, jak z szerokopasmowego łącza wycisnąć jeszcze nieco więcej, za pomocą niewielkiego tuningu i bezpłatnych narzędzi.

Coraz większa liczba użytkowników korzysta z szybkiego łącza DSL. Pokażemy, jak z szerokopasmowego łącza wycisnąć jeszcze nieco więcej, za pomocą niewielkiego tuningu i bezpłatnych narzędzi.

Oferowane przez dostawców szybkości zapowiadają pełną swobodę surfowania. Np. w ofercie TP SA można znaleźć warianty 128, 512, 1024 i 2048 kb/s.

Wiele czynników wpływa na to, co z tego zostaje tak naprawdę do dyspozycji: wydajność serwera, z którym się łączysz, przepustowość łącz na drodze do niego, odległość od najbliższego węzła sieci. Do tego dochodzi jeszcze balast protokołu, który też musi być przesłany. W przypadku dobrego łącza można przyjąć, że do faktycznego wykorzystania zostaje 87 procent teoretycznej przepustowości. Aby jak najbardziej zbliżyć się do tej granicy, warto bliżej przyjrzeć się poszczególnym ustawieniom TCP/IP. Użytkownik sam musi dokonać odpowiednich wpisów, co wymaga pewnej wiedzy. Podpowiemy, które parametry nadają się do tuningu, co powodują i jakie są zależności między nimi.

Maximum Transfer Unit (MTU)

Dostrojenie MTU za pomocą YaST - w YaST maska wprowadzania MTU kryje się za Ustawieniami specjalnymi dla Karty sieciowej.

Dostrojenie MTU za pomocą YaST - w YaST maska wprowadzania MTU kryje się za Ustawieniami specjalnymi dla Karty sieciowej.

Komputery w Internecie komunikują się za pomocą protokołu TCP/IP. Dzieli on dane do przesłania na pakiety. Wartość MTU określa maksymalną wielkość takiego pakietu.

Górna granica jest konieczna, gdyż w przeciwnym razie routery muszą fragmentować zbyt duże pakiety w trakcie ich wędrówki po Sieci. Dopiero komputer docelowy składa wszystkie pakiety ponownie w całość.

To wszystko niepotrzebnie pochłania czas, podobnie, jak negocjacja wartości MTU za pomocą wiadomości ICMP. Lepiej więc z góry wybrać optymalną wartość MTU. Można ją łatwo ustalić za pomocą narzędzi systemu operacyjnego. Poleceniem:

ping -s 1500 -c 10 -M do <nazwa_hosta>

wysyłasz pakiet danych o długości 1500 bajtów do komputera o nazwie <nazwa_hosta>. Parametr -M do mówi o tym, że pakiet musi dotrzeć w jednym kawałku, a stos TCP/IP ma od razu wykonać automatyczne rozpoznanie optymalnej wielkości MTU. Efekt tego sprawdzenia otrzymasz w potwierdzeniu wykonania polecenia, łącznie z informacją o tym, który z komputerów po drodze nie poradził sobie z wielkością pakietu.

MTU karty sieciowej skonfigurujesz w SUSE za pomocą YaST. Przejdź do Urządzenia sieciowe/Karta sieciowa i wybierz kartę do skonfigurowania. Kliknij Zaawansowane, następnie Ustawienia specjalne. Znajdziesz tam pole do wprowadzenia wartości MTU.

Maximum Segment Size (MSS)

Zarządzanie jest konieczne - nagłówek IP zawiera standardowo 20 bajtów, a w przypadku wykorzystania pola Options nawet 32 bajty.

Zarządzanie jest konieczne - nagłówek IP zawiera standardowo 20 bajtów, a w przypadku wykorzystania pola Options nawet 32 bajty.

O ile MTU określa wielkość kompletnego pakietu danych, o tyle Maximum Segment Size, (MSS) określa wielkość przestrzeni dla danych użytecznych. Muszą one dzielić miejsce z danymi administracyjnymi, znajdującymi się w nagłówku, a zawierającymi informacje o nadawcy i odbiorcy.

Standardowo pakiet TCP/IP ma dwa nagłówki - TCP oraz IP, każdy o wielkości 20 bajtów. Kolejne 8 bajtów przypada na dane administracyjne PPPoE. Ponieważ maksymalna długość pakietu ethernetowego to 1500 bajtów, górna granica MSS to 1452 bajty. Jaka wartość jest odpowiednia w danym przypadku, wynika z formuły MTU minus nagłówek. W poniższej tabeli znajdziesz pewne wartości, które przedstawiają zależności między różnymi nagłówkami, MTU i MSS:

Możliwe problemy z MTU/MSS

Dane dla TCP/IP bez wykorzystania pola Options.

Dane dla TCP/IP bez wykorzystania pola Options.

Przy nawiązaniu połączenia za pomocą trzyetapowej procedury handshake obie stacje informują się wzajemnie za pomocą pola TCP Options o obsługiwanej wartości Maximum Segment Size. Jeżeli na przykład komputer znajduje się za routerem DSL, MSS dla tego komputera wyniesie 1460, ponieważ pakiety standardowe przesyłane są w lokalnej sieci LAN. W przypadku komunikacji przez Internet obowiązuje jednak inna wartość MSS - 1452, ponieważ trzeba uwzględnić nagłówek PPPoE.

Komputer w sieci LAN informuje serwer internetowy, że może przyjąć pakiety o wielkości 1460 bajtów danych użytecznych. Ten wysyła, oczywiście, pakiety o takiej wielkości. Ale już router dostawcy (ISP) nie będzie mógł przesłać tych danych do routera użytkownika, gdyż na tym łączu dopuszczalna objętość danych użytecznych to 1452 bajty. Jeżeli bit Don't fragment nie jest ustawiony, router podzieli pakiet na dwa pakiety: jeden o wielkości 1452 bajtów i jeden o wielkości ośmiu bajtów. Drugi pakiet zużyje na przesłanie 8 bajtów danych użytecznych 48 bajtów informacji nagłówka.

Jednak bit DF jest ustawiony, gdy serwer używa na przykład Path MTU Discovery. Wówczas router dostawcy porzuca pakiet i wysyła do nadawcy meldunek kontrolny ICMP, który zawiera właściwą wartość MSS. Ten w reakcji na meldunek wysyła odpowiednio mniejszy pakiet i zapisuje sobie wartość MSS na dalszą część trwania połączenia.

Jeżeli jednak pakiet ICMP nie dotrze do nadawcy, choćby z powodu odfiltrowania po drodze, nadawca nie prześle mniejszego pakietu. Zamiast tego odczeka chwilę na potwierdzenie odbiorcy, a ponieważ ta nie nadejdzie, wyśle pakiet ponownie - po raz kolejny o niewłaściwej wielkości. Zabawa trwa tak długo, aż klient albo serwer nie zrezygnuje.


Zobacz również