Tunel dovrši rukovanje, mali zahtjevi se vraćaju, a prvi veliki prijenos zapne. Taj obrazac upućuje na MTU putanje mnogo prije nego na propusnost. Svaka veza duž rute ograničava veličinu paketa, a enkapsulacija troši dio tog dopuštenja na vanjska zaglavlja, pa unutarnji paket mora biti manji nego što bi sirova putanja sugerirala. Kvar je tih, i to ga čini skupim za dijagnosticiranje.

Što MTU putanje zapravo mjeri

MTU putanje najmanji je MTU veze na ruti između dva hosta, a ne MTU ispisan na vašem lokalnom sučelju. Lokalna vrijednost je početna točka procjene, a putanja odlučuje gdje ona mora završiti. Zato isti tunel može raditi na jednoj pristupnoj mreži, a zapeti na drugoj: ruta se promijenila, a konfiguracija nije. Izmjeriti jednom i pretpostaviti svugdje pogreška je koja ovaj problem održava živim.

Za tunel je važan broj unutarnji MTU, a to je dopuštenje vanjske putanje umanjeno za ono što enkapsulacija troši. WireGuard dodaje vanjsko IP zaglavlje i UDP zaglavlje; drugi transporti dodaju svoja. Postavite unutarnju veličinu previsoko i svaki paket pune veličine treba fragmentaciju koja se možda nikada neće dogoditi.

Zašto tunel smanjuje upotrebljivi paket

Ako sučelje tunela zadrži MTU fizičke veze, svaki veliki paket ovisi o tome da će ga netko nizvodno htjeti fragmentirati. IPv4 to načelno dopušta, ali usmjerivač kojemu je rečeno da ne fragmentira vraća pogrešku. IPv6 usmjerivači nikada ne fragmentiraju u tranzitu, pa se ista postavka ponaša različito prema obitelji adresa. U svakom slučaju pošiljatelj ne nauči ništa dok nešto ne izvijesti natrag.

Praktična posljedica je veličina koja stane u rukovanje, ali ne u korisni teret. TLS ClientHello ili DNS upit dovoljno su mali da prijeđu smanjenu putanju netaknuti, dok masovni prijenos nije. Simptomi se zato okupljaju oko određenih operacija, a ne određenih hostova.

Otkrivanje radi samo kad povratna informacija stigne

IPv4 otkrivanje oslanja se na bit don't-fragment: usmjerivač koji ne može proslijediti paket vraća ICMP fragmentation-needed s MTU-om sljedećeg skoka, a pošiljatelj snižava svoju procjenu. IPv6 umjesto toga rabi poruke Packet Too Big jer usmjerivači ne fragmentiraju u tranzitu. Oba mehanizma pretpostavljaju da će poruka pronaći put natrag do pošiljatelja, kroz tunel i pokraj svakog vatrozida na povratnom putu. Kad ta pretpostavka zakaže, pošiljatelj stalno iznova pokušava veličinu koju putanja ne može prenijeti.

Vatrozid koji dopušta echo request i echo reply nije nužno dopustio te vrste pogrešaka. ICMP je obitelj, a članovi koji su ovdje važni jesu pogreške, ne par odjeka. Provjerite politiku kontrolnog prometa na oba kraja tunela i na putu između njih, i slijedite podržane smjernice platforme umjesto da posvuda dopustite svaku vrstu ICMP-a.

Isto filtriranje može sjediti unutar tunela. Ako unutarnja putanja odbaci pogrešku, ali je vanjska prenese, pošiljatelj se može prilagoditi granici koju enkapsulirani promet nikada zapravo ne vidi.

Ispitajte putanju umjesto da nagađate broj

Držite odredište, pristupnu mrežu i tunel fiksnima, a mijenjajte samo veličinu paketa. don't-fragment ispitivanje koje zakaže uz MTU naznaku daje vam granicu sljedećeg skoka; ponavljajte dok neka veličina ne prođe, i zabilježite i veličinu i obitelj adresa.

ping -M do -s 1400 10.60.20.10
ping -M do -s 1300 10.60.20.10
ping -6 -M do -s 1300 2001:db8::10

Ping koji stane ne dokazuje da stanu segmenti pune veličine stvarne aplikacije, pa ponovite test s prijenosom koji je doista zakažao. Usporedite najveće ispitivanje koje je radilo s MTU-om tunela koji ste konfigurirali, i držite ta dva broja odvojeno u bilješkama. Ako se razlikuju otprilike za jedno zaglavlje, pronašli ste enkapsulacijski višak, a ne kvar.

PLPMTUD, opisan u RFC 4821, ispituje prema gore i rabi transportne potvrde umjesto da vjeruje dostavljenim pogreškama. Pomaže na putanjama koje filtriraju ICMP, ali podrška varira po stogu i po aplikaciji. TCP tok može se sam oporaviti dok UDP aplikacija s fiksnom veličinom datagrama stalno zakaže.

Odaberite vrijednost i zabilježite obrazloženje

Sniziti MTU tunela i dijagnostika je i legitiman popravak kad jednom poznajete putanju. Nije zamjena za znanje o tome koja je putanja i koji mehanizam povratne informacije bio uključen, jer će vrijednost podešena za mobilnu vezu biti nepotrebno mala na optičkom spoju. Zabilježite odabranu veličinu, ispitivanje koje ju je opravdalo i korak vraćanja.

IPv4 mehanizam opisan je u RFC 1191, a smjernice za IPv6 paketizaciju u RFC 8201; navođenje obojega sprječava sljedećeg inženjera da ponovno izvodi pretpostavku. Ako prijenos i dalje zapinje na veličini koju ste odabrali, prestanite snižavati broj i pogledajte sljedeći sloj. Putanja koja zakaže na svakoj veličini nije MTU problem.

Povezani članci