Undeva într-un ghid există un număr, de obicei între șaizeci și optzeci de octeți, pe care cineva l-a scăzut din 1500 pentru a obține un MTU de interfață. Acel număr descrie o încapsulare anume pe o cale anume. Schimbați modul, familia de adrese exterioară, cifrul sau prezența NAT, iar aritmetica nu se mai aplică tunelului dumneavoastră.

Numărul a venit dintr-un alt tunel

Costul suplimentar nu este o proprietate a IPsec în abstract. Este o proprietate a pachetului care este într-adevăr construit: un mod negociat, un antet exterior, un antet de protecție, umplutură, un câmp de integritate și eventual un înveliș UDP suplimentar.

O cifră citată pentru modul transport cu IPv4 și fără NAT descrie un pachet mai mic decât modul tunel cu IPv6 sub traversare NAT. Ambele sunt corecte pentru cazul lor. Copierea uneia dintre ele într-o altă implementare este felul în care oamenii ajung cu un MTU care rupe transferurile mari. Defectul este silențios pentru că cererile mici continuă să funcționeze.

Adunați straturile care există cu adevărat

Începeți cu antetul IP exterior și mergeți spre interior. În modul tunel pachetul original este înăuntru, deci antetul exterior este o adăugare, nu o înlocuire. RFC 4303 descrie antetul ESP, umplutura și datele de integritate care îl urmează.

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

Niciunul dintre acele rânduri nu este constant între implementări, iar rândul umpluturii nu este constant nici măcar într-o singură implementare. Acesta este tot motivul pentru care o singură cifră publicată a costului suplimentar dezamăgește.

Două locații pot să nu fie de acord cu privire la același tunel

Pachetul protejat trebuie totuși să traverseze calea exterioară, iar calea exterioară nu este aceeași peste tot. O legătură de acces PPPoE duce mai puțin decât un segment Ethernet curat. O rețea mobilă poate să se micșoreze și mai mult, iar un furnizor care își tunelează propriul trafic adaugă o altă încapsulare pe care nimeni nu a menționat-o. Un tunel care funcționează pe o legătură și eșuează pe alta descrie a doua legătură, nu protocolul.

Și cele două direcții pot diferi. O rută asimetrică vă poate da un upload funcțional și un download blocat, ceea ce se citește ca o problemă a aplicației până când vă uitați la dimensiunile pachetelor în loc de accesibilitate. Un ping mic care reușește dovedește foarte puțin despre un răspuns de dimensiune completă.

Măsurați în loc să scădeți

Găsiți cel mai mare datagram care supraviețuiește căii. Apoi comparați-l cu valoarea pe care o raportează interfața:

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'

Coborâți dimensiunea ping-ului până când sosesc răspunsuri și tratați cea mai mare valoare funcțională ca bugetul acelei căi. Ieșirea xfrm vă spune ce mod și ce algoritmi au fost negociați, iar aceasta este intrarea pentru orice calcul cinstit. Captura confirmă dacă pe fir este ESP sau ESP încapsulat în UDP, iar asta rezolvă întrebarea NAT fără ghicit.

Rezervați o valoare și pentru planul de control. Pachetele de strângere de mână IKE au o structură diferită de pachetele de date, așa că o dimensiune derivată dintr-o captură de strângere de mână nu este un MTU al planului de date.

Puneți numărul unde îi este locul

Pentru TCP printr-un tunel, o limitare MSS este adesea cel mai puțin invaziv control, pentru că reduce ce trimit capetele fără a schimba tunelul în sine. Pentru un tunel bazat pe rute, setați deliberat MTU-ul interfeței tunelului și documentați de ce. A face ambele deodată și apoi a măsura nu vă spune nimic despre care a ajutat.

Țineți împreună în tichet modul negociat, familia exterioară, condiția NAT și simptomul reproductibil. Un set înregistrat de patru fapte bate o constantă ținută minte și este singura versiune a acestui lucru care supraviețuiește următoarei actualizări a clientului.

Articole similare