Nalgún lugar dunha guía hai un número, normalmente entre sesenta e oitenta bytes, que alguén restou de 1500 para obter unha MTU de interface. Ese número describe un encapsulamento concreto nun camiño concreto. Cambie o modo, a familia de enderezos exterior, o cifrado ou a presenza de NAT, e a aritmética xa non se aplica ao seu túnel.

O número veu doutro túnel

A sobrecarga non é unha propiedade de IPsec en abstracto. É unha propiedade do paquete que realmente se constrúe: un modo negociado, unha cabeceira exterior, unha cabeceira de protección, recheo, un campo de integridade e quizais unha envoltura UDP adicional.

Unha cifra citada para o modo transporte con IPv4 e sen NAT describe un paquete máis pequeno que o modo túnel con IPv6 baixo travesía de NAT. Ambas son correctas para o seu propio caso. Copiar calquera delas a un despregamento distinto é como a xente acaba cunha MTU que rompe as transferencias grandes. O fallo é silencioso porque as peticións pequenas seguen funcionando.

Sume as capas que realmente están aí

Comece pola cabeceira IP exterior e avance cara a dentro. En modo túnel o paquete orixinal está dentro, así que a cabeceira exterior é un engadido e non un substituto. RFC 4303 describe a cabeceira ESP, o recheo e os datos de integridade que a seguen.

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

Ningunha desas filas é constante entre despregamentos, e a fila do recheo non é constante nin sequera dentro dun mesmo despregamento. Esa é toda a razón pola que unha soa cifra publicada de sobrecarga decepciona.

Dous sitios poden discrepar sobre o mesmo túnel

O paquete protexido segue tendo que cruzar o camiño exterior, e o camiño exterior non é o mesmo en todas partes. Unha ligazón de acceso PPPoE leva menos que un segmento Ethernet limpo. Unha rede móbil pode encollerse máis, e un provedor que tuneliza o seu propio tráfico engade outro encapsulamento que ninguén mencionou. Un túnel que funciona nunha ligazón e falla noutra está describindo a segunda ligazón, non o protocolo.

As dúas direccións tamén poden diferir. Unha ruta asimétrica pode darlle unha subida que funciona e unha baixada atascada, o que se le como un problema de aplicación ata que mira os tamaños de paquete en lugar da alcanzabilidade. Un ping pequeno que funciona demostra moi pouco sobre unha resposta de tamaño completo.

Mida en lugar de restar

Atope o datagrama máis grande que sobrevive ao camiño. Despois compáreo co valor que informa a interface:

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'

Baixe o tamaño do ping ata que cheguen respostas, e tome o maior valor que funcione como orzamento para ese camiño. A saída de xfrm dille que modo e que algoritmos se negociaron, que é a entrada de calquera cálculo honesto. A captura confirma se no cable hai ESP ou ESP encapsulado en UDP, o que resolve a cuestión do NAT sen adiviñar.

Reserve tamén un valor para o plano de control. Os paquetes de aperta de mans IKE teñen unha estrutura distinta da dos paquetes de datos, así que un tamaño derivado dunha captura de aperta de mans non é unha MTU do plano de datos.

Pon o número onde corresponde

Para TCP a través dun túnel, un axuste de MSS adoita ser o control menos invasivo, porque reduce o que envían os extremos sen cambiar o túnel mesmo. Para un túnel baseado en rutas, fixe a MTU da interface do túnel a propósito e documente por que. Facer as dúas cousas á vez e despois medir non lle dá ningunha información sobre cal axudou.

Manteña xuntos no ticket o modo negociado, a familia exterior, a condición de NAT e o síntoma reproducible. Un conxunto rexistrado de catro feitos supera unha constante recordada, e é a única versión disto que sobrevive á próxima actualización do cliente.

Artigos relacionados