Тунелот ги фрла големите преноси, но ги пропушта пинговите, затоа советите доаѓаат брзо: намалете го MTU. Поправката понекогаш работи, а потоа се применува на секој профил во секоја мрежа. Токму тогаш насочената поправка станува постојан данок врз перформансите. Споредбата што треба да се направи е помеѓу вистинската граница на патеката и цената да се намали секој пакет под неа.

Што навистина се намалува кога го намалувате MTU

Секој пакет носи заглавија пред да ги носи вашите податоци. На Ethernet патека од 1500 бајти, IPv4 и TCP трошат 40 бајти и оставаат 1460 за носивиот товар; инкапсулацијата додава одозгора надворешни IP, UDP и тунелски заглавија, па внатрешниот буџет за товар повторно паѓа. Намалувањето на MTU на интерфејсот намерно го намалува тој буџет.

Трошокот е пропорционален на бројот на пакети, не на бројот на бајти. Истата датотека поделена на повеќе пакети бара повеќе прекини, повеќе одлуки за рутирање и повеќе обработка по пакет на секој уред по патеката. На рутер што е веќе близу до својата граница на пакети во секунда, тоа е вистинско забавување, а не грешка при заокружување. Трошокот се гледа дури и кога самиот пренос успева.

Затоа помал MTU е заобиколување на ограничување, а не општа оптимизација. Купува сигурност пред патека што не може да ја носи поголемата рамка и наплатува дополнителен трошок за секој пакет што не бараше намалување.

Кога помал MTU е вистинската поправка

Класичниот симптом е конкретен: TCP ракувањето завршува, пристигнуваат мали одговори, а големото преземање запира или се ресетира. Пинг со битот „не фрагментирај“ на 1472 бајти не успева, додека пинг од 1400 бајти успева, што укажува на патека што не може да носи пакет со полна големина и не ја доставува ICMP пораката што би му кажала на испраќачот да намали.

Откривањето на MTU на патеката зависи од тие ICMP пораки за потребна фрагментација. Кога огнениот ѕид ги фрла, испраќачот продолжува да го повторува големиот пакет и врската изгледа како да виси. Намалувањето на MTU од страната на тунелот ја избегнува повтората, и тоа е легитимна поправка за таа мрежа.

И пристапните технологии поставуваат свои граници: PPPoE обично се ограничува на 1492, некои мобилни и DSL патеки се пониски, а вгнездените тунели го одземаат трошокот двапати. Измерете ја вистинската патека наместо да копирате број од водич, и запомнете дека IPv6 бара најмалку 1280 бајти MTU на секоја врска што го носи, како што пропишува RFC 8200.

Споредете ги трите контроли пред да смените една

MTU, MSS и фрагментацијата се различни контроли на различни слоеви, а менувањето на погрешната го остава симптомот на место.

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

Ограничувањето на MSS е често најмалку инвазивната поправка, бидејќи влијае само на TCP и го остава интерфејсот слободен за друг сообраќај. Понизок MTU на интерфејсот е поширок и полесно се размислува за него, затоа е чест на потрошувачки рутери, но на секој протокол му го наплатува проблемот на еден протокол.

Исклучувањето на однесувањето „не фрагментирај“ го крие симптомот со дозволување фрагментација, и обично ја влошува латентноста додека ја крши повратната врска што би ја нашла правилната големина. Избегнувајте го како постојано решение.

Измерете го компромисот, а не еден број

Најдете ја границата на патеката со сонда „не фрагментирај“, почнете високо и спуштајте се додека не пристигне одговорот:

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

Потоа споредете ја вистинската задача на двете поставки: истиот пренос на датотека, истата крајна точка и истата мрежа. Забележете го времето на завршување и повторните преноси, на пример со nstat -az TcpRetransSegs, и набљудувајте го процесорот на уредот ако тунелот завршува на мал рутер. Краток синтетички тест на пропусност може да го пропушти запирањето што се појавува само по неколку мегабајти.

Бројачите на пакети ќе пораснат по намалување затоа што истиот пренос сега користи повеќе пакети. Тоа е очекувано и не е доказ за поголема пропусност. Споредете ги завршените апликациски податоци, бројот на повторни преноси и одзивноста, а не само стапката на пакети.

Воведете ја промената по фази и држете ја ограничена

Забележете ја првобитната вредност, сменете една контрола и повторете го мерењето пред да ја направите постојана. Ако доказите не покажат корист, вратете ја претходната вредност со истата интерфејсна команда со која сте ја поставиле:

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

Ограничете го резултатот на мрежата што го бараше. Профил што мора да работи на хотелски Wi-Fi, мобилен хотспот и канцелариски LAN не треба да ја наследи најниската вредност што ја бара било која од нив, освен ако клиентот не може да ја открие патеката.

Правилната вредност е најголемиот MTU што ја преживува патеката, а не најмалиот што го отстранува симптомот. Документирајте ја патеката, резултатот од сондата и враќањето, и прегледајте ја поставката кога ќе се смени пристапната мрежа.

Поврзани статии