Hvordan skalere datasentre. Rapport fra Yandex.

Vi har utviklet et datasenternettverksdesign som gjÞr det mulig Ä distribuere beregningsklynger pÄ mer enn 100 000 servere med en topp bisection bandwidth pÄ over en petabyte per sekund.

I Dmitrij Afanasevs presentasjon vil du lÊre om de grunnleggende prinsippene bak det nye designet, skalering av topologier, de utfordringene som oppstÄr, mulige lÞsninger, samt egenskapene ved ruting og skaleringsfunksjoner for forwarding plane i moderne nettverksenheter i 'tette' topologier med mange ECMP-ruter. I tillegg ga Dima en kort oversikt over organisering av ekstern tilkobling, det fysiske laget, kablingsystemet og mÄter Ä Þke kapasiteten ytterligere pÄ.

Hvordan skalere datasentre. Rapport fra Yandex.

— God dag alle sammen! Jeg heter Dmitrij Afanasev, jeg er nettverksarkitekt hos Yandex og jobber hovedsakelig med design av datasentre.

Hvordan skalere datasentre. Rapport fra Yandex.

Min presentasjon vil omhandle det oppdaterte datasenternettverket til Yandex. Dette er i stor grad en evolusjon av designet vi hadde tidligere, men det finnes ogsÄ noen nye elementer. Dette er en oversiktlig presentasjon, ettersom vi mÄtte fÄ plass til mye informasjon pÄ kort tid. Vi begynner med valget av logisk topologi. Deretter vil det vÊre en oversikt over control plane og utfordringer med skalerbarheten til data plane, valget av hva som vil skje pÄ det fysiske nivÄet, og vi vil se pÄ noen spesifikasjoner av enhetene. Vi vil ogsÄ ta opp hva som skjer i datasenteret med MPLS, som vi snakket om for en tid tilbake.

Hvordan skalere datasentre. Rapport fra Yandex.

SÄ, hva er Yandex i forhold til belastninger og tjenester? Yandex er en typisk hyperskala-leverandÞr. Ser vi fra brukernes perspektiv, sÄ handler det fÞrst og fremst om behandling av brukerforespÞrselene. Det finnes ogsÄ forskjellige streamingtjenester og datalevering, ettersom vi ogsÄ har lagertjenester. NÄr vi snakker om backend, dukker det opp infrastrukturbelastninger og tjenester som distribuerte objektlagringssystemer, datarekrepasjon og, selvfÞlgelig, vedvarende kÞer. En av de viktigste belastningstypene er MapReduce og lignende systemer, sanntidsbehandling, maskinlÊring, osv.

Hvordan skalere datasentre. Rapport fra Yandex.

Hvordan er infrastrukturen bygget opp som ligger til grunn for alt dette? Igjen, vi er en relativt typisk hyperskaler, selv om vi kanskje befinner oss litt nÊrmere den siden av spekteret hvor de mindre hyperskalere befinner seg. Men vi har alle kjennetegnene. Vi bruker kommersiell maskinvare og horisontal skalering der det er mulig. Vi har en fullverdig ressurspooling: vi arbeider ikke med enkeltmaskiner eller enkeltstativ, men sammenfatter dem i en stor pool av utskiftbare ressurser med noen ekstra tjenester som hÄndterer planlegging og tildeling, og vi arbeider med hele denne poolen.

Dermed oppstĂ„r det neste nivĂ„et — operativsystemet pĂ„ nivĂ„et til dataklynger. Det er veldig viktig at vi har full kontroll over technologie-stakken som brukes. Vi kontrollerer endepunktene (verter), nettverket og programvare-stakken.

Vi har flere store datasentre i Russland og i utlandet. De er koblet sammen med en backbone som bruker MPLS-teknologi. VĂ„r interne infrastruktur er praktisk talt helt bygget pĂ„ IPv6, men fordi vi mĂ„ betjene ekstern trafikk som fremdeles stort sett kommer inn via IPv4, mĂ„ vi pĂ„ en eller annen mĂ„te levere forespĂžrslene som kommer via IPv4 til frontend-servere, og i tillegg navigere litt i den eksterne IPv4-internett – for eksempel for indeksering.

De siste iterasjonene av designet for datasenternettverk bruker flerlags Clos-topologier, og de benytter bare L3. Vi har forlatt L2 for en stund siden og lettet pÄ pusten. Endelig inkluderer infrastrukturen vÄr hundretusener av beregningsmessige (server) instanser. Den maksimale stÞrrelsen pÄ klyngen var for en tid siden rundt 10 000 servere. Dette skyldes i stor grad hvordan de spesifikke operativsystemene pÄ klyngen, planleggerne, ressursallokeringen osv. kan operere. NÄ er mÄlet en stÞrrelse pÄ rundt 100 000 servere i én dataklynge, og vi har fÄtt oppgaven med Ä bygge nettverksfabrikker som gjÞr det mulig Ä effektivt gjennomfÞre ressurspooling i en slik klynge.

Hvordan skalere datasentre. Rapport fra Yandex.

Hva Ăžnsker vi fra datacenternettverket? FĂžrst og fremst — mye rimelig og tilstrekkelig jevnt fordelt bĂ„ndbredde. Fordi nettverket er grunnlaget som gjĂžr at vi kan samle ressurser. Den nye mĂ„lestĂžrrelsen er omtrent 100 000 servere i en klynge.

Vi Þnsker ogsÄ, selvfÞlgelig, et skalerbart og stabilt control plane, fordi det oppstÄr mye hodebry pÄ en sÄ stor infrastruktur, selv fra tilfeldige hendelser, og vi vil ikke at control plane skal gi oss mer hodebry. Samtidig Þnsker vi Ä minimere tilstanden i det. Jo mindre tilstand, desto bedre og mer stabilt fungerer alt, og det er enklere Ä diagnostisere.

