Tunel zahazuje velké přenosy, ale propouští pingy, takže rada přichází rychle: snižte MTU. Oprava někdy funguje, a pak se použije na každý profil v každé síti. Právě tehdy se z cílené opravy stává trvalá daň na výkon. Porovnání, které je třeba udělat, je mezi skutečným limitem cesty a cenou zmenšení každého paketu pod něj.

Co se při snížení MTU skutečně zmenší

Každý paket nese hlavičky dřív, než nese vaše data. Na ethernetové cestě s 1500 bajty spotřebují IPv4 a TCP 40 bajtů a nechají 1460 pro užitečné zatížení; zapouzdření přidá navrch vnější hlavičky IP, UDP a tunelu, takže vnitřní rozpočet zatížení znovu klesá. Snížení MTU rozhraní tento rozpočet záměrně zmenšuje.

Cena je úměrná počtu paketů, ne počtu bajtů. Stejný soubor rozdělený do více paketů potřebuje více přerušení, více rozhodnutí o směrování a více zpracování na paket na každém zařízení podél cesty. Na routeru, který už je blízko limitu paketů za sekundu, je to skutečné zpomalení, ne zaokrouhlovací chyba. Cena se projeví, i když samotný přenos uspěje.

Proto je menší MTU obchvatem omezení, ne obecnou optimalizací. Kupuje spolehlivost vůči cestě, která neunese větší rámec, a účtuje režii za každý paket, který zmenšení nepotřeboval.

Kdy je menší MTU správná oprava

Klasický příznak je konkrétní: TCP handshake se dokončí, dorazí malé odpovědi a velké stahování se zasekne nebo se resetuje. Ping s bitem „nefragmentovat“ při 1472 bajtech selže, zatímco ping o 1400 bajtech uspěje, což ukazuje na cestu, která neunese paket plné velikosti a nedoručuje zprávu ICMP, jež by odesílateli řekla, aby zmenšil.

Zjišťování MTU cesty závisí na těchto zprávách ICMP o nutné fragmentaci. Když je firewall zahodí, odesílatel zkouší velký paket znovu a spojení vypadá jako zaseknuté. Snížení MTU na straně tunelu se opakování vyhne, což je pro takovou síť legitimní oprava.

Přístupové technologie také kladou vlastní limity: PPPoE obvykle končí na 1492, některé mobilní a DSL cesty jsou nižší a vnořené tunely odečítají režii dvakrát. Měřte skutečnou cestu místo kopírování čísla z příručky a pamatujte, že IPv6 vyžaduje na každém spoji, který ho nese, alespoň 1280 bajtů MTU, jak určuje RFC 8200.

Porovnejte tři ovládací prvky, než jeden změníte

MTU, MSS a fragmentace jsou různé ovládací prvky na různých vrstvách a změna špatného zanechá příznak na místě.

ControlLayerWhat it changesWhere it misleads
Interface MTUIP linkLargest frame the interface will sendPenalizes every protocol, not just the one that failed
TCP MSS clampTCPSegment size advertised in the handshakeLeaves UDP and QUIC untouched
DF and fragmentationIPWhether a router may split a packetCan break path MTU discovery and security assumptions
Tunnel overheadEncapsulationInner MTU after outer headersMismatch shows up only for large inner packets

Omezení MSS je často nejméně invazivní oprava, protože ovlivňuje jen TCP a rozhraní nechává volné pro jiný provoz. Nižší MTU rozhraní je širší a snáze se o něm uvažuje, proto je běžné na domácích routerech, ale účtuje každému protokolu problém jednoho protokolu.

Vypnutí chování „nefragmentovat“ skrývá příznak tím, že povolí fragmentaci, a obvykle zhorší latenci, zatímco rozbíjí zpětnou vazbu, která by našla správnou velikost. Vyhněte se tomu jako trvalému řešení.

Měřte kompromis, ne jedno číslo

Najděte limit cesty sondou „nefragmentovat“, začněte vysoko a snižujte, dokud odpověď nedorazí:

ping -M do -s 1472 203.0.113.10
ping -M do -s 1400 203.0.113.10
tracepath 203.0.113.10

Potom porovnejte skutečný úkol při obou nastaveních: stejný přenos souboru, stejný koncový bod a stejnou síť. Zaznamenejte dobu dokončení a opakované přenosy, například pomocí nstat -az TcpRetransSegs, a sledujte CPU zařízení, pokud tunel končí na malém routeru. Krátký syntetický test propustnosti může minout zaseknutí, které se objeví až po několika megabajtech.

Počítadla paketů po zmenšení vzrostou, protože stejný přenos nyní používá více paketů. To je očekávané a není to důkaz vyšší propustnosti. Porovnávejte dokončená aplikační data, počet opakovaných přenosů a odezvu, ne jen rychlost paketů.

Zavádějte změnu po krocích a udržte ji ohraničenou

Zaznamenejte původní hodnotu, změňte jeden ovládací prvek a před trvalým nasazením měření zopakujte. Pokud důkazy neukážou přínos, obnovte předchozí hodnotu stejným příkazem rozhraní, kterým jste ji nastavili:

ip link set dev wg0 mtu 1420
ip link set dev wg0 mtu 1500

Ohraňte výsledek na síť, která ho potřebovala. Profil, který musí fungovat na hotelovém Wi-Fi, mobilním hotspotu a kancelářské LAN, by neměl dědit nejnižší hodnotu, kterou vyžaduje kterákoli z nich, pokud klient nedokáže cestu zjistit.

Správná hodnota je největší MTU, které cestu přežije, ne nejmenší, které příznak odstraní. Zdokumentujte cestu, výsledek sondy a vrácení změny a nastavení znovu posuďte, když se přístupová síť změní.

Související články