Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 6
  • 387

Wiem, co to jest IP MTU, MSS i zasady pracy z ip tcp path-mtu-discovery oraz tcp dostosowania MSS

Ale nie jestem w stanie zrozumieć, jak te 4 koncepcje pracują razem.

Dlaczego mamy dwie koncepcje, jak ip tcp path-mtu-discovery oraz tcp dostosowania MSS.

Czy ktoś może mi pomóc to zrozumieć?

Michał_Czyżewski
  • Zapytał
  • @ Michał_Czyżewski | 17.06.2014
    • lider
    • laureat
    • 15
    • 4
    • 10
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

MTU (Maximum Transmission Unit) to parametr konfigurowany na interfejsie lub globalnie określający rozmiar największego dopuszczalnego datagramu (L3). Jeżeli odebrana ramka będzie zawierała datagram (np. pakiet IPv4) większy niż ustawione MTU, na interfejsie zostanie ona odrzucona. MTU jest pewną stałą, cechą interfejsu sieciowego, możemy ją modyfikować w sposób następujący (na przykładzie przełącznika Cisco Catalyst 3560):

Jeżeli chcemy zmodyfikować globalne ustawienia urządzenia dla portów FastEthernet przełączanych (L2):

 

switch(config)# system mtu 1998

 

Jeżeli chcemy zmodyfikować globalne ustawienia urządzenia dla portów 1G/10G Ethernet przełączanych (L2):

 

switch(config)# system mtu jumbo 9000

 

Natomiast jeżeli chcemy zmodyfikować MTU dla portów rutowanych (L3) np. SVI (Uwaga! Nie możemy przekroczyć wartości "system mtu") :

 

switch(config)# system mtu routing 1998

Uwaga! Powyższa konfiguracja zostanie zastosowana dopiero po restarcie urządzenia.

switch# reload

 

Poza zmianą globalnej wartości MTU (jak to uczyniliśmy na przełączniku powyżej) możemy również wskazać wartość MTU na danym interfejsie dla konkretnych protokołów warstwy 3, np. dla IPv4 i IPv6 (Uwaga! Nie na każdym urządzeniu Cisco jest to możliwe. Pamiętajmy tylko, że wartość nie może przekroczyć "system mtu/system mtu routing":

 

switch(config)# interface gigabitethernet0/0
switch(config-if)# ip mtu 1280
switch(config-if)# ipv6 mtu 1280

Uwaga! Powyższa konfiguracja również zostanie zastosowana dopiero po restarcie urządzenia.

 


Tak więc MTU jest pewną stałą konfigurowaną sytemowo lub na interfejsie i tyczy się rozmiaru datagramu warstwy 3. Ale warto zwrócić uwagę, że rozmiar datagramu bezpośrednio zależy od tego, jak duży jest segment TCP, UDP lub innego protokołu warstwy 4, który przenosi wewnątrz. Protokół UDP jest trywialnym rozszerzeniem IP dodającym porty i niewiele możemy z tymi segmentami zrobić, za to w protokole TCP w momencie nawiązywania połączenia (konkretnie podczas trójstronnego uzgadniania połączenia) następuje ustalenie wartości MSS (Maximum Segment Size - jedno z pól opcji TCP), czyli wielkości wysyłanych segmentów między stronami połączenia (Uwaga! Do wartości MSS nie wlicza się nagłówka TCP).
Poniższa komenda wykonana na interfejsie routera spowoduje, że pakiety początkowego trójstronnego uzgadniania połączenia TCP (zarówno wchodzące, jak i wychodzące z interfejsu) zostaną zmodyfikowane przez router, a konkretnie pole MSS zostanie ustawione na wartość podaną w poleceniu. Tym samym dla połączeń TCP wymusimy mniejsze segmenty, a więc mniejsze datagramy mieszczące się w naszym MTU:

 

router(config)# interface gi0/0
router(config-if)# ip tcp adjust-mss 1300
router(config-if)# ipv6 tcp adjust-mss 1280

 

Uwaga! Jak widać dla IPv6 mamy dualną komendę. I jej parametr będzie musiał być ustawiony na przynajmniej 20 bajtów mniejszą wartość niż dla IPv4, gdyż nagłówek IPv6 ma rozmiar o przynajmniej 20 bajtów większy.
Powyższa komenda nie rozwiązuje problemów związanych z dużymi pakietami przenoszącymi protokół UDP lub inny warstwy 4.

 

 

Ostatnia komenda ma zupełnie inne zastosowanie:

 

router(config)# ip tcp path-mtu-discovery

 

Za jej pomocą wymuszamy, aby dla każdego połączenia TCP wykonywanego z naszego routera (np. SSH, BGP,...), zanim nastąpi próba jego zestawienia, nastąpiła weryfikacja rozmiaru MTU na ścieżce do celu. Innymi słowy router najpierw sprawdzi za pomocą metody PMTU (korzysta z ICMP), aby zweryfikować rozmiar MTU na łączach do docelowego urządzenia, a dopiero wtedy wykona próbę połączenia TCP z docelowym urządzeniem, stosując odpowiednią wartość MTU. A więc ta ostatnia komenda tyczy się wyłącznie ruchu inicjowanego przez nasz router.

  • Odpowiedział
  • @ | 09.03.2015
  • TRENER ALTKOM AKADEMII