SelvfÞlgelig trenger vi automatisering, fordi det er umulig Ä administrere en slik infrastruktur manuelt, og det har vÊrt umulig i lang tid. Vi trenger i stÞrst mulig grad stÞtte for driftsprosesser og stÞtte for CI/CD, sÄ langt det lar seg gjÞre.

Med slike stĂžrrelser pĂ„ datacentere og klynger har oppgaven med Ă„ stĂžtte inkrementell distribusjon og utvidelse uten nedetid blitt presserende. Hvis man pĂ„ klynger med tusen maskiner, muligens opp til ti tusen maskiner, fortsatt kan rulle ut som Ă©n operasjon — det vil si at vi planlegger Ă„ utvide infrastrukturen, og flere tusen maskiner legges til som Ă©n operasjon, sĂ„ er en klynge med omtrent hundre tusen maskiner ikke noe som oppstĂ„r umiddelbart, den bygges over tid. Og det er Ăžnskelig at det som allerede er utdelt, den infrastrukturen som er rullet ut, er tilgjengelig i lĂžpet av denne tiden.

Og et krav som vi hadde og som har falt bort: stÞtte for multitenancy, det vil si virtualisering eller segmentering av nettverket. NÄ trenger vi ikke Ä gjÞre dette pÄ nivÄet til nettverksfabrikken, fordi segmenteringen har flyttet til vertene, og dette har lettet skaleringen enormt. Takket vÊre IPv6 og det store adresseomrÄdet, trenger vi ikke Ä bruke dupliserte adresser i den interne infrastrukturen; all adressering var allerede unik. Og takket vÊre at vi har flyttet filtrering og segmentering av nettverket til vertene, trenger vi ikke Ä opprette noen virtuelle nettverksenheter i datacenternettverkene.

Hvordan skalere datasentre. Rapport fra Yandex.

En viktig ting er at vi ikke trenger. Hvis vi kan fjerne noen funksjoner fra nettverket, gjÞr det livet vÄrt mye enklere og utvider som regel valget av tilgjengelig maskinvare og programvare, samt forenkler diagnosen.

SÄ hva er det vi ikke trenger, hva kunne vi gi avkall pÄ, ikke alltid med glede i Þyeblikket det skjedde, men med stor lettelse nÄr prosessen var fullfÞrt?

FÞrst og fremst, Ä gi avkall pÄ L2. Vi trenger verken reell eller emulert L2. Det brukes i stor grad ikke pÄ grunn av at vi kontrollerer applikasjonsstakken. VÄre applikasjoner skalerer horisontalt, de arbeider med L3-adressering, og de er ikke sÊrlig bekymret for at en enkelt instans slukkes, de ruller bare ut en ny, det er ikke nÞdvendig Ä rulle den ut pÄ den gamle adressen, fordi det finnes et eget nivÄ for service discovery og overvÄking av maskiner som er i klyngen. Vi overfÞrer ikke denne oppgaven til nettverket. Nettverksoppgaven er Ä levere pakker fra punkt A til punkt B.

Vi har heller ikke situasjoner der adresser flyttes innen nettverket, og dette mÄ spores. I mange design er dette vanligvis nÞdvendig for Ä opprettholde VM-mobilitet. Vi bruker ikke mobilitet for virtuelle maskiner i den interne infrastrukturen til store Yandex, og vi mener dessuten at selv om dette gjÞres, bÞr det ikke skje med stÞtte fra nettverket. Hvis det er absolutt nÞdvendig Ä gjÞre, bÞr det gjÞres pÄ verts-nivÄ, og adresser som kan migrere, bÞr plasseres i overlays, slik at vi ikke berÞrer og innfÞrer for mange dynamiske endringer i ruting-systemet til selve underlaget (transportnettverket).

En annen teknologi vi ikke bruker er multicast. De som Ăžnsker, kan jeg gjerne fortelle mer om hvorfor. Dette letter livet betydelig, fordi hvis noen har jobbet med det og sett hvordan control plane for multicast ser ut – i alle installasjoner bortsett fra de enkleste, er dette en stor hodepine. Og dessuten er det vanskelig Ă„ finne en godt fungerende Ă„pen implementering, for eksempel.

Og til slutt, vi designer nettverkene vÄre slik at det ikke skjer for mange endringer. Vi kan forvente at strÞmmen av ytre hendelser i rutingssystemet er liten.

Hvordan skalere datasentre. Rapport fra Yandex.

Hvilke problemer og begrensninger mĂ„ vi ta hensyn til nĂ„r vi utvikler et datasenternettverk? Kostnader, selvfĂžlgelig. Skalerbarhet, hvor mye vi Ăžnsker Ă„ vokse. Behovet for Ă„ utvide uten Ă„ stoppe tjenesten. BĂ„ndbredde, tilgjengelighet. Synligheten av hva som skjer i nettverket, for overvĂ„kningssystemer og driftsteams. StĂžtte for automatisering – igjen, sĂ„ langt som mulig, ettersom ulike oppgaver kan lĂžses pĂ„ ulike nivĂ„er, inkludert innfĂžring av flere lag. Og sĂ„, avhengighet fra leverandĂžrer, sĂ„ lite som mulig. Selv om i forskjellige historiske perioder, avhengig av hvilken del vi ser pĂ„, har denne uavhengigheten vĂŠrt lettere eller vanskeligere Ă„ oppnĂ„. NĂ„r vi ser pĂ„ laget av nettverksbrikker, har det til nylig vĂŠrt veldig betinget Ă„ snakke om uavhengighet fra leverandĂžrer, hvis vi Ăžnsket brikker med hĂžy bĂ„ndbredde.

