Неуспесите на IPv6 многу почесто се препишуваат на протоколот отколку на големината на пакетот што ги предизвикала. Двете семејства навистина поинаку се справуваат со преголем пакет, а тунелот е она што ја прави разликата важна. IPv4 рутерите смеат да фрагментираат пакет кога правилата го дозволуваат, додека IPv6 рутерите не смеат да фрагментираат во транзит воопшто. IPv6 наместо тоа му кажува на испраќачот, и се очекува испраќачот да реагира. Сѐ што потоа тргнува наопаку произлегува од тоа дали таа порака пристигнува.

Што прави секое семејство

Табелата е механизмот во четири реда, и еден ред го објаснува најголемиот дел од конфузијата.

BehaviourIPv4IPv6
Router fragments an oversized packetAllowed while DF is clearNever
Signal returned to the senderICMP Fragmentation NeededICMPv6 Packet Too Big
Size that must always work68 bytes1280 bytes
Fragmentation possibleRouters or sourceSource only

IPv6 нема фрагментација во транзит и нема DF знаменце што треба да се исчисти, затоа нема на што да се потпре кога пакетот е преголем. На испраќачот мора да му се каже, и испраќачот мора да го верува тоа.

Тунелот тивко го стеснува патот

VPN додава надворешни заглавија, а во шифрираниот случај и податоци за интегритет, пред пакетот да го напушти домаќинот. Внатрешниот пакет може да се вклопи во MTU на интерфејсот што го гледа, додека надворешниот пакет ја надминува границата на следната врска, и затоа ова се појавува најпрво во тунел. Намерно намалете го MTU на тунелскиот интерфејс, или затегнете TCP MSS на патот, и запишете кој број го избравте и зошто.

Трошокот на ESP зависи од режимот и алгоритмите, затоа точниот MTU на тунелот е пресметка, а не конвенција. Што и да изберете, тоа мора да остави простор за целосен внатрешен IPv6 пакет од 1280 бајти, бидејќи секоја IPv6 врска мора да носи толку. Тунел што не може да носи 1280 бајти IPv6 не е проблем со подесување; тој е скршен пат за тоа семејство. Токму тоа ограничување исчезнува кога вредност за MTU се копира од распоред што користи само IPv4.

Зошто симптомот е застој

Неуспехот не е чиста грешка, и затоа се дијагностицира погрешно. TCP ракувањето завршува, мали одговори пристигнуваат, и врската запира штом започне голем одговор или големо качување, бидејќи тоа се првите пакети доволно големи за да бидат отфрлени. SSH се поврзува и потоа запира на првиот голем излез, а заглавието на страницата се вчитува додека телото никогаш не завршува.

Ако пораките на ICMPv6 за преголем пакет се филтрираат, испраќачот никогаш не дознава и постојано ја повторува истата големина. Тоа е црна дупка, а не бавен пат, и неговиот белег е повторлива граница на големината, а не случајна загуба. Дозволувањето на соодветниот контролен сообраќај е дел од работата на IPv6 распоредот, а не љубезност.

Не ги исклучувајте пораките од кои зависи вашиот сопствен пат, а потоа резултатот не го опишувајте како дефект на IPv6. Истиот аргумент важи и за пораките Fragmentation Needed на IPv4, кои се исто толку непопуларни кај авторите на заштитни ѕидови и исто толку неопходни.

Измерете ја границата, потоа поправете го слојот

Проверете наместо да гаѓате: користете го знаменцето don't-fragment на IPv4 и фиксни големини на товарот на IPv6, и запишете каде запираат одговорите. ping -M do -s 1472 и ping -6 -s 1400 се доволни за да се утврди формата на проблемот, и tracepath го известува откриениот MTU на патот по пат.

Потоа поправете го слојот што го поседува бројот: MTU на тунелскиот интерфејс, затегнувањето на MSS за TCP, или самиот пат. RFC 8200 е референца за правилото на IPv6, и се чита пократко од инцидентот што го спречува.

Тестирајте го семејството што апликацијата навистина го користи, бидејќи име со двоен стек може да одговори на едно семејство, а не на другото, и апликацијата може да префрли по промена на мрежата. Запишете ја адресата што сте ја тестирале, бидејќи резултатот против записот A не кажува ништо за записот AAAA.

Третирајте ја границата на големината како доказ

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

Запишете го откриениот MTU, MTU на тунелот што сте го конфигурирале и тестот што ја докажа разликата во тикетот. Следниот човек ќе ја сретне истата аритметика на друга врска.

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