Негде у неком водичу постоји број, обично између шездесет и осамдесет бајтова, који је неко одузео од 1500 да би добио MTU интерфејса. Тај број описује једну конкретну инкапсулацију на једном конкретном путу. Промените режим, спољну породицу адреса, шифру или присуство NAT-а и аритметика више не важи за ваш тунел.

Број је дошао из другог тунела

Трошак није својство IPsec-а у апстрактном смислу. То је својство пакета који се заиста гради: договорени режим, спољно заглавље, заштитно заглавље, допуна, поље интегритета и могуће додатни UDP омотач.

Број наведен за транспортни режим са IPv4 и без NAT-а описује мањи пакет од тунелског режима са IPv6 под NAT пролазом. Обе су тачне за свој случај. Копирање било које од њих у друго распоређивање је начин на који људи заврше са MTU-ом који ломи велике преносе. Отказ је тих јер мали захтеви настављају да раде.

Саберите слојеве који заиста постоје

Почните од спољног IP заглавља и идите ка унутра. У тунелском режиму оригинални пакет је унутра, па је спољно заглавље додатак, а не замена. RFC 4303 описује ESP заглавље, допуну и податке интегритета који га следе.

LayerWhat it addsWhen it applies
Outer IP header20 bytes for IPv4, 40 for IPv6Always, and 40 rather than 20 if the outer path is v6
ESP header8 bytes of SPI and sequence numberAlways
Block cipher IV8 to 16 bytes depending on the transformWhen the negotiated cipher uses one
Padding and trailerPadding to the block size, plus two trailer bytesAlways, and the amount varies with payload length
Integrity data12 to 16 bytes for common authenticated ciphersWhen integrity protection is negotiated
UDP encapsulation8 bytesNAT traversal on port 4500, which is common for clients behind NAT

Ниједан од тих редова није сталан међу распоређивањима, а ред са допуном није сталан ни унутар једног распоређивања. То је цео разлог зашто један објављени број трошка разочара.

Две локације могу да се не сложе око истог тунела

Заштићени пакет ипак мора да пређе спољни пут, а спољни пут није свуда исти. PPPoE приступна веза носи мање од чистог Ethernet сегмента. Мобилна мрежа може додатно да се смањи, а провајдер који тунелује сопствени саобраћај додаје још једну инкапсулацију коју нико није поменуо. Тунел који ради на једној вези, а пада на другој, описује другу везу, а не протокол.

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

Мерите уместо да одузимате

Нађите највећу датаграму која преживи пут. Затим је упоредите са вредношћу коју пријављује интерфејс:

ip link show eth0 | grep -o 'mtu [0-9]*'
ip xfrm state list
ping -M do -s 1400 198.51.100.7
ping -M do -s 1372 198.51.100.7
tcpdump -ni any -c 20 'esp or udp port 4500'

Спуштајте величину ping-а док не стигну одговори и узмите највећу радну вредност као буџет за тај пут. Излаз xfrm-а каже који су режим и који алгоритми договорени, а то је улаз за сваку поштену рачуницу. Снимак потврђује да ли је на жици ESP или ESP умотан у UDP, што решава питање NAT-а без нагађања.

Одвојите једну вредност и за контролну раван. IKE пакети руковања имају другачију структуру од податковних пакета, па величина изведена из снимка руковања није MTU податне равни.

Ставите број тамо где му је место

За TCP кроз тунел, ограничење MSS-а је често најмање инвазивна контрола, јер смањује оно што крајње тачке шаљу без промене самог тунела. За тунел заснован на рутама, поставите MTU тунелског интерфејса намерно и документујте зашто. Ако урадите обоје одједном и затим мерите, не добијате никакву информацију о томе шта је помогло.

Држите заједно у тикету договорени режим, спољну породицу, стање NAT-а и симптом који може да се понови. Записани скуп од четири чињенице побеђује запамћену константу, и то је једина верзија овога која преживљава следећу надоградњу клијента.

Повезани чланци