Hvordan skalere datasentre. Rapport fra Yandex.

Hvilken logisk topologi vil vi bygge nettet vÄrt pÄ? Det vil vÊre en flernivÄ Clos. Faktisk finnes det per nÄ reelle alternativer. Og Clos-topologien er ganske god, selv nÄr vi sammenligner den med ulike avanserte topologier som nÄ mer er av akademisk interesse, dersom vi har svitsjer med stor radix.

Hvordan skalere datasentre. Rapport fra Yandex.

Hvordan er en flernivÄ Clos-nettverk omtrent organisert og hva kalles de ulike elementene i det? FÞrst og fremst kompassrosen, for Ä orientere oss hvor nord, sÞr, Þst og vest er. Nettverk av denne typen bygges vanligvis av de som har veldig hÞy Þst-vest trafikk. NÄr det gjelder de andre elementene, er det Þverst en virtuell svitsj som er bygd opp av mindre svitsjer. Dette er hovedideen med den rekursive byggingen av Clos-nettverk. Vi tar elementer med en viss radix og kobler dem sammen slik at det vi fÄr, kan betraktes som en svitsj med stÞrre radix. Hvis det trengs enda mer, kan prosessen gjentas.

I tilfeller som for eksempel med to-nivÄ Clos, der man klart kan skille ut komponentene som er vertikale i mitt diagram, pleier de Ä bli kalt plan. Hvis vi bygde en Clos med tre nivÄer av spine-switcher (alle som ikke er grense- eller ToR-switcher og som kun brukes for transit), ville planene se mer kompliserte ut; to-nivÄene ser slik ut. Enhetene av ToR- eller leaf-switcher og de associerte spine-switchene pÄ det fÞrste nivÄet kaller vi Pod. Spine-switchene pÄ nivÄet spine-1 Þverst i Pod er toppen av Pod. Switchene som befinner seg Þverst i hele fabrikken er det Þverste laget av fabrikken, Top of fabric.

Hvordan skalere datasentre. Rapport fra Yandex.

SelvfÞlgelig kommer spÞrsmÄlet: Clos-nettverk har blitt bygget en stund, selve ideen stammer fra tidene med klassisk telefoni, TDM-nettverk. Kanskje har det dukket opp noe bedre, kanskje kan vi gjÞre det bedre pÄ en eller annen mÄte? BÄde ja og nei. Teoretisk sett ja, men i praksis er det definitvt nei pÄ kort sikt. Fordi det finnes et visst antall interessante topologier, hvorav noen faktisk brukes i produksjon; for eksempel brukes Dragonfly i HPC-applikasjoner. Det finnes ogsÄ interessante topologier som Xpander, FatClique, Jellyfish. Hvis man ser pÄ foredrag pÄ konferanser som SIGCOMM eller NSDI de siste Ärene, vil man oppdage et ganske stort antall arbeider om alternative topologier som har bedre egenskaper (pÄ en eller annen mÄte) enn Clos.

Men alle disse topologiene har en interessant egenskap. Denne hindrer implementeringen av dem i datasenter-nettverkene som vi prÞver Ä bygge pÄ vanlig maskinvare og som koster ganske rimelige penger. I alle disse alternative topologiene er dessverre stÞrstedelen av bÄndbredden ikke tilgjengelig via de korteste stiene. Derfor mister vi umiddelbart muligheten til Ä bruke tradisjonell kontrollplane.

Teoretisk sett er lÞsningen pÄ problemet kjent. Dette inkluderer for eksempel modifikasjoner av link state ved bruk av k-korteste ruter, men igjen er det ingen protokoller som er implementert i produksjon og massevis tilgjengelig pÄ utstyret.

Vidare, ettersom mesteparten av kapasiteten ikke er tilgjengelig via de korteste rutene, mĂ„ vi endre ikke bare kontrollplanet slik at det kan velge alle disse rutene (og forresten, dette er en betydelig stĂžrre tilstand i kontrollplanet). Vi mĂ„ ogsĂ„ modifisere forwarding planet, og som regel krever det minst to ekstra funksjoner. Dette er muligheten til Ă„ ta alle beslutninger om videresending av pakker pĂ„ en gang, for eksempel pĂ„ verten. Faktisk er dette kilderuting, noen ganger omtalt i litteraturen om sammenkoblede nettverk som all-at-once forwarding decisions. Og sĂ„ har vi adaptiv ruting — dette er allerede en funksjon vi trenger pĂ„ nettverksenhetene, som for eksempel innebĂŠrer Ă„ velge neste hop, basert pĂ„ informasjon om den minste kĂžbelastningen. Som eksempel er det mulig Ă„ ha andre alternativer.

Dermed er retningen interessant, men dessverre kan vi ikke anvende den akkurat nÄ.

Hvordan skalere datasentre. Rapport fra Yandex.

Ok, vi har landet pÄ den logiske Clos-topologien. Hvordan skal vi skalere den? La oss se pÄ hvordan den er strukturert og hva vi kan gjÞre.

Hvordan skalere datasentre. Rapport fra Yandex.

I Clos-nettet er det to hovedparametere som vi kan variere for Ä oppnÄ ulike resultater: radikene til elementene og antallet nivÄer i nettverket. Jeg har skjematisk vist hvordan begge deler pÄvirker stÞrrelsen. Ideelt sett kombinerer vi begge.

Hvordan skalere datasentre. Rapport fra Yandex.

Det er tydelig at den endelige bredden pÄ Clos-nettet er produktet av alle sluttbryterne i den sÞrlige radiksen, antall lenker vi har nedover, og hvordan det forgrener seg. Slik skalerer vi nettverksstÞrrelsen.

