DNS шешіледі, SSH сессиясы тұрады, содан кейін үлкен жүктеу қатып қалады, ал сол хостқа ping әлі жауап береді. Бұл бөліну бұзылған туннельге емес, пакет өлшеміне нұсқайды. Кірістірілген туннельдер мұған екі туннельдің ешқайсысы жалғыз жетпейтін өлшемдерде жетеді. Ішкі сессия дұрыс; оған енді сыймайтын пакеттер беріліп жатыр.

Жолдың MTU-ы шын мәнінде қайда кетеді

Әр инкапсуляция келесі қабат кезек алғанға дейін байт жұмсайды. Ethernet жолы сыртқы пакетке 1500 байт ұсынады, ал сыртқы туннель оның ішіндегі ештеңе мекенжайлануы мүмкін болмай тұрып өз үлесін алады. Бір болжамды үстеме шығын мәні дәл маңызды болатын мөлшерде қате болады.

Қабаттарды ретімен тізіңіз: қатынау жолы, сыртқы тасымалдау, сыртқы туннель, ішкі тасымалдау, ішкі туннель, қолданба. Әр тақырыпты бір рет санаңыз және UDP-ны туннельдің өз тақырыбы мен тегінен бөлек ұстаңыз.

Екі WireGuard қабаты, бір рет саналған

IPv4 қатынау жолын алыңыз, ішінде тағы бір WireGuard туннелі бар. Сыртқы қабат 20 байт IPv4, 8 байт UDP және WireGuard деректер тақырыбы мен оның аутентификация тегі үшін 32 байт жұмсайды. Соның ішінде ішкі туннельге өзінің 20 байттық IPv4 тақырыбы мен 8 байттық UDP тақырыбы екінші 32 байт WireGuard үстемесінің алдында қажет. Қалғаны IPv4 тақырыбын, TCP тақырыбын және деректерді сыйдырады. Сыртқы IPv6 жолы 20 орнына 40 жұмсайды және 1320 қалдырады.

LayerBytes
Path MTU1500
Outer IPv4 header20
Outer UDP header8
Outer WireGuard header and tag32
Inner transport IPv4 header20
Inner UDP header8
Inner WireGuard header and tag32
Innermost IPv4 header20
TCP header20
Payload that fits1340

Арифметика 1340 байтқа түседі. Сол ережелермен бір қабат TCP пайдалы жүктемесіне 1400 қалдырады, яғни 1500 минус 20, 8, 32, 20 және 20, ал 60 байт айырмашылық — екінші туннель қосатын дәл сол ішкі инкапсуляция.

1400-ді кірістірілген жолға қолданыңыз, ішкі туннельге 60 байт жетпейді, пакет оларды қажет ететіндей үлкен болғанша көрінбейді. Толтыру және протоколдың өзіндік фрагментация опциясы сандарды қайта жылжытады, сондықтан кестеге сеніңіз.

MTU, MSS және фрагментация әртүрлі жерлерде әрекет етеді

Интерфейс MTU интерфейс шығаратынды шектейді, ал TCP MSS қысуы TCP серіктесінің не жіберуге дайын екенін өзгертеді. Қысу TCP сессияларын түзетеді және үлкен UDP дейтаграммасы үшін ештеңе істемейді, осылайша түзету бір қолданба үшін сәтті көрініп, келесісін үнсіз өткізіп жібереді. Протоколдың өзіндік фрагментация опциясы өз сәтсіздіктері бар үшінші тұтқа. Интерфейс MTU — кәдімгі бірінші қадам және ең дөрекісі.

Көпірленген және маршрутталған туннельдер әртүрлі кадрларды тасымалдайды, сондықтан басқа орналасудың сандары сирек ауысады. Жолдың MTU анықталуы, ол сипатталған RFC 8201-де, тек оған тәуелді ICMP хабарлары өткізілген кезде ғана көмектеседі.

Жетпейтін қабатты табу

Талаптар салыстыруға мүмкіндік берсе, кірістіру алдында әр туннельді жеке тексеріңіз. Тұрақты өлшемді зонд мұны шешеді: ping -M do -s 1472 -c 3 10.8.0.1 сол қабаттың ішінде толық 1500 байттық IPv4 пакетін жібереді. Екінші қабатты қосып, сол зондты қайталаңыз, сонда кез келген сәтсіздік белгілі өзгеріске жатады.

Тасымалдау тұрып қалса, бір уақытта бір құжатталған параметрді өзгертіп, сәтсіз болатын өлшемді жазып алыңыз. Қайту жолын да тексеріңіз, өйткені кірістірілген маршрут рекурсиясы пакет өлшемі мәселесін бір түстен кейінгі уақытты кетіретіндей дәл көшіре алады. Сүзілген ICMP жауабы нақты шекті жасыра алады, сондықтан зонд пайымдаудан маңыздырақ.

Бюджетті келесі адам табатын жерге жазыңыз

Әр қабатқа бір жолдан кесте саусақ ережесінен ұзағырақ өмір сүреді. Оны туннель диаграммасының жанында ұстаңыз, сонда ешкім қысым кезінде арифметиканы қайта жасамайды.

Көбірек туннель көбірек тәуелділік дегенді білдіреді, сондықтан кері қайтару жоспары бюджеттің жанында өз орнын алады. Сандар әлі келмесе, қайта болжаудың орнына жолды өлшеңіз. Мақсат — қорғай алатын сан, жаттайтын сан емес.

Қатысты мақалалар