Korzystając ze strony, wyrażasz zgodę na używanie ciasteczek zgodnie z naszą Polityką prywatności i Warunkami użytkowania.
Zgadzam się
Na Styku SieciNa Styku Sieci
  • Start
  • Routing & Switching
  • Wireless
  • Certyfikacja
  • Wokół sieci
Czytasz: L2 MTU, IP MTU i TCP MSS pod lupą
Udostępnij
Na Styku SieciNa Styku Sieci
  • Wireless
  • Certyfikacja
  • Routing & Switching
  • Wokół sieci
Szukaj
  • Start
  • Categories
    • Wokół sieci
    • Routing & Switching
    • Wireless
    • Certyfikacja
  • Bookmarks
    • Customize Interests
  • More Foxiz
    • Blog Index
    • Sitemap
Have an existing account? Zaloguj się
Follow US
Routing & Switching

L2 MTU, IP MTU i TCP MSS pod lupą

Damian Michalak
Damian Michalak 19 stycznia 2017 Wyświetlenia: 7k
Czas czytania: 7 min

W trakcie zarówno nauki jak i pracy z sieciami komputerowymi, często przewijają się takie terminy jak MTU czy MSS. Po bliższym przyjrzeniu się tematowi okazuje się, że MTU nie jest dość precyzyjnym określeniem i tak naprawdę mamy do czynienia z L2 MTU oraz z IP MTU. No i do tego dochodzi nam jeszcze MSS… Jak to wszystko się ze sobą wiąże?

Contents
Czym jest MSS?Czym jest MTU?a) L2 MTUb) IP MTUIPv4 PMTUKomendy

Czym jest MSS?

Zgodnie ze standardem TCP, domyślnym rozmiarem wysyłanego segmentu jest 576 bajtów – wraz 40 bajtami nagłówków TCP i IP. Zenkapsulowana zawartość L4 PDU ma zatem 536 bajtów. W trakcie TCP 3-way handshake, segmenty z ustawioną flagą SYN mogą poinformować w opcji TCP, że dany host jest w stanie przyjąć segmenty o większym rozmiarze. Opcja ta to Maximum Segment Size (MSS) i może być ustawiona niezależnie dla każdego przepływu danych (innymi słowy MSS jest rozgłaszane niezależnie w obu kierunkach transmisji i nie musi być takie same). Bardzo często zaobserwowaną wartością MSS będzie 1460 bajtów, co wynika wprost z rozmiaru ramki Ethernet (o czym za chwilę). Dobrze to widać w Wiresharku:

MSS w segmencie TCP
MSS w segmencie TCP

Jednym z problemów, które możemy napotkać w związku z MSS, jest rozgłaszanie przez odbiorcę MSS większego niż maksymalne MTU na ścieżce transmisyjnej – co powoduje fragmentację. Rozwiązaniem tego problemu jest mechanizm PMTU omówiony w dalszej części artykułu.

Czym jest MTU?

Generalnie rzecz biorąc MTU (Maximum Transmission Unit) jest maksymalnym rozmiarem jednostki danych, którą możemy przesłać przez określone medium bez fragmentacji. Duże MTU powoduje, że można wysłać co prawda mniej pakietów (mniejszy jest również narzut związany z nagłówkami), jednakże może powodować również większe zatłoczenie (contention) w sieci, zwłaszcza w wypadku konieczności retransmisji uszkodzonych pakietów. Zmienne MTU jest niepożądane ponieważ powoduje fragmentację pakietów (której chcemy uniknąć za wszelką cenę). Jak się okazuje, możemy wyróżnić dwa rodzaje MTU:

a) L2 MTU

W wypadku Ethernetu (v2) wartość L2 MTU wynosi 1500 bajtów (dla kontrastu FDDI – 4352 bajty). Oznacza to, że zenkapsulowany w ramce ethernetowej pakiet może mieć maksymalny rozmiar 1500 bajtów – w przeciwnym wypadku będziemy musieli dokonywać fragmentacji na poziomie pakietu IP. Jak to wygląda w Wiresharku? Wireshark pokazuje, że otrzymał 1514 bajtów – nie wlicza w to jednak FCS (4 bajty) oraz preambuły (8 bajtów) – zatem rzeczywisty rozmiar ramki to 1526 bajtów. Rozmiar ten może się dodatkowo zwiększyć kiedy stosujemy tagowanie VLANów (dodatkowe 4 bajty) lub tunelowanie Q-in-Q.

Bliższe spojrzenie na L2 MTU
Bliższe spojrzenie na L2 MTU

Mamy zatem 1526 bajtów, które rozbija się następująco:

  1. Ramka:
    • nagłówek i stopka (konia z rzędem temu kto zaproponuje dobre tłumaczenie słowa “trailer“…): 26 bajtów
    • payload (zenkapsulowany pakiet IP): 1500 bajtów <- czyli L2 MTU
  2. Pakiet:
    • nagłówek: 20 bajtów
    • payload (zenkapsulowany segment TCP): 1480 bajtów
  3. Segment:
    • nagłówek: 20 bajtów
    • payload (dane warstwy aplikacyjnej): 1460 bajtów <- czyli nasz MSS

Niektóre urządzenia mogą wspierać tzw. Jumbo Frames, czyli ramki ethernetowe o rozmiarze przekraczającym 1500 bajtów (teoretycznie zawartość ramki (payload) może wynieść nawet 9000 bajtów). Jumbo Frames mogą być pożądane w przypadku niektórych nowoczesnych aplikacji.

b) IP MTU