Hvordan skalere datasentre. Rapport fra Yandex.

NÄr det gjelder kapasitet, spesielt pÄ ToR-brytere, er det to skaleringsalternativer. Vi kan enten, mens vi opprettholder den generelle topologien, bruke hÞyhastighetslenker, eller vi kan legge til flere plan.

Hvis vi ser pÄ den utvidede varianten av Clos-nettet (nederst til hÞyre) og gÄr tilbake til bildet av Clos-nettet nederst


Hvordan skalere datasentre. Rapport fra Yandex.


 er det akkurat den samme topologien, men i dette lysbildet er den komprimert mer kompakt og fabrikkplanene er lagt oppÄ hverandre. Det er det samme.

Hvordan skalere datasentre. Rapport fra Yandex.

Hvordan ser skaleringen av Clos-nettet ut i tall? Her har jeg oppgitt data om hvilken maksimal bredde nettverket kan ha, hvor mange stativer, ToR-brytere eller leaf-brytere, hvis de ikke er i stativene, vi kan fÄ avhengig av hvilken radiks av brytere som brukes for spine-nivÄene, og hvor mange nivÄer vi bruker.

Her er hvor mange rack vi kan ha, hvor mange servere og omtrent hvor mye strÞm dette kan kreve med en beregning pÄ 20 kW per rack. Jeg nevnte tidligere at vi siktet mot en klusterstÞrrelse pÄ rundt 100 000 servere.

Det er tydelig at det i hele denne konstruksjonen er interessante elementer knyttet til to og en halv varianter. Det finnes en variant med to lag spine switches og 64-porters svitsjer, som er noe under kravene. Deretter er det gode alternativer for 128-porters (med radix 128) spine switches med to nivÄer, eller switches med radix 32 med tre nivÄer. I alle tilfeller, der hvor radix og nivÄer Þker, kan man lage et svÊrt stort nettverk, men hvis man ser pÄ det forventede strÞmforbruket, er det som regel gigawatt. Man kan legge til kabler, men sÄ mye strÞm kan vi sannsynligvis ikke fÄ pÄ ett sted. Ser man pÄ statistikken, er det svÊrt fÄ datasentre med beregnet kapasitet pÄ over 150 MW. Det som er hÞyere, er som regel datasenterkampus, flere store datasentre som ligger relativt nÊrt hverandre.

Det er ogsÄ en viktig parameter. Hvis du ser pÄ venstre kolonne, vil du se at usable bandwidth er angitt. Det er ikke vanskelig Ä merke seg at i et Clos-nettverk gÄr en betydelig del av portene til Ä forbinde svitsjer med hverandre. Usable bandwidth, den nyttige bÄndbredden, er det vi kan gi ut mot serverne. SelvfÞlgelig snakker jeg om betingede porter og akkurat om bÄndbredden. Vanligvis er lenkene innen nettverket raskere enn lenkene mot serverne, men for hver enhet av bÄndbredde som vi kan gi ut til serverutstyret vÄrt, mÄ vi ta hensyn til at det ogsÄ er en eller annen bÄndbredde internt i nettverket. Og jo flere nivÄer vi lager, jo stÞrre blir de relative kostnadene for Ä gi denne bÄndbredden ut.

Videre er selv denne ekstra bĂ„ndbredden ikke helt lik. SĂ„ lenge avstandene er korte, kan vi bruke noe som DAC (direct attach copper, altsĂ„ twinax-kabler), eller multimode optikk som fortsatt er tilgjengelig til en rimelig pris. SĂ„ snart vi gĂ„r over til lengre avstander — er det som regel single mode optikk, og kostnadene for denne ekstra bĂ„ndbredden Ăžker betydelig.

Og igjen, tilbake til forrige lysbilde, hvis vi lager et Clos-nettverk uten re-signering, er det ikke vanskelig Ä se pÄ skjemaet, se hvordan nettverket bygges - ved Ä legge til hvert nivÄ av spine-switcher, gjentar vi hele den bÄndbredden som var nederst. I tillegg til nivÄet - i tillegg til den samme bÄndbredden, like mye som det var pÄ forrige nivÄ, porter pÄ svitsjene, enda sÄ mange transceivere. Derfor er det veldig Þnskelig Ä minimere antall nivÄer av spine-switcher.

Basert pÄ dette bildet, er det klart at vi virkelig Þnsker Ä bygge pÄ noe som svitsjer med radix 128.

Hvordan skalere datasentre. Rapport fra Yandex.

Her er det i grunn det samme som jeg nettopp har sagt, dette lysbildet er mer for senere vurdering.

Hvordan skalere datasentre. Rapport fra Yandex.

Hvilke alternativer har vi for hva vi kan velge som slike svitsjer? En veldig hyggelig nyhet for oss er at slike nettverk endelig kan bygges pÄ enbrikkesvitsjer. Og det er veldig bra, de har mange hyggelige egenskaper. For eksempel har de nesten ingen intern struktur. Det betyr at de er lettere Ä feile. De feiler, uten tvil, men de feiler heldigvis helt. I modulÊre enheter er det et stort antall feil (veldig ubehagelige) hvor det ser ut som det fungerer fra naboers og control plane's perspektiv, men for eksempel har en del av fabrikken gÄtt bort, og det fungerer ikke med full kapasitet. Og trafikken balanseres basert pÄ at det er fullstendig funksjonelt, og vi kan oppleve overbelastning.

Eller, for eksempel, oppstÄr det problemer med backplane, fordi det ogsÄ finnes hÞyhastighets SerDes-er inne i modulÊre enheter - det er virkelig komplisert bygget innvendig. Eller tabellene mellom forwarding-elementene synkroniseres eller synkroniseres ikke. Generelt inneholder enhver hÞyytelses modulÊr enhet, bestÄende av mange elementer, vanligvis den samme Clos-nettverket, bare at det er veldig vanskelig Ä diagnostisere. Ofte er det til og med vanskelig for selve leverandÞren Ä diagnostisere.

