OpenVPN mssfix: ինչու է մեկ հաճախորդը կանգ առնում մեծ փոխանցումների ժամանակ
mssfix-ը վերագրում է թունելի ներսում հայտարարված TCP սեգմենտի չափը։ Այն չի փոխում UDP-ն, և արժեքը նշանակում է միայն այն, ինչ ասում է ձեր տարբերակը։
Մեկ նոթբուք կանգ է առնում թունելով վերբեռնումների ժամանակ, մինչդեռ նույն սերվերի մյուս բոլոր սարքերը շարունակում են աշխատել։ Այս պատկերը մատնանշում է մեկ ուղի, ոչ թե սերվերի կարգավորումը, և դա mssfix հարցի սովորական մուտքն է։ Տարբերակը կարող է օգնել, բայց միայն այն TCP միացումներին, որոնք այն իսկապես վերագրում է։ Դրա շրջանակն իմանալը ձեզ հետ է պահում աշխատող սերվերը փոխելուց՝ մեկ հաճախորդ փրկելու համար։
Ինչ է վերագրում տարբերակը
mssfix-ը խմբագրում է թունելով անցնող TCP ձեռքսեղմումներում հայտարարված սեգմենտի առավելագույն չափը, որպեսզի ուղարկող կողմը ընտրի սեգմենտներ, որոնք տեղավորվում են փաթեթավորված բյուջեում։ Այն ազդում է ձեռքսեղմման վրա, ինչը նշանակում է, որ փոփոխությունից առաջ բացված միացումը պահպանում է սակարկված արժեքը։
Այն չի փոքրացնում UDP դատագրամները և չի սահմանում թունելի MTU-ն։ Երկու տարբեր խնդիրներ առաջացնում են նույն ախտանիշը՝ TCP ուղարկող, որը անտեսում է ուղու սահմանը, և ուղի, որը լուռ գցում է ցանկացած չափի մեծ փաթեթներ։ mssfix-ը լուծում է առաջինը և ոչինչ չի անում երկրորդի համար։
Այս տարբերությունը բացատրում է հիասթափեցնող փորձերը։ Սև խոռոչով ուղու վրա ավելի փոքր արժեք սահմանելը փոխում է սեգմենտի չափը, բայց ոչ դրան հաջորդող կորուստը, ուստի փոխանցումը ձախողվում է այլ կետում։
Շրջանակը թունելի ներսում TCP-ն է
Վերագրվում է միայն TCP երթևեկությունը։ QUIC սեսիան, խաղը կամ մեծ UDP դատագրամներ ուղարկող հավելվածը կպահպանի իր փաթեթի չափերը, և եթե հենց այդ փոխանցումներն են կանգ առնում, ուղղումը պատկանում է ավելի շուտ թունելի կամ ուղու MTU-ին։ Կարդացեք, թե որ արձանագրությունն է օգտագործում ձախողված փոխանցումը, նախքան TCP տարբերակին դիմելը, որովհետև սխալ շերտն ունի իր ուղղումը։
Ուղղությունը նույնպես կարևոր է։ Հաճախորդի կարգավորումն ազդում է այն երթևեկության վրա, որը այդ հաճախորդն ուղարկում է թունել, մինչդեռ սերվերը ծածկում է այն հոսքերը, որոնք փոխանցում է դեպի հաճախորդներ։ Եթե կանգ են առնում միայն մուտքային ներբեռնումները, հաճախորդի կողմի արժեքը ամբողջ պատմությունը չէ։
Թիվը և հիմնաբառը տեղափոխելի չեն
OpenVPN 2.6-ի համայնքային տարբերակը արժեքից հետո ընդունում է կամընտիր հիմնաբառ։ mtu-ի դեպքում թիվը նկարագրում է արտաքին փաթեթի չափը՝ ներառյալ IP և UDP վերնագրերը, առանց դրա արգումենտը հետևում է այլ հաշվառման կոնվենցիայի։ Ուստի տարբերակների միջև պատճենված տողը չի նկարագրում նույն փաթեթային բյուջեն։ Ստուգեք ձեռնարկի էջը, որը գալիս է ձեր իրականում գործարկվող կառուցվածքի հետ, այլ ոչ թե այլ թողարկման ձեռնարկ։
Շարահյուսությունն այսպիսի տեսք ունի:
mssfix 1400 mtu
1400-ը դիտարկեք որպես տեղապահ, ոչ թե ձեր ուղու համար առաջարկություն։ Արժեքը բխեցրեք չափված ուղուց և իրականում օգտագործվող փաթեթավորումից, և հիշեք, որ հին տարբերակների կամ այլ իրականացումների հաճախորդները կարող են մերժել կամ այլ կերպ մեկնաբանել հիմնաբառը։
Նախ հաստատեք մեկ հաճախորդի վրա
Նախքան որևէ բան փոխելը չափեք ուղին ձախողված մեքենայից։ Բեռը, որը ուղին կարող է տանել առանց մասնատման, այն թիվն է, որը փնտրում եք:
ping -M do -s 1472 10.8.0.1
ping -M do -s 1400 10.8.0.1
Առաջին փորձը տեղավորվում է 1500 բայթանոց փաթեթում, երբ ավելացվում են 28 բայթ վերնագրեր։ Եթե այն ձախողվում է մասնատման սխալով, իսկ ավելի փոքրը հաջողվում է, օգտագործելի չափը գտնվում է նրանց միջև ինչ-որ տեղ, և թունելի վերադիր ծախսը հանվում է վերևից։
Այնուհետև կրկնեք կանգ առած փոխանցումը նոր միացման վրա և համեմատեք։ Եթե միակ հաճախորդը բարելավվում է, մինչդեռ մյուսները մնում են անձեռնմխելի, դուք գտել եք խնդրի շրջանակը։ Եթե բոլոր հաճախորդները կանգ են առնում, սերվերի կողմի արժեքն է, որ պետք է վերանայվի։ Արդյունքներից ոչ մեկը չի արդարացնում փոփոխություն այն սարքաշարում, որը երբեք չի եղել ձախողված ուղու վրա։