IP MTU jest niczym innym jak maksymalnym rozmiarem pakietu IP – z tym, że w tym wypadku wartość IP MTU oznacza rozmiar całego pakietu (nie tylko zenkapsulowany segment, ale również nagłówek IP!). W większości wypadków IP MTU będzie równe L2 MTU. Można by się zastanowić po co w zasadzie dwie wartości skoro wydaje się, że by wystarczyła jedna? Już spieszę z odpowiedzią. W przypadku etykietowania MPLS, każda etykieta zwiększa nam rozmiar payloadu ramki o 4 bajty. Jeśli więc IP MTU byłoby równe L2 MTU to nie bylibyśmy w stanie upakować etykiet. Zatem w takiej sytuacji zazwyczaj się stosownie zwiększa L2 MTU. Aby umożliwić dodawanie dwóch etykiet należałoby zwiększyć L2 MTU do 1508 bajtów – 8 bajtów na dwie etykiety, 1500 bajtów na pakiet (IP MTU), po 20 bajtów na nagłówki IP i TCP i 1460 bajtów payloadu w warstwie transportowej (czyli tyle ile wynosi MSS). Mam nadzieję, że teraz już jest jasne jak to wszystko się ze sobą zazębia 🙂

Korelacja pomiędzy L2 MTU, IP MTU, a MSS
Korelacja pomiędzy L2 MTU, IP MTU, a MSS

IPv4 PMTU

PMTU, czyli Path Maximum Transmission Unit to mechanizm wykorzystywany przez hosty, którego celem jest wykrycie najmniejszego MTU na ścieżce między dwoma hostami. Większość hostów wspiera ten mechanizm, a działa on następująco: host w wysyłanym pakiecie IP ustawia flagę DF (Don’t Fragment) – w rezultacie jeśli dany router nie jest w stanie przekazać pakietu (ze względu na zbyt niskie MTU) to odrzuca pakiet i udziela hostowi informacji zwrotnej w postaci ICMP typu 3 z kodem 4 (fragmentation needed but DF bit set). Informacja ta zwiera ponadto skonfigurowane na routerze MTU. Dzięki temu host może dokonać retransmisji odrzuconego pakietu, dostosowując się do MTU. Otrzymywanie komunikatów “MTU exceeded” jest niezbędne do prawidłowego działania PMTU, ważne więc aby ich nie blokować.

Komendy

Najważniejsze komendy związane z MSS i MTU wyglądają w przypadku urządzeń Cisco następująco:

  1. MSS:
    • ip tcp mss bytes – ustawia MSS, ale wpływa tylko na ruch do i z routera (management plane)
    • ip tcp adjust-mss bytes – ta komenda wpływa na MSS ruchu tranzytowego, nie jest ona jednak w stanie zwiększyć MSS – jedynie może zmniejszyć MSS w segmencie jeśli ten przekracza ustawioną wartość.
  2. L2 MTU:
    • system mtu bytes – zmiana wartości L2 MTU globalnie
    • system mtu jumbo bytes – zmiana wartości L2 MTU dla jumbo frames globalnie
    • mtu bytes – zmiana wartości L2 MTU na poziomie interfejsu
  3. IP MTU:
    • ip mtu bytes – zmiana wartości IP MTU na poziomie interfejsu. Nie jest możliwa zmiana globalnie.

Mam nadzieję, że teraz już wszystko jest jasne w kontekście MTU i MSS.

Może coś wymaga doprecyzowania? A może chciałbyś zaproponować temat, na któryś z następnych artykułów?

TAGGED: MSS, MTU
Damian Michalak 19 stycznia 2017
Udostępnij ten materiał
Facebook Twitter Whatsapp Whatsapp LinkedIn Email Drukuj
5 Comments 5 Comments
  • RiFF pisze:
    25 stycznia 2017 o 21:10

    Super , bardzo fajnie to opisałeś. Może rozszerzysz ten opis jeszcze o protokoły VPN , jaki MTU ma wtedy wpływ na zestawione sesje / tunele

    Odpowiedz
    • Jenkins pisze:
      6 września 2019 o 13:45

      Podpinam się pod prośbę \”RiFF\”

      Odpowiedz
      • Damian Michalak pisze:
        7 września 2019 o 14:47

        Dzięki Jenkins, dopisane do listy tematów do opracowania

        Odpowiedz
    • Andrzej pisze:
      13 lipca 2021 o 13:17

      Trochę już minęło, ale podpinam się również!!!

      Odpowiedz
      • Damian Michalak pisze:
        16 lipca 2021 o 14:30

        ❤️

        Odpowiedz

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

You Might Also Like

Routing & Switching

Maszyna stanowa OSPF

6 maja 2021
Routing & Switching

Redystrybucja między OSPF a EIGRP [WYZWANIE]

14 stycznia 2020
Routing & Switching

Czym się różnią przełączniki warstwy 3. od routerów?

12 września 2019
Routing & Switching

Czym są tunele VPN?

23 czerwca 2019

NA STYKU SIECI

Tworzymy społeczność sieciowców skupioną dookoła rozwiązań oraz certyfikacji firmy Cisco Systems.
Przydatne linki
  • NSS+
  • Tagi
  • Podcast
Nasze projekty
  • Alvortech
  • Szkoła Sieci
  • Czwartest

Dołącz do NSSlettera

Informacje o nowych publikacjach oraz dodatkowe treści!

[mc4wp_form]

© Na Styku Sieci 2022 - powered by Alvortech

  • Polityka prywatności
  • Warunki użytkowania
  • O nas
  • Kontakt
Witaj ponownie!

Zaloguj się na swoje konto

Zapomniałeś/aś hasło?