Og det har mange feilscenarier der enheten degraderer, men ikke faller helt ut av topologien. Siden vi har et stort nettverk, brukes lastbalansering aktivt mellom identiske enheter, nettet er veldig regulĂŠrt, det vil si at en rute der alt fungerer, ikke skiller seg fra en annen rute, er det mer fordelaktig for oss Ă„ miste en del enheter fra topologien enn Ă„ havne i en situasjon der noen av dem ser ut til Ă„ fungere, men egentlig ikke gjĂžr det.

Hvordan skalere datasentre. Rapport fra Yandex.

Den neste hyggelige funksjonen ved chip-baserte enheter er at de evolverer bedre og raskere. De har ogsÄ vanligvis bedre kapasitet. NÄr vi ser pÄ de store innsamlede konstruksjonene vi har, er kapasiteten per rack-enhet i form av porter med samme hastighet nesten dobbelt sÄ bra som for modulÊre enheter. Enhetene bygget rundt en enkelt chip viser seg Ä vÊre merkbart billigere enn modulÊre enheter, og de bruker mindre energi.

Men selvfÞlgelig er det ikke sÄ enkelt, det finnes ulemper. For det fÞrste har de praktisk talt alltid lavere radialitet enn modulÊre enheter. Hvis vi kan fÄ en enhet bygget rundt en enkelt chip med 128 porter, kan vi fÄ en modulÊr enhet med flere hundre porter uten store problemer.

Det er merkbart mindre stÞrrelse pÄ videresendingstabeller, og generelt alt som gjelder skalerbarhet i datanettverket. Grunne buffere. Og generelt ganske begrenset funksjonalitet. Men det viser seg at hvis man kjenner disse begrensningene og tar seg tid til Ä omgÄ dem eller bare ta dem i betraktning, sÄ er det ikke sÄ skummelt. Det at radialiteten er mindre, er ikke lenger et problem med de nylig lanserte enhetene med en radialitet pÄ 128; vi kan bygge oss med to lag av spine-enheter. Uansett kan man ikke bygge noe interessant i stÞrrelse med mindre enn to. Med ett nivÄ fÄr man bare veldig smÄ klynger. Selv vÄre tidligere design og krav overskred dem fortsatt.

Faktisk, hvis en lÞsning ligger litt pÄ grensen, finnes det en annen mÄte Ä skalere pÄ. Siden det laveste nivÄet, der serverne er koblet til, er ToR-svitsjer eller leaf-svitsjer, er vi ikke pÄlagt Ä koble bare en rack til dem. Derfor, hvis lÞsningen mangler med to ganger, kan vi vurdere Ä bruke en svitsj med stÞrre radikser pÄ bunnenivÄ og for eksempel koble to eller tre rack til én svitsj. Dette er ogsÄ et alternativ, det har sine kostnader, men fungerer godt og kan vise seg Ä vÊre en god lÞsning nÄr det er nÞdvendig Ä fordoble stÞrrelsen.

Hvordan skalere datasentre. Rapport fra Yandex.

For Ä oppsummere bygger vi med en to-nivÄ spine-topologi, med Ätte lag av fabrikken.

Hvordan skalere datasentre. Rapport fra Yandex.

Hva skjer med fysikken? Veldig enkle beregninger. Hvis vi har to nivÄer av spines, har vi totalt tre nivÄer av svitsjer, og vi forventer at det vil vÊre tre kabelfragmenter i nettverket: fra servere til leaf-svitsjer, til spine 1, til spine 2. Alternativene vi kan bruke er twinax, multimode, single mode. Her mÄ vi ta hensyn til hvilken bÄndbredde som er tilgjengelig, hva det vil koste, hvilke fysiske dimensjoner det har, hvilke spenninger vi kan hÄndtere, og hvordan vi vil oppgradere.

NÄr det gjelder kostnadene kan alt organiseres i en linje. Twinax er betydelig billigere enn aktiv optikk, billigere enn multimode transceivere, hvis vi ser pÄ prisen per lengde, noe billigere enn en 100-gigabit port pÄ svitsjen. Og det, merk deg, er billigere enn single mode optikk, fordi pÄ strekninger hvor single mode kreves, er det fornuftig Ä bruke CWDM i datasentre av flere grunner, og Ä jobbe med parallell single mode (PSM) er ikke veldig praktisk, vi fÄr veldig store fiberbunter, og hvis vi stopper opp ved disse teknologiene, fÄr vi omtrent en slik hierarki pÄ prisene.

En annen bemerkning: dessverre er det ikke veldig mulig Ä bruke oppdelte 100 til 4x25 multimode porter. PÄ grunn av konstruksjonsmessige egenskaper koster SFP28 ikke mye mindre enn QSFP28 pÄ 100 Gbit. Og denne oppdelingen fungerer ikke sÄ godt for multimode.

En annen begrensning er at pÄ grunn av stÞrrelsen pÄ beregningsklyngene og antall servere, blir datacentrene vÄre fysisk store. Dette betyr at minst én spenning mÄ utfÞres med single-mode. Igjen, pÄ grunn av den fysiske stÞrrelsen pÄ Pods, vil det ikke vÊre mulig Ä gÄ over to spenninger med twinax-kabler.

Som et resultat, hvis vi optimaliserer for pris og tar hensyn til geometrien til denne konstruksjonen, fÄr vi én spenning med twinax, én spenning med multimode og én spenning med single-mode ved bruk av CWDM. Dette tar hÞyde for mulige oppgraderingsveier.

