Tunel zavrže velike prenose, a spusti ping, zato nasvet pride hitro: znižajte MTU. Popravek včasih deluje, nato pa se uporabi na vsakem profilu v vsakem omrežju. Takrat ciljni popravek postane trajni davek na zmogljivost. Primerjava, ki jo je treba narediti, je med dejansko mejo poti in stroškom pomanjšanja vsakega paketa pod njo.

Kaj se pri znižanju MTU zares zmanjša

Vsak paket nosi glave, preden nosi vaše podatke. Na poti Ethernet s 1500 bajti IPv4 in TCP porabita 40 bajtov in pustita 1460 za koristni tovor; zapiranje doda na vrh zunanje glave IP, UDP in tunela, zato notranji proračun tovora spet pade. Znižanje MTU vmesnika ta proračun namerno zmanjša.

Strošek je sorazmeren s številom paketov, ne s številom bajtov. Ista datoteka, razdeljena na več paketov, potrebuje več prekinitev, več odločitev o usmerjanju in več obdelave na paket na vsaki napravi vzdolž poti. Na usmerjevalniku, ki je že blizu meje paketov na sekundo, je to resnična upočasnitev in ne napaka zaokroževanja. Strošek se pokaže tudi, ko sam prenos uspe.

Zato je manjši MTU obvoz okoli omejitve, ne splošna optimizacija. Kupi zanesljivost proti poti, ki ne more nositi večjega okvira, in zaračuna dodatne stroške za vsak paket, ki pomanjšanja ni potreboval.

Kdaj je manjši MTU pravi popravek

Klasičen simptom je konkreten: rokovanje TCP se zaključi, prispejo majhni odgovori, velik prenos pa se ustavi ali ponastavi. Ping z bitom »ne drobi« pri 1472 bajtih ne uspe, medtem ko ping s 1400 bajti uspe, kar kaže na pot, ki ne more nositi paketa polne velikosti in ne dostavi sporočila ICMP, ki bi pošiljatelju povedalo, naj zmanjša.

Odkrivanje MTU poti je odvisno od teh sporočil ICMP o potrebnem drobljenju. Ko jih požarni zid zavrže, pošiljatelj vedno znova poskuša z velikim paketom in povezava se zdi obešena. Znižanje MTU na strani tunela se izogne ponavljanju, in to je legitimno popravilo za to omrežje.

Tudi dostopne tehnologije postavljajo svoje meje: PPPoE se običajno ustavi pri 1492, nekatere mobilne in DSL poti so nižje, gnezdni tuneli pa odštejejo stroške dvakrat. Izmerite dejansko pot, namesto da kopirate številko iz vodnika, in ne pozabite, da IPv6 zahteva vsaj 1280 bajtov MTU na vsaki povezavi, ki ga prenaša, kot določa RFC 8200.

Primerjajte tri krmilnike, preden enega spremenite

MTU, MSS in drobljenje so različni krmilniki na različnih plasteh, in zamenjava napačnega pusti simptom na mestu.

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

Omejevanje MSS je pogosto najmanj invazivno popravilo, ker vpliva le na TCP in pusti vmesnik prost za drug promet. Nižji MTU vmesnika je širši in lažje premišljen, zato je pogost na domačih usmerjevalnikih, vendar vsakemu protokolu zaračuna težavo enega protokola.

Izklop vedenja »ne drobi« skrije simptom tako, da dovoli drobljenje, in običajno poslabša zakasnitev, hkrati pa zlomi povratno informacijo, ki bi našla pravo velikost. Izogibajte se temu kot trajnemu popravilu.

Izmerite kompromis, ne eno številko

Poiščite mejo poti s sondo »ne drobi«, začnite visoko in se spuščajte, dokler ne pride odgovor:

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

Nato primerjajte dejansko nalogo pri obeh nastavitvah: isti prenos datoteke, isto končno točko in isto omrežje. Zabeležite čas dokončanja in ponovne prenose, na primer s nstat -az TcpRetransSegs, in opazujte CPU naprave, če se tunel konča na majhnem usmerjevalniku. Kratek sintetični test prepustnosti lahko zgreši zastoj, ki se pojavi šele po nekaj megabajtih.

Števci paketov bodo po zmanjšanju narasli, ker isti prenos zdaj uporablja več paketov. To je pričakovano in ni dokaz višje prepustnosti. Primerjajte dokončane podatke aplikacije, število ponovnih prenosov in odzivnost, ne le hitrosti paketov.

Spremembo uvajajte postopoma in jo ohranite omejeno

Zabeležite prvotno vrednost, spremenite en krmilnik in pred trajno uvedbo meritev ponovite. Če dokazi ne pokažejo koristi, obnovite prejšnjo vrednost z istim ukazom vmesnika, s katerim ste jo nastavili:

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

Rezultat omejite na omrežje, ki ga je potrebovalo. Profil, ki mora delovati v hotelskem Wi-Fi, na mobilni dostopni točki in v pisarniškem LAN, ne bi smel podedovati najnižje vrednosti, ki jo zahteva katero koli od njih, razen če odjemalec ne more zaznati poti.

Pravilna vrednost je največji MTU, ki preživi pot, ne najmanjši, ki povzroči, da simptom izgine. Dokumentirajte pot, rezultat sonde in vrnitev, in nastavitev ponovno preglejte, ko se dostopno omrežje spremeni.

Sorodni članki