OpenVPN uz PPPoE: samazināt link-mtu, tun-mtu vai mssfix?
Ping darbojas, bet lielas lapas iestrēgst PPPoE vai DS-Lite līnijā. Izlemiet starp link-mtu, tun-mtu un mssfix, izmērot ceļu, nevis minot.
Ping atbild, DNS atrisina, un katra lapa, kurai vajadzīgs pilns segments, iestrēgst. Līnijā, kas pievieno savu iekapsulējumu, ceļš klusi zaudē dažus desmitus baitu budžeta, un profils, kas rakstīts tīram Ethernet, turpina prasīt paketes, ko līnija nespēj pārnest. Savienojums nav lēns; tas izmet tieši tās paketes, kurām ir nozīme.
Trīs iespējas var to salabot, un tās darbojas dažādos slāņos. Nepareizā izvēle vai nu neko nedara, vai padara tuneli trauslu jaunā veidā, tāpēc izvēle sākas ar to, ko ceļš patiešām atbalsta.
Trīs pogas, trīs dažādi slāņi
link-mtu ir ārējais budžets: šifrētā lietderīgā slodze plus OpenVPN galvene, UDP galvene un ārējā IP galvene. Tas apraksta, kas iziet no mašīnas, un tāpēc tas ir skaitlis, ko ierobežo fiziskais ceļš.
tun-mtu ir iekšējais budžets: saskarne, ko redz jūsu trafiks. Tas ir tieši par tuneļa papildu izmaksām lielāks nekā tas, ko ceļš spēj pārnest, un OpenVPN to parasti atvasina, nevis liek jums to iestatīt.
mssfix ir pavisam cits mehānisms. Tas pārraksta maksimālo segmenta izmēru, kas tiek paziņots TCP rokas sasveicināšanās laikā, lai TCP partneri izvēlētos segmentus, kas ietilpst pēc iekapsulējuma. Tas nemaina saskarnes MTU un neietekmē UDP.
Ja link-mtu iestatāt tieši, OpenVPN atņem savas papildu izmaksas, lai atvasinātu iekšējo MTU. Šīs izmaksas nav fiksēta konstante; tās ir atkarīgas no šifra un autentifikācijas, tāpēc no foruma nokopēta vērtība citā profilā var būt nepareiza. Iestatot gan link-mtu, gan tun-mtu, jūs klientam dodat divus pretrunīgus norādījumus.
Izmēriet ceļu, pirms izvēlaties jebkuru skaitli
Mēriet no fiziskās saskarnes, nevis no tuneļa iekšpuses, un atcerieties, ka ping ziņo par lietderīgo slodzi, nevis paketes izmēru. Pirms lietderīgās slodzes salīdzināšanas ar 1500 baitu rāmi pievienojiet 28 baitus IPv4 un ICMP galvenēm, un paturiet šo korekciju prātā, kad partneris ziņo citu skaitli.
Linux klientā ping -M do -s 1472 aizliedz fragmentāciju un neizdodas, ja pakete ir pārāk liela. Samaziniet lietderīgo slodzi, līdz tā iziet, pēc tam pievienojiet 28, lai iegūtu ceļa MTU. PPPoE izmaksā 8 baitus, tāpēc DSL 1492 ir normāli. DS-Lite un daži mobilie ceļi izmaksā 40 vai vairāk, un atbilde parasti ir zemāka, nekā liecina nominālais līnijas ātrums.
Ja katrs ping izmērs izdodas, bet lieli pārnesumi joprojām iestrēgst, aizdomājieties par melno caurumu, nevis vienkāršu izmēra ierobežojumu. ICMP ziņojums par nepieciešamo fragmentāciju tiek filtrēts kaut kur ceļā, tāpēc sūtītājs nekad neiemācās samazināt, un to pamana tikai plūsmas, kurām vajadzīgs liels segments.
Vispirms ierobežojiet TCP, pēc tam samaziniet tuneli
TCP rokas sasveicināšanās ir vienīgais, ko mssfix skar, tāpēc tas parasti ir vismazāk traucējošā vadība, ko izmēģināt vispirms. Iestatiet to nedaudz zem ceļa reālā budžeta, nosūtiet to pašu vērtību no servera, lai abi gali vienotos, un vēlreiz pārbaudiet lielu lejupielādi. Ja iestrēgums pazūd, problēma bija TCP segmenta izmērs, un nekas cits nav jāmaina.
Samaziniet iekšējo MTU, ja skartais trafiks nav TCP. UDP pakalpojums, tunelis tuneļa iekšienē vai lietojumprogramma, kas sūta pilna izmēra datagrammas, pēc MSS ierobežojuma joprojām neizdosies, jo nekas nepārraksta tās paketes izmēru. Šajā gadījumā samaziniet tun-mtu, vai iestatiet link-mtu un ļaujiet klientam atvasināt iekšējo vērtību, bet nekad abus.
Neķerieties pie vecās fragmentācijas opcijas. Tā sadalīja paketes tuneļa iekšienē, pievienoja papildu izmaksas un pamatotu iemeslu dēļ ir novecojusi; mūsdienu OpenVPN sagaida precīzu ceļa aprakstu.
Kāpēc mazi testi turpina darboties
DNS vaicājumi, ICMP atbalsis un TCP rokas sasveicināšanās ir visi krietni zem izmēra, kas neizdodas. Tāpēc tunelis katrā ātrā testā šķiet vesels, kamēr TLS rokas sasveicināšanās un HTTP atbildes klusi neizdodas. Tieši šī kombinācija, strādājošs traceroute un pārlūks, kas iestrēgst pie pirmās lielās atbildes, ir pazīme, kas jāmeklē. Ķerieties pie pilna izmēra testa, pirms ķeraties pie jauna profila.
Pārbaudiet ar trafiku, kas neizdevās. Ielādējiet lielu lapu, nosūtiet pilna izmēra UDP datagrammu, ja tas ir skartais pakalpojums, un atkārtojiet no otra klienta citā līnijā. Pierakstiet izmērīto ceļa MTU un izvēlēto vērtību, jo citādi nākamais cilvēks, kas aiztiks profilu, uzskatīs šo skaitli par patvaļīgu.
Nekad nelaidiet iekšējo MTU zem 1280, kad IPv6 iet pa tuneli, jo tas ir minimums, kas jāpārnes katrai IPv6 saitei. Mazāks MTU ir fakts par ceļu, nevis veiktspējas iestatījums, ko regulēt pēc sajūtas.