Forfattere:
(1) Tianyi Cui, University of Washington ([email protected]);
(2) Chenxingyu Zhao, University of Washington ([email protected]);
(3) Wei Zhang, Microsoft ([email protected]);
(4) Kaiyuan Zhang, University of Washington ([email protected]).
Redaktørens note: Dette er del 1 af 6 af en undersøgelse, der beskriver forsøg på at optimere lag-7 belastningsbalancering. Læs resten nedenfor.
4.2 End-to-end-gennemløb
4.3 End-to-end latency
4.4 Evaluering af fordelene ved nøgleteknikker
4.5 Arbejdsbelastning i den virkelige verden
Load balancers er udbredt brugt i nutidens skyer til skalerbart distribuere netværksanmodninger på tværs af datacenterservere. I betragtning af den omfattende brug af belastningsbalancere og deres tilhørende driftsomkostninger, har adskillige bestræbelser fokuseret på at forbedre deres effektivitet ved at implementere Layer-4 belastningsbalanceringslogik i kernen eller bruge hardwareacceleration. Dette arbejde undersøger, om den mere komplekse og forbindelsesorienterede Layer-7 belastningsbalanceringsevne også kan drage fordel af hardwareacceleration. Især målretter vi aflastning af belastningsbalanceringsevne til programmerbare SmartNIC'er. Vi udnytter fuldt ud omkostningerne og energieffektiviteten ved SmartNIC'er ved hjælp af tre nøgleideer. For det første argumenterer vi for, at en fuld og kompleks TCP/IP-stak ikke er påkrævet for Layer-7 load balancers og foreslår i stedet en letvægts-forsendelsesagent på SmartNIC. For det andet udvikler vi forbindelsesstyringsdatastrukturer med en høj grad af samtidighed med minimal synkronisering, når de udføres på multi-core SmartNIC'er. Til sidst beskriver vi, hvordan belastningsbalanceringslogikken kunne accelereres ved hjælp af tilpassede pakkebehandlingsacceleratorer på SmartNIC'er. Vi prototyper Laconic på to typer SmartNIC-hardware, der opnår over 150 Gbps gennemløb ved brug af alle kerner på BlueField-2, mens en enkelt SmartNIC-kerne opnår 8,7x højere gennemløb og sammenlignelig latens med Nginx på en enkelt x86-kerne.
Belastningsbalancere er en grundlæggende byggesten for datacentre, da de balancerer servicebelastningen på tværs af samlinger af applikationsservere [38, 45, 46]. Load balancers blev oprindeligt bygget som specialiserede hardwareapparater, men er nu typisk implementeret som software, der kører på vareservere eller VM'er. Denne implementeringsmodel giver en større grad af tilpasningsmuligheder og tilpasningsevne end de ældre hardwarebaserede designs, men den kan også resultere i høje omkostninger for cloud-udbydere og applikationstjenester i betragtning af indkøbsomkostningerne og energiforbruget af servere til generelle formål [8]. Applikationstjenester går ofte meget langt for at konsolidere og reducere deres brug af belastningsbalancere for at opnå de ønskede omkostningsbesparelser [2, 4, 5].
I betragtning af den omfattende brug og omkostningerne ved load balancers, har adskillige bestræbelser fokuseret på at forbedre deres effektivitet, især Layer-4 (L4) load balancers, ved at indlejre belastningsbalanceringslogikken i et lavere, muligvis hardwareaccelereret, lag. Katran [16] accelereres ved hjælp af eBPF-kode inde i Linux-kernen, og opfanger og behandler således pakker i kernen og minimerer antallet af overgange til belastningsbalancerende kode på brugerniveau. ClickNP [32] tackler nogle aspekter af L4-belastningsbalanceringslogikken (især NAT-lignende egenskaber) på en FPGA-aktiveret SmartNIC og udnytter FPGA-enhedernes parallelle behandlingsmuligheder. SilkRoad [38] bruger en kombination af en programmerbar switch og en end-host til at gemme tilstanden forbundet med L4 load balancers og udføre dataplantransformationer relateret til load-balancing operationen i en switch pipeline.
Selvom disse bestræbelser har givet betydelige gevinster i optimering af L4-belastningsbalancering, der afbalancerer trafikken på netværkslaget, er datacentertjenester ofte afhængige af belastningsbalanceringsfunktioner på applikationslag, som kun findes i Layer-7 (L7) belastningsbalancere. Tjenester vil især gerne rute flows baseret på attributterne for klientanmodningen, bevare sessionsaffinitet for klientanmodninger, give adgangskontrol og så videre [7]. Men disse funktioner gør det sværere for L7 belastningsbalancere at anvende hardware-accelerationsteknikker, der bruges til L4 load balancere. En grundlæggende udfordring er, at L7-belastningsbalanceringsoperationen er baseret på information, der er indlejret i forbindelsesorienterede transportprotokoller, og derfor ser det ud til at kræve en fuldstack-netværksbehandlingsagent på belastningsbalanceren til at håndtere TCP/HTTP-forbindelser. Som følge heraf er dagens L7 load balancere generiske softwareløsninger, der medfører høje behandlingsomkostninger på råvareservere.
I dette arbejde undersøger vi, om vi kan forbedre effektiviteten af L7 load balancers ved hjælp af programmerbar netværkshardware. Vi fokuserer på SmartNIC'er, der giver generelle computerkerner forstærket med pakkebehandlingshardware. SmartNIC'er er særligt attraktive mål, da deres computerkerner kan være vært for vilkårlig protokollogik, mens deres pakkebehandlingsacceleratorer kan udføre dataplantransformationer effektivt. En SmartNIC kombinerer således egenskaberne ved traditionel værtsdatabehandling med de nye muligheder for programmerbare switches og er et passende mål for L7 load balancers. Vores arbejde er også delvist motiveret af den stigende udbredelse af SmartNIC'er i datacentre som et omkostningseffektivt og energieffektivt computersubstrat til netværksopgaver.
Adskillige udfordringer skal løses i forbindelse med overførsel af loadbalancing-funktionalitet til SmartNIC'er. For det første er SmartNIC-kerner uklare, udstyret med begrænset hukommelse og ineffektive til at køre almindelige beregninger. I det omfang det er muligt, bør vi bruge lette netværksstakke i stedet for generiske stakke med fuld funktionalitet, der findes inde i OS-kerner. For det andet forudsætter effektiv multi-core-behandling på SmartNIC'erne letvægtssynkronisering for adgang til samtidige datastrukturer, og dette er særligt relevant, da vi slanker netværksbehandlingslogikken. For det tredje er den effektive brug af acceleratorer til pakketransformationer nødvendig for at forbedre SmartNIC's computerkapacitet.
Vi designer og implementerer Laconic , en SmartNIC-aflastet load balancer, der løser de udfordringer, der er rejst ovenfor. En nøglekomponent i vores system er en letvægts netværksstak, der repræsenterer et co-design af applikationslags belastningsbalancerende logik med transportlagsopgaverne. Denne lette netværksstak udfører kun kompleks pakkebehandling på en delmængde af de pakker, der transmitteres gennem belastningsbalanceren. For resten af pakkerne udfører netværksstakken enkel omskrivning af pakker og er afhængig af klienten og serveren for at give ende-til-ende pålidelighed og overbelastningskontrol. For SmartNIC'er med pakkebehandlingsacceleratorer tillader dette design, at de fleste af pakkerne kan behandles ved hjælp af hardwarebaserede flow-behandlingsmotorer, hvilket giver betydelige effektivitetsgevinster. Vi udvikler også forbindelsesstyringsdatastrukturer, der er meget samtidige og minimerer dyre gensidige udelukkelsesoperationer. Vi bemærker, at nogle af vores designbidrag også gælder for et generisk serverbaseret design, men de har en multiplikativ effekt på SmartNIC'er ved at udregne en hurtig sti, der kan udføres på hardwarepakkemotorerne.
Vi byggede Laconic og skræddersyede den til to forskellige typer SmartNIC'er: Marvell LiquidIO3 og Nvidia BlueField-2. Laconic leverer både Layer-4 og Layer-7 funktionalitet og implementerer almindeligt anvendt Layer-7 interposition logik til at balancere forbindelser til backend-tjenester. For store beskeder kan Laconic, der kører på BlueField-2 med en enkelt ARM-kerne, opnå op til 8,7 gange højere gennemløb end almindeligt anvendte Nginx, der kører på en mere kraftfuld x86-kerne. For små beskeder kan Laconic på BlueField-2 opnå højere gennemløb med sammenlignelig eller endda lavere latenstid sammenlignet med Nginx. På LiquidIO3 er gennemstrømningen af Laconic 4,5x højere sammenlignet med x86 Nginx. Vi demonstrerer også Laconics ydeevne med den virkelige arbejdsbyrde og præsenterer detaljerede mikrobenchmarks om fordelene ved nøgleideer.
Dette papir er tilgængeligt på arxiv under CC BY-NC-ND 4.0 DEED-licens.