Hvordan skalere datasentre. Rapport fra Yandex.

Slik ser det ut, hva som har skjedd nylig, hvor vi beveger oss, og hva som kan vÊre mulig. Det er klart, i det minste nÄr det gjelder Ä bevege seg mot 50-gigabit SerDes for bÄde multimode og single-mode. Videre, hvis vi ser pÄ hva som finnes i single-mode transceivere nÄ og pÄ lang sikt for 400G, da ofte nÄr 50G SerDes kommer pÄ den elektriske siden, kan optikken allerede vÊre pÄ 100 Gbps per bane. SÄ det er ganske mulig at i stedet for overgang til 50, vil vi ha overgang til 100-gigabit SerDes og 100 Gbps per bane, fordi mange leverandÞrer lover at tilgjengeligheten deres forventes snart. Perioden der 50G SerDes var de raskeste, ser ut til Ä vÊre kortvarig, fordi de fÞrste eksemplarene av 100G SerDes vil bli rullet ut allerede neste Är. Og etter en stund vil de kanskje koste rimelige penger.

Hvordan skalere datasentre. Rapport fra Yandex.

En annen detalj angÄende valg av fysikk. Egentlig kan vi allerede nÄ bruke 400- eller 200-gigabit porter med 50G SerDes. Men det viser seg at det ikke gir mye mening, fordi som jeg nevnte tidligere, Þnsker vi en tilstrekkelig hÞy radix pÄ switchene, innenfor rimelighetens grenser, selvsagt. Vi Þnsker 128. Hvis vi har en chipkapasitet som er begrenset og Þker lenkehastigheten, reduseres radiksen, det er ingen mirakler.

Og den totale kapasiteten kan vi Þke ved Ä legge til plan, og samtidig er det ikke spesielle kostnader, vi kan Þke antallet plan. Hvis vi mister radiksen, mÄ vi introdusere et ekstra nivÄ, sÄ med de nÄvÊrende forutsetningene, med den maksimalt tilgjengelige kapasiteten per chip, viser det seg at det er mer effektivt Ä bruke 100-gigabit porter, fordi de gir oss en stÞrre radix.

Hvordan skalere datasentre. Rapport fra Yandex.

Neste spĂžrsmĂ„let handler om hvordan fysikken er organisert, men nĂ„ fra perspektivet til kabelinfrastrukturen. Det viser seg at det er organisert pĂ„ en ganske underholdende mĂ„te. Kabler mellom leaf-switcher og fĂžrste nivĂ„ spine-switcher — det er ikke sĂ„ mange lenker der, alt er relativt enkelt Ă„ bygge opp. Men hvis vi ser pĂ„ ett plan, det som skjer innvendig — der mĂ„ alle fĂžrste nivĂ„ spine-switcher kobles sammen med alle andre nivĂ„ spine-switcher.

I tillegg er det som regel noen Þnsker angÄende hvordan dette skal se ut inne i datasenteret. For eksempel Þnsket vi sterkt Ä samle kablene i bunter og trekke dem slik at en hÞydensitets patchpanel gikk helt til en annen patchpanel, for Ä unngÄ en dyrehage av lengder. Vi klarte Ä lÞse dette problemet. Hvis vi ser pÄ den logiske topologien, sÄ er det tydelig at planene er uavhengige, hver plan kan bygges for seg selv. Men nÄr vi legger til en slik buntering og Þnsker Ä trekke en patchpanel helt til en annen patchpanel, mÄ vi blande forskjellige plan innenfor en bunde og introdusere en mellomliggende konstruksjon i form av optiske kryssforbindelser, for Ä ompakke dem fra hvordan de ble samlet pÄ ett segment, til hvordan de vil bli samlet pÄ et annet segment. Takket vÊre dette fÄr vi en hyggelig egenskap: all kompleks kobling forblir innenfor skapene. NÄr noe mÄ vÊre svÊrt sammenfiltret, "brette ut planene", som det noen ganger kalles i Clos-nettverk, er alt konsentrert innenfor ett skap. Vi har ikke sterkt fragmenterte tilkoblinger, sÄ langt som individuelle lenker, mellom skapene.

Hvordan skalere datasentre. Rapport fra Yandex.

Slik ser det ut fra perspektivet av den logiske organiseringen av kabelinfrastrukturen. PÄ bildet til venstre representerer de fargerike blokkene blokkene av fÞrste nivÄ spine-switcher, med Ätte av dem, og de fire bunter av kabler som gÄr fra dem, som krysser bunter fra andre nivÄ spine-switcher.

SmÄ rutene representerer sammenkjÞringer. Øverst til venstre er det en oversikt over hver sammenkjÞring, som faktisk er en cross-connect-modul med 512 pÄ 512 porter, som pakker kablene slik at de kommer helt inn i en rack, hvor det bare er ett spine-2-plan. Og til hÞyre er det en litt mer detaljert oversikt over dette bildet, relatert til flere Pods pÄ spine-1-nivÄ, og hvordan dette pakkes i cross-connect, hvordan det kommer opp til spine-2-nivÄ.

Hvordan skalere datasentre. Rapport fra Yandex.

Slik ser det ut. En ikke helt sammenstilt spine-2-rack (til venstre) og en cross-connect-rack. Dessverre er det ikke sÄ mye som er synlig der. Hele denne konstruksjonen rulles ut akkurat nÄ i en av vÄre store datSentere som utvides. Dette er et pÄgÄende arbeid, det vil se bedre ut, det vil bli bedre fylt.

Hvordan skalere datasentre. Rapport fra Yandex.

Et viktig spĂžrsmĂ„l: vi har valgt en logisk topologi og bygget opp den fysiske strukturen. Hva skjer med control plane? Det er godt kjent fra driftsopplevelsen at det er et visst antall prediksjoner om at link-state-protokoller er bra, de er behagelige Ă„ jobbe med, men dessverre skalerer de dĂ„rlig i en tett sammenkoblet topologi. Og det er en hovedfaktor som hindrer dette — det er hvordan flooding fungerer i link-state-protokoller. Hvis vi bare tar flooding-algoritmen og ser pĂ„ hvordan nettverket vĂ„rt er strukturert, ser vi at det vil vĂŠre veldig stor fanout pĂ„ hvert steg, og det vil bare oversvĂžmme control plane med oppdateringer. Slike topologier med den tradisjonelle flooding-algoritmen i link-state-protokoller fungerer ikke godt sammen.

Valget — Ă„ bruke BGP. Hvordan det skal forberedes, er beskrevet i RFC 7938 om bruk av BGP i store datSentere. Grunnleggende ideer er enkle: minimal antall prefikser per vert og generelt minimal antall prefikser i nettverket, bruk av aggregasjon hvis mulig, og dempe path hunting. Vi Ăžnsker en veldig kontrollert spredning av oppdateringer, det som kalles valley free. Vi Ăžnsker at oppdateringene, nĂ„r de gĂ„r gjennom nettverket, blir utbredt akkurat Ă©n gang. Hvis de stammer fra bunnen, gĂ„r de opp, og sprer seg ikke mer enn Ă©n gang. Det skal ikke vĂŠre zigzagging. Zigzagging er veldig dĂ„rlig.

For this, we use a fairly simple scheme to utilize the basic mechanisms of BGP. This means that we employ eBGP, operating on link local, and autonomous systems are assigned as follows: an autonomous system on ToR, an autonomous system for the entire block of spine-1 switches within a Pod, and a common autonomous system for the entire Top of Fabric. It's not difficult to see that even normal BGP behavior gives us the update propagation we desire.

Hvordan skalere datasentre. Rapport fra Yandex.

Naturally, we have to design addressing and address aggregation in a way that is compatible with how routing is structured, ensuring stability of the control plane. L3 addressing in transit is tied to the topology, because without this, aggregation can't be achieved; individual addresses would penetrate the routing system. Another point is that aggregation, unfortunately, does not mix well with multi-path, because when we have multi-path and aggregation, everything is fine as long as the entire network is operational and there are no failures. Unfortunately, once failures occur in the network and the symmetry of the topology is lost, we may end up in a point from which the aggregate was announced, from where we cannot proceed to where we need to go. Therefore, it's best to aggregate where there is no further multi-path, in our case this is on ToR switches.

Hvordan skalere datasentre. Rapport fra Yandex.

In fact, aggregation is possible, but with caution. If we can implement controlled de-aggregation when failures occur in the network. However, this is a quite complicated task; we even considered whether it could be done, whether additional automation could be implemented, and finite automata that would correctly interact with BGP to achieve the desired behavior. Unfortunately, handling corner cases is very non-obvious and complex, and attaching external equipment to BGP does not solve this task well.

Very interesting work has been done in this regard within the RIFT protocol, which will be discussed in the next presentation.

Hvordan skalere datasentre. Rapport fra Yandex.

Another important aspect is how data planes scale in dense topologies where there are many alternative paths. In this context, several additional data structures are used: ECMP groups, which in turn describe groups of Next Hop.

I en normalt fungerende nettverk, uten feil, nÄr vi gÄr oppover i Clos-topologien, er det tilstrekkelig Ä bruke bare én gruppe, fordi alt som ikke er lokalt, beskrives av standardinnstillingen, og man kan gÄ oppover. NÄr vi gÄr nedover mot sÞr, er imidlertid alle stier ikke ECMP, men single path-stier. Alt er bra. Problemet, og sÊregenheten til den klassiske Clos-topologien, er at hvis vi ser pÄ toppen av fabrikken, er det én vei fra hvilket som helst element til ethvert element nedenfor. Hvis det oppstÄr feil langs denne veien, blir det spesifikke elementet pÄ toppen av fabrikken ugyldig for de prefiksene som ligger bak den Þdelagte veien. For de andre er det gyldig, og vi mÄ analysere ECMP-gruppene og introdusere en ny status.

Hvordan ser skalerbarheten til data plane ut pÄ moderne enheter? Hvis vi gjÞr LPM (longest prefix match), fungerer det ganske bra, over 100k prefikser. NÄr vi snakker om Next Hop-grupper, ser det verre ut, 2-4 tusen. NÄr vi snakker om tabellen som inneholder beskrivelsen av Next Hops (eller adjacencies), er det et sted mellom 16k og 64k. Og dette kan bli et problem. Og her kommer vi til et interessant avsnitt: hva skjedde med MPLS i datasentre? I utgangspunktet Þnsket vi Ä implementere det.

Hvordan skalere datasentre. Rapport fra Yandex.

To ting skjedde. Vi implementerte mikrosegregering pÄ vertsene, sÄ vi trengte ikke Ä gjÞre det pÄ nettverket. Det var ikke veldig godt med stÞtte fra forskjellige leverandÞrer, og spesielt med Äpne implementeringer pÄ white boxes med MPLS. I tillegg er MPLS, i det minste dens tradisjonelle implementeringer, dessverre svÊrt dÄrlig kompatibel med ECMP. Og det er grunnen til dette.

Hvordan skalere datasentre. Rapport fra Yandex.

Slik ser strukturen for ECMP-forwarding for IP ut. Et stort antall prefikser kan bruke den samme gruppen og den samme blokken med Next Hops (eller adjacencies, dette kan kalles forskjellig i ulike dokumentasjoner for forskjellige enheter). Poenget er at dette beskrives som utgÄende port og hva som skal omskrives til MAC-adressen for Ä nÄ riktig Next Hop. For IP er det ganske enkelt, man kan bruke mange prefikser for den samme gruppen, den samme blokken med Next Hops.

Hvordan skalere datasentre. Rapport fra Yandex.

Den klassiske MPLS-arkitekturen innebĂŠrer — avhengig av utgĂ„ende grensesnitt, kan etiketten skrives om til ulike verdier. Derfor mĂ„ vi holde gruppen og blokken med Next Hops for hver inngĂ„ende etikett. Og det, dessverre, skalerer ikke.

Det er ikke vanskelig Ä se at vi i vÄr konstruksjon trengte omtrent 4000 ToR-brytere, med maksimal bredde pÄ 64 ECMP-stier, dersom vi gÄr fra spine-1 til spine-2. Vi klarer akkurat Ä komme inn i én ECMP-gruppetabell, hvis bare én prefiks fra ToR gÄr ut, og vi kommer overhodet ikke inn i tabellen for Next Hops.

Hvordan skalere datasentre. Rapport fra Yandex.

Alt er ikke hÄplÞst, fordi arkitekturer som Segment Routing innebÊrer globale merker. Formelt kunne man igjen presset alle disse blokkene med Next Hops sammen. For dette trengs en operasjon som ligner pÄ wild card: ta et merke og skrive det til det samme uten spesifikke verdier. Men dessverre finnes det ikke sÄ mye av dette i de tilgjengelige implementasjonene.

Og til slutt mÄ vi bringe ekstern trafik inn i datasenteret. Hvordan gjÞr vi det? Tidligere ble trafikken fÞrt inn i Clos-nettverk ovenfra. Det vil si at det var grense-rutere som koblet til alle enhetene pÄ Top of fabric. Denne lÞsningen fungerer ganske bra for smÄ og mellomstore stÞrrelser. Dessverre, for Ä fÞre trafikk slik symmetrisk gjennom hele nettverket, mÄ man komme til alle elementene pÄ Top of fabric samtidig. NÄr det blir mer enn hundre, viser det seg at vi trenger en stor radikal ogsÄ pÄ grense-rutere. Generelt, dette koster penger, fordi grense-rutere er mer funksjonelle, og portene pÄ dem vil vÊre dyrere, noe som gir en ikke sÄ pen konstruksjon.

Et annet alternativ er Ä fÞre slik trafik nedenfra. Det er ikke vanskelig Ä se at Clos-topologien er bygget slik at trafikken som kommer opp fra bunnen, dvs. fra ToR, fordeles jevnt pÄ nivÄene over hele Top of fabric pÄ to iterasjoner, og laster hele nettverket. Derfor introduserer vi en spesialtype Pod, Edge Pod, som sikrer ekstern tilkobling.

Det finnes en annen mulighet. For eksempel, det gjÞr Facebook. De kaller det Fabric Aggregator eller HGRID. Det innfÞres et ekstra spine-nivÄ for Ä koble sammen flere datasentre. En slik struktur er mulig hvis vi ikke har ekstra funksjoner eller endring av innkapsling pÄ skjÊringene. Hvis de eksisterer, er det ekstra touch points, og det blir komplisert. Som regel oppstÄr det flere funksjoner og en slags membran som skiller de forskjellige delene av datasenteret. Det er ikke lurt Ä lage en stor membran, men hvis det er absolutt nÞdvendig, er det fornuftig Ä vurdere muligheten for Ä flytte den, gjÞre den sÄ bred som mulig og overfÞre den til vertene. Mange skyoperatÞrer gjÞr det slik. De har overlays som starter fra vertene.

Hvordan skalere datasentre. Rapport fra Yandex.

Hvilke utviklingsmuligheter ser vi? FĂžrst og fremst — forbedring av stĂžtte for CI/CD-pipeline. Vi Ăžnsker Ă„ fly slik vi tester, og teste slik vi flyr. Det gĂ„r ikke sĂŠrlig bra, fordi infrastrukturen er stor, og det er umulig Ă„ duplisere den for tester. Vi mĂ„ finne ut hvordan vi kan innfĂžre testelementer i den operative infrastrukturen uten Ă„ fĂ„ den til Ă„ krasje.

Bedre verktĂžy og bedre overvĂ„king er nesten alltid nyttig. Hele spĂžrsmĂ„let er balansen mellom innsats og utbytte. Hvis vi kan legge til med rimelige ressurser — er det veldig bra.

Åpne operativsystemer for nettverksenheter. De beste protokollene og de beste rutingsystemene, for eksempel RIFT. Forskning pĂ„ anvendelse av de beste algoritmene for congestion control er ogsĂ„ nĂždvendig, samt muligens innfĂžring av stĂžtte for RDMA i clusteret pĂ„ noen punkter.

Hvis vi ser pĂ„ et mer langsiktig perspektiv, er det behov for avanserte topologier og muligens nettverk som bruker mindre overhead. Fra nyere saker — det har vĂŠrt publisert informasjon om fabrikkteknologi for HPC Cray Slingshot, som er basert pĂ„ commodity Ethernet, men med muligheten for Ă„ bruke mye kortere overskrifter. Som et resultat reduseres overhead.

Hvordan skalere datasentre. Rapport fra Yandex.

Alt bĂžr gjĂžres sĂ„ enkelt som mulig, men ikke enklere. Kompleksitet er fienden til skalerbarhet. Enkle og regelmessige strukturer er vĂ„re venner. Hvis du kan gjĂžre scale out et sted — gjĂžr det. Og generelt er det spennende tider i nettverksteknologi. Det skjer mye interessant. Takk.

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster