Հեղինակներ:
(1) Tianyi Cui, Վաշինգտոնի համալսարան ([email protected]);
(2) Չենզինգյու Ժաո, Վաշինգտոնի համալսարան ([email protected]);
(3) Wei Zhang, Microsoft ([email protected]);
(4) Kaiyuan Zhang, Վաշինգտոնի համալսարան ([email protected]):
Խմբագրի նշում. Սա 6-րդ ուսումնասիրության 1-ին մասն է, որը մանրամասնում է 7-րդ շերտի բեռի հավասարակշռման օպտիմալացման փորձերը: Մնացածը կարդացեք ստորև։
4.2 Վերջից մինչև վերջ թողունակություն
4.3 Վերջից մինչև վերջ ուշացում
4.4 Հիմնական տեխնիկայի առավելությունների գնահատում
4.5 Իրական աշխատանքի ծանրաբեռնվածություն
Բեռնվածության հավասարակշռող սարքերը լայնորեն օգտագործվում են այսօրվա ամպերի ներսում՝ ցանցային հարցումները տվյալների կենտրոնների սերվերների մեջ մասշտաբային բաշխելու համար: Հաշվի առնելով ծանրաբեռնվածության հավասարակշռող սարքերի լայնածավալ օգտագործումը և դրանց հետ կապված գործառնական ծախսերը, մի շարք ջանքեր կենտրոնացած են դրանց արդյունավետության բարելավման վրա՝ միջուկում ներդնելով 4-րդ շերտի բեռի հավասարակշռման տրամաբանությունը կամ օգտագործելով ապարատային արագացում: Այս աշխատանքը ուսումնասիրում է, թե արդյոք ավելի բարդ և միացմանն ուղղված Layer-7 բեռնվածքի հավասարակշռման հնարավորությունը կարող է նաև օգտվել ապարատային արագացումից: Մասնավորապես, մենք նպատակաուղղված ենք բեռնաթափման հնարավորությունների բեռնաթափմանը ծրագրավորվող SmartNIC-ների վրա: Մենք լիովին օգտագործում ենք SmartNIC-ների ծախսերը և էներգաարդյունավետությունը՝ օգտագործելով երեք հիմնական գաղափարներ: Նախ, մենք պնդում ենք, որ ամբողջական և բարդ TCP/IP կույտ չի պահանջվում Layer-7 բեռի հավասարակշռիչների համար, և փոխարենը առաջարկում ենք թեթև վերահասցեավորող գործակալ SmartNIC-ում: Երկրորդ, մենք մշակում ենք կապի կառավարման տվյալների կառուցվածքներ՝ միաժամանակյա բարձր աստիճանով՝ նվազագույն համաժամանակացմամբ, երբ գործարկվում են բազմամիջուկ SmartNIC-ների վրա: Վերջապես, մենք նկարագրում ենք, թե ինչպես կարելի է արագացնել բեռի հավասարակշռման տրամաբանությունը՝ օգտագործելով SmartNIC-ների վրա հատուկ փաթեթների մշակման արագացուցիչներ: Մենք նախատիպում ենք Laconic-ը երկու տեսակի SmartNIC սարքաշարի վրա՝ հասնելով ավելի քան 150 Գբիտ/վ թողունակության՝ օգտագործելով բոլոր միջուկները BlueField-2-ում, մինչդեռ մեկ SmartNIC միջուկը հասնում է 8,7 անգամ ավելի բարձր թողունակության և Nginx-ի հետ համեմատելի ուշացման մեկ x86 միջուկի վրա:
Բեռի հավասարակշռիչները տվյալների կենտրոնների համար հիմնարար շինանյութ են, քանի որ դրանք հավասարակշռում են ծառայության բեռը կիրառական սերվերների հավաքածուներում [38, 45, 46]: Բեռի հավասարակշռիչները ի սկզբանե կառուցվել են որպես մասնագիտացված ապարատային սարքեր, սակայն այժմ սովորաբար օգտագործվում են որպես ծրագրակազմ, որն աշխատում է ապրանքային սերվերների կամ VM-ների վրա: Այս տեղակայման մոդելն ապահովում է հարմարեցվածության և հարմարվողականության ավելի մեծ աստիճան, քան ապարատային վրա հիմնված հին նմուշները, բայց դա կարող է նաև հանգեցնել բարձր ծախսերի ամպային մատակարարների և կիրառական ծառայությունների համար՝ հաշվի առնելով գնման ծախսերը և ընդհանուր նշանակության սերվերների էներգիայի սպառումը [8]: Կիրառական ծառայությունները հաճախ մեծ ջանքեր են գործադրում՝ համախմբելու և նվազեցնելու բեռի հավասարակշռող սարքերի օգտագործումը՝ ցանկալի ծախսերի խնայողություններ ձեռք բերելու համար [2, 4, 5]:
Հաշվի առնելով ծանրաբեռնվածության հավասարակշռող սարքերի լայնածավալ օգտագործումը և արժեքը, մի շարք ջանքեր կենտրոնացած են դրանց արդյունավետության բարձրացման վրա, հատկապես Շերտ-4 (L4) բեռի հավասարակշռիչները՝ ներդնելով բեռի հավասարակշռման տրամաբանությունը ավելի ցածր, հնարավոր է ապարատային արագացված շերտում: Katran-ը [16] արագացվում է Linux-ի միջուկի ներսում eBPF կոդի միջոցով, այդպիսով միջուկի միջուկի միջուկի միջուկի մեջ գաղտնալսելով և մշակելով փաթեթները և նվազագույնի հասցնելով օգտվողի մակարդակի բեռի հավասարակշռման կոդի անցումների քանակը: ClickNP [32]-ը լուծում է L4 բեռնվածքի հավասարակշռման տրամաբանության որոշ ասպեկտներ (հատկապես NAT-ի նման հնարավորությունները) FPGA միացված SmartNIC-ի վրա և օգտագործում է FPGA սարքերի զուգահեռ մշակման հնարավորությունները: SilkRoad-ը [38] օգտագործում է ծրագրավորվող անջատիչի և վերջնական հոսթի համադրություն՝ L4 բեռի հավասարակշռիչների հետ կապված վիճակը պահելու և անջատիչ խողովակաշարում բեռի հավասարակշռման գործողության հետ կապված տվյալների հարթության փոխակերպումները կատարելու համար:
Թեև այս ջանքերը զգալի ձեռքբերումներ են ունեցել L4 բեռնվածության հավասարակշռման օպտիմալացման գործում, որը հավասարակշռում է երթևեկը ցանցի շերտում, տվյալների կենտրոնի ծառայությունները հաճախ հիմնվում են կիրառական շերտի բեռի հավասարակշռման հնարավորությունների վրա, որոնք հայտնաբերված են միայն Layer-7 (L7) բեռի հավասարակշռիչներում: Մասնավորապես, ծառայությունները կցանկանային ուղղորդել հոսքերը՝ հիմնվելով հաճախորդի հարցման հատկանիշների վրա, պահպանել սեսիայի կապը հաճախորդի հարցումների համար, ապահովել մուտքի վերահսկում և այլն [7]: Սակայն այս հատկանիշները դժվարացնում են L7 բեռի հավասարակշռողների համար կիրառել ապարատային-արագացման տեխնիկան, որն օգտագործվում է L4 բեռի հավասարակշռիչների համար: Հիմնական մարտահրավերն այն է, որ L7 բեռի հավասարակշռման գործողությունը հիմնված է կապի վրա հիմնված տրանսպորտային արձանագրություններում ներկառուցված տեղեկատվության վրա, այդպիսով թվում է, որ պահանջվում է ամբողջական փաթեթային ցանցի մշակման գործակալ բեռնվածության հավասարակշռիչում TCP/HTTP կապերը կարգավորելու համար: Հետևաբար, այսօրվա L7 բեռնաչափերը ընդհանուր ծրագրային լուծումներ են, որոնք կրում են բարձր պրոցեսինգային ծախսեր ապրանքային սերվերների վրա:
Այս աշխատանքում մենք ուսումնասիրում ենք, թե արդյոք մենք կարող ենք բարելավել L7 բեռի հավասարակշռողների արդյունավետությունը՝ օգտագործելով ծրագրավորվող ցանցային սարքավորում: Մենք կենտրոնանում ենք SmartNIC-ների վրա, որոնք ապահովում են ընդհանուր նշանակության հաշվողական միջուկներ՝ համալրված փաթեթների մշակման ապարատով: SmartNIC-ները հատկապես գրավիչ թիրախներ են, քանի որ դրանց հաշվողական միջուկները կարող են ընդունել կամայական արձանագրության տրամաբանություն, մինչդեռ դրանց փաթեթների մշակման արագացուցիչները կարող են արդյունավետ կերպով կատարել տվյալների հարթության փոխակերպումներ: Այսպիսով, SmartNIC-ը համատեղում է ավանդական հոսթինգի հնարավորությունները ծրագրավորվող անջատիչների առաջացող հնարավորությունների հետ և հանդիսանում է համապատասխան թիրախ L7 բեռի հավասարակշռիչների համար: Մեր աշխատանքը նաև մասամբ պայմանավորված է SmartNIC-ների աճող տեղակայմամբ տվյալների կենտրոններում՝ որպես ցանցային առաջադրանքների համար ծախսարդյունավետ և էներգաարդյունավետ հաշվողական հիմք:
Մի քանի մարտահրավերներ պետք է լուծվեն բեռնաթափման գործառույթը SmartNIC-ներում բեռնաթափելու համար: Նախ, SmartNIC միջուկները թուլացած են, հագեցած են սահմանափակ հիշողությամբ և անարդյունավետ են ընդհանուր նշանակության հաշվարկներ իրականացնելիս: Հնարավորության սահմաններում մենք պետք է օգտագործենք թեթև ցանցային կույտեր՝ OS միջուկների ներսում առկա ընդհանուր, լիարժեք ֆունկցիոնալ կույտերի փոխարեն: Երկրորդ, SmartNIC-ների վրա արդյունավետ բազմաբնույթ մշակումը ենթադրում է թեթև համաժամացում տվյալների միաժամանակյա կառուցվածքներին հասանելիության համար, և դա հատկապես կարևոր է, քանի որ մենք նվազեցնում ենք ցանցի մշակման տրամաբանությունը: Երրորդ, արագացուցիչների արդյունավետ օգտագործումը փաթեթների փոխակերպման համար անհրաժեշտ է SmartNIC-ների հաշվողական հնարավորությունները բարձրացնելու համար:
Մենք նախագծում և իրականացնում ենք Laconic-ը ՝ SmartNIC-ով բեռնաթափվող բեռնվածքի հավասարակշռող սարք, որը լուծում է վերը նշված մարտահրավերները: Մեր համակարգի հիմնական բաղադրիչը թեթև ցանցային կույտն է, որը ներկայացնում է կիրառական շերտի բեռի հավասարակշռման տրամաբանության համատեղ ձևավորումը տրանսպորտային շերտի առաջադրանքների հետ: Այս թեթև ցանցային կույտը կատարում է բարդ փաթեթների մշակում միայն փաթեթների ենթաբազմության վրա, որոնք փոխանցվում են բեռի հավասարակշռիչի միջոցով: Մնացած փաթեթների համար ցանցի կույտը կատարում է փաթեթների պարզ վերագրանցում և հենվում է հաճախորդի և սերվերի վրա՝ վերջնական հուսալիություն և գերբեռնվածության վերահսկում ապահովելու համար: Փաթեթների մշակման արագացուցիչներով SmartNIC-ների համար այս դիզայնը թույլ է տալիս փաթեթների մեծ մասը մշակել ապարատային վրա հիմնված հոսքի մշակման շարժիչների միջոցով՝ այդպիսով ապահովելով արդյունավետության զգալի ձեռքբերումներ: Մենք նաև մշակում ենք կապի կառավարման տվյալների կառուցվածքներ, որոնք շատ համընթաց են և նվազագույնի են հասցնում փոխադարձ բացառման թանկարժեք գործառնությունները: Մենք նշում ենք, որ մեր նախագծային ներդրումներից մի քանիսը վերաբերում են նաև սերվերի վրա հիմնված ընդհանուր նախագծմանը, բայց դրանք բազմապատկիչ ազդեցություն ունեն SmartNIC-ների վրա՝ գործակցելով արագ ուղի, որը կարող է իրականացվել ապարատային փաթեթների շարժիչների վրա:
Մենք կառուցեցինք Laconic-ը և այն հարմարեցրեցինք երկու տարբեր տեսակի SmartNIC-ներին՝ Marvell LiquidIO3 և Nvidia BlueField-2: Laconic-ը տրամադրում է ինչպես Layer-4, այնպես էլ Layer-7 ֆունկցիոնալությունը և իրականացնում է սովորաբար օգտագործվող Layer-7 ինտերպոզիցիայի տրամաբանությունը՝ հետին ծառայությունների հետ կապերը հավասարակշռելու համար: Խոշոր հաղորդագրությունների համար, Laconic-ը, որն աշխատում է BlueField-2-ով մեկ ARM միջուկով, կարող է հասնել մինչև 8,7 անգամ ավելի բարձր թողունակություն, քան լայնորեն օգտագործվող Nginx-ը, որն աշխատում է ավելի հզոր x86 միջուկով: Փոքր հաղորդագրությունների համար Laconic-ը BlueField-2-ում կարող է հասնել ավելի բարձր թողունակության՝ համեմատելի կամ նույնիսկ ավելի ցածր հետաձգմամբ՝ համեմատած Nginx-ի հետ: LiquidIO3-ում Laconic-ի թողունակությունը 4,5 անգամ ավելի բարձր է x86 Nginx-ի համեմատ: Մենք նաև ցուցադրում ենք Laconic կատարումը իրական աշխատանքային ծանրաբեռնվածությամբ և ներկայացնում ենք հիմնական գաղափարների առավելությունների վերաբերյալ մանրամասն միկրոհենանիշներ:
Այս փաստաթուղթը հասանելի է arxiv-ում CC BY-NC-ND 4.0 DEED լիցենզիայի ներքո: