Ping одговара, DNS решава, и секоја страница што бара целосен сегмент застанува. На врска што додава сопствена инкапсулација, патеката тивко губи неколку десетици бајти од буџетот, и профил напишан за чист Ethernet продолжува да бара пакети што линијата не може да ги носи. Врската не е бавна; таа ги фрла токму пакетите што се важни.

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

Три копчиња, три различни слоеви

link-mtu е надворешниот буџет: шифрираниот товар плус заглавието на OpenVPN, заглавието UDP и надворешното IP заглавие. Тој опишува што излегува од машината, и затоа тоа е бројот што го ограничува физичката патека.

tun-mtu е внатрешниот буџет: интерфејсот што го гледа вашиот сообраќај. Тој е поголем од она што патеката може да го носи точно за трошокот на тунелот, и OpenVPN обично го изведува наместо да ве тера да го поставите.

mssfix е сосема друг механизам. Тој ја препишува максималната големина на сегментот што се објавува за време на ракувањата TCP, за да можат партнерите TCP да изберат сегменти што се вклопуваат по инкапсулацијата. Не го менува MTU на интерфејсот и нема никакво влијание врз UDP.

Ако го поставите link-mtu експлицитно, OpenVPN го одзема сопствениот трошок за да го изведе внатрешниот MTU. Тој трошок не е фиксна константа; зависи од шифрата и автентикацијата, затоа вредност копирана од форум може да е погрешна на друг профил. Поставувањето и на link-mtu и на tun-mtu му дава на клиентот две противречни инструкции.

Измерете ја патеката пред да изберете било кој број

Мерете од физичкиот интерфејс, не од внатрешноста на тунелот, и запомнете дека ping известува за товарот, а не за големината на пакетот. Додајте 28 бајти за заглавијата IPv4 и ICMP пред да го споредите товарот со рамка од 1500 бајти, и имајте ја таа корекција на ум кога партнерот известува друг број.

На клиент Linux, ping -M do -s 1472 забранува фрагментација и не успева ако пакетот е преголем. Намалете го товарот додека не помине, потоа додајте 28 за да го добиете MTU на патеката. PPPoE чини 8 бајти, така што 1492 е нормално на DSL. DS-Lite и некои мобилни патеки чинат 40 или повеќе, и одговорот обично е понизок отколку што сугерира номиналната брзина на врската.

Ако секоја големина на ping успева, но големите преноси и понатаму застануваат, посомневајте се во црна дупка наместо во едноставно ограничување на големината. ICMP пораката за потребна фрагментација се филтрира некаде по патеката, така што испраќачот никогаш не учи да намалува, и само тековите што бараат голем сегмент го забележуваат тоа.

Прво ограничете го TCP, потоа смалете го тунелот

Ракувањата TCP се единственото нешто што mssfix го допира, што обично го прави најмалку наметливата контрола што треба прво да се проба. Поставете го малку под вистинскиот буџет на патеката, пратете ја истата вредност од серверот за да се согласат двата краја, и повторно тестирајте големо преземање. Ако застојот исчезне, проблемот беше големината на сегментот TCP, и ништо друго не треба да се менува.

Намалете го внатрешниот MTU кога засегнатиот сообраќај не е TCP. UDP услуга, тунел во тунелот или апликација што испраќа датаграми со целосна големина ќе продолжат да не успеваат по ограничувањето MSS затоа што ништо не ја препишува големината на нивните пакети. Намалете го tun-mtu за тој случај, или поставете link-mtu и оставете клиентот да ја изведе внатрешната вредност, но никогаш и двете.

Не посегнувајте по старата опција за фрагментација. Таа ги делеше пакетите внатре во тунелот, додаваше трошок и е отфрлена со добри причини; современиот OpenVPN очекува патеката да биде опишана точно.

Зошто малите проби продолжуваат да работат

DNS барањата, ICMP ехата и ракувањата TCP се сите далеку под големината што не успева. Затоа тунелот изгледа здрав во секој брз тест, додека ракувањата TLS и HTTP одговорите тивко не успеваат. Токму таа комбинација, traceroute што работи и прелистувач што застанува на првиот голем одговор, е знакот што треба да го барате. Посегнете по проба со целосна големина пред да посегнете по нов профил.

Потврдете со сообраќајот што не успеа. Вчитајте голема страница, испратете UDP датаграм со целосна големина ако тоа е засегнатата услуга, и повторете од втор клиент на друга врска. Запишете го измерениот MTU на патеката и вредноста што ја избравте, затоа што инаку следната личност што ќе го допре профилот ќе го смета бројот за произволен.

Никогаш не спуштајте го внатрешниот MTU под 1280 кога IPv6 оди преку тунелот, затоа што тоа е минимумот што секоја врска IPv6 мора да го носи. Помал MTU е факт за патеката, а не поставка за перформанси што се дотерува по чувство.

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