Kiedy doświadczamy niskiej prędkości internetu, prawie zawsze uciekamy się do restartu routera. W niektórych przypadkach może to pomóc. Czasami zakładamy, że nasz dostawca usług internetowych (ISP) ogranicza przepustowość łącza internetowego.Nie zawsze tak jest. Być może po prostu napotykamy na wyjątkowy problem, który powoduje słabe działanie internetu, mimo że prędkość połączenia we wszystkich testach prędkości wydaje się być świetna.

Dokładnie to samo mi się przytrafiło i ostatecznie rozwiązanie nie było takie, jakiego się spodziewałem. Wystarczyło, że zrównałem maksymalną jednostkę transmisji (MTU) z rzeczywistymi limitami połączenia. Kiedy to zrobiłem, opóźnienie zniknęło.
Szybkie linki
MTU definiuje maksymalne obciążenie IP, jakie może przekroczyć łącze w stanie nienaruszonym.
Zasady segmentacji i przekraczania rozmiaru nagłówka określają rzeczywisty rozmiar pakietu.

MTU reprezentuje największy pakiet danych w bajtach, jaki urządzenie podłączone do sieci może przesłać bez fragmentacji. W większości sieci Ethernet ta wartość jest zazwyczaj ustawiona na 1500 bajtów. Liczba 1500 nie jest przypadkowa. Twój router zakłada, że jest bezpieczny, opierając się na ograniczeniach projektowych Ethernetu sprzed dziesięcioleci, z których wiele nadal jest w użyciu.
Jednak 1500 bajtów to nie tylko rozmiar danych, ponieważ pakiety naturalnie niosą ze sobą dodatkowe dane, które stanowią narzut protokołu. W typowym ruchu TCP ten narzut obejmuje zazwyczaj 20 bajtów na nagłówek IPv4 i kolejne 20 bajtów na nagłówek TCP. Biorąc to pod uwagę, w środowisku MTU 1500, maksymalny limit dla pakietu wynosi 1460 bajtów. To wyjaśnia maksymalny rozmiar segmentu TCP (MSS) wynoszący 1460 bajtów w standardowych sieciach.
Problemy pojawiają się, gdy pakiet przekracza dopuszczalną wartość MTU, przez którą musi przejść. Jedynym sposobem na jego pomyślne przejście jest podzielenie pakietu na mniejsze części przez router. Proces ten jest zasobochłonny, wymagający większej mocy obliczeniowej procesora i pamięci podręcznej, ponieważ każda część ma własny nagłówek IP i wszystkie muszą zostać ponownie złożone w miejscu docelowym. Sam proces nie zmniejsza przepustowości, jednak zwiększa złożoność i wrażliwość dostarczania pakietów.
Rzeczywiste ścieżki internetowe często zawężają użyteczną wartość MTU do wartości poniżej 1500.
Technologie pakowania i dostępu ograniczają dostępną przestrzeń ładunkową.
Można by założyć, że 1500 bajtów sprawdza się wszędzie, ale to nieprawda. 1500 bajtów to więcej niż Maksymalna Jednostka Transmisji (MTU) używana w wielu połączeniach domowych. PPPoE (Point-to-Point over Ethernet) to powszechny standard w niektórych instalacjach światłowodowych i wielu opcjach DSL. Dodatkowy koszt 8 bajtów zmniejsza efektywne MTU do 1492, wymuszając fragmentację, jeśli router musi przesyłać pakiety 1500 bajtów przez tunel 1492-bitowy.
Dopóki dane muszą być hermetyzowane w dodatkowe opakowanie, będzie to miało wpływ na rzeczywistą przestrzeń ładunku. Na przykład sieć VLAN zapewnia 4-bajtowy znacznik. Chociaż znacznik ten jest niezbędny do identyfikacji sieci wirtualnej dla ruchu, nadal zmniejsza on ładunek. Translacja adresów sieciowych na poziomie operatora (CGNAT) i DS-Lite również działają w ten sam sposób. W przypadku DS-Lite, routing ruchu przez sieć dostawcy usług internetowych poprzez przepuszczanie ruchu IPv4 w pakietach IPv6 dodaje dodatkowy nagłówek. Sieci VPN przekształcają oryginalny pakiet w ładunek nowego pakietu, który wymaga nowego nagłówka.
Wszystkie te przypadki przypominają dodawanie dodatkowego opakowania do pudełka, które już ma swoje własne opakowanie, bez zwiększania długości drogi, jaką musi pokonać pudełko. Przejdzie ono tylko wtedy, gdy zostanie podzielone.
W sieciach komórkowych sytuacja jest bardziej skomplikowana, ponieważ LTE i 5G historycznie mają niższą wartość bazową 1500 bajtów niż Ethernet. W zależności od implementacji operatora, wartości MTU wahają się od 1420 do 1480. Zazwyczaj limit połączenia jest równy najmniejszej wartości MTU na całej długości trasy i dopóki router nie będzie w stanie go spełnić, wystąpi fragmentacja pakietów lub ciche pominięcie pakietów. To może być przyczyną wolnego połączenia internetowego..
Mechanizmy automatycznej regulacji MTU nie zawsze zapobiegają awariom.
Wykrywanie ścieżki MTU, filtrowanie ICMP i zachowanie czarnej dziury

Istnieje automatyczne rozwiązanie zapobiegające fragmentacji, które działa świetnie, przynajmniej na papierze. Nazywa się ono Path MTU Detection (PMTUD). Działa ono następująco: urządzenia mogą ustawić bit „no-fragment” podczas wysyłania pakietów. Ten bit powoduje, że router odbierający odpowiada komunikatem. Kod ICMP typu 3 4„Fragmentacja jest wymagana”, jeśli rozmiar pakietu przesyłanego w dół przekracza MTU.
Problem polega na tym, że w praktyce wiele zapór sieciowych domyślnie blokuje ICMP. W rezultacie duże pakiety są odrzucane, a filtrowanie zapory uniemożliwia nadawcy zorientowanie się, że pakiety były zbyt duże. To odrzucanie pakietów powoduje retransmisję TCP i generuje wykładniczy timer wycofywania. Taka sytuacja nazywana jest czarną dziurą MTU, w której duże pakiety konsekwentnie przestają być przesyłane, mimo że ruch wydaje się być płynny.
Nowoczesne systemy operacyjne starają się łagodzić niektóre awarie, implementując protokół PLPMTUD (Packetization Layer Path MTU Discovery) opisany w standardzie RFC 4821, który umożliwia badanie rozmiaru pakietów bez użycia protokołu ICMP. W niektórych przypadkach routery, urządzenia dostawców usług internetowych i punkty końcowe VPN nie radzą sobie skutecznie z fragmentacją. Nie widać tego w wynikach testów prędkości, ale rzeczywistym skutkiem jest narastająca zmienność opóźnień.
Jeśli na routerze wdrożono instalację MSS, może on maskować niezgodność MTU zamiast ją naprawiać. Z tego powodu objawy mogą być niespójne i niestałe.
Pomiar i korekta MTU przywraca czysty przepływ pakietów od początku do końca.
O ile rozumiesz obliczenia, znalezienie prawidłowego MTU jest łatwe. Jeśli musisz przetestować za pomocą polecenia ping, zwróć uwagę, że nagłówek IPv4 ma 20 bajtów, a ICMP dodaje 8 bajtów, co daje łączny rozmiar nagłówka 28 bajtów. Zatem, zaczynając od ładunku o rozmiarze 1472 bajtów, po dodaniu 28 bajtów IPv4 i ICMP, łączna wielkość wynosi 1500 bajtów. Zmniejszaj rozmiar ładunku od tego momentu, aż osiągniesz wartość, która nie spowoduje fragmentacji. Użyteczne MTU wyniesie 28 bajtów plus najwyższy pomyślnie wysłany ładunek.
Oto polecenie systemu Windows:
ping 8.8.8.8 -f -l 1472
Używam `-f` do ustawienia bitu `Nie fragmentuj` i `-l` do określenia rozmiaru danych. Celem jest ciągłe zmniejszanie rozmiaru danych, aż do uzyskania spójnej odpowiedzi potwierdzającej powodzenie. Odpowiednie polecenie w systemie Linux to:
ping -M do -s 1472 8.8.8.8
W systemie macOS sytuacja wygląda nieco inaczej, ponieważ skróty nie są obsługiwane w ten sam sposób w różnych wersjach. Bardziej wiarygodne sprawdzenie ścieżki MTU uzyskasz za pomocą narzędzi takich jak Mtr Za pośrednictwem Homebrew.
Zawsze testuj MTU na wielu adresach IP docelowych, nie tylko 8.8.8.8, ponieważ na niektórych ścieżkach mogą występować warunki „czarnej dziury”, a na innych nie.
Po ustaleniu pożądanej wartości stałej najlepiej ustawić MTU w interfejsie WAN routera, aby uniknąć konieczności indywidualnej konfiguracji wszystkich urządzeń. Poniżej znajduje się tabela przedstawiająca przybliżone wartości, których można oczekiwać dla różnych typów połączeń:
| Typ połączenia | Typowy MTU, którego można się spodziewać |
|---|---|
| Standardowy Ethernet (bezpośredni kabel/światłowód, bez PPPoE) | 1500 |
| PPPoE (DSL lub niektórzy dostawcy usług internetowych światłowodowych) | 1492 |
| Połączenie dostawcy usług internetowych oznaczone VLAN | 1496-1500 (w zależności od aplikacji dostawcy usług internetowych) |
| Sieci komórkowe LTE / 4G / 5G | ~1420-1480 (w zależności od firmy telekomunikacyjnej) |
| IPSec VPN (tryb tunelowania) | 1380-1460 (w zależności od kodu i opakowania) |
| WireGuard (Oryginalny MTU 1500) | ~ 1412 |
| OpenVPN (tryb UDP) | 1300–1450 (w dużej mierze zależne od ustawień) |










