Open / R: Open routing for modern networks-Facebook Engineering

  • Vi är Open-sourcing Open/R, en utbyggbar nätverksroutningsplattform som möjliggör snabb innovation i nätverksfunktioner och applikationer.
  • Open / R används i Facebook: s ryggrad och datacenter nätverk.
  • plattformen stöder olika nätverkstopologier (som WANs, datacenter tyger och trådlösa maskor) samt flera underliggande hårdvaru-och mjukvarusystem (fboss, Arista EOS, Juniper JunOS, Linux routing, etc.).,
  • Open / R ger en plattform för att sprida tillstånd över nätverket och tillåter nya program som ska byggas ovanpå det. Det ger också nordbundna gränssnitt för att möjliggöra integration med externa styrenheter.
  • Open/R stöder funktioner som automatisk IP-prefixallokering, RTT-baserade kostnadsmått, graciös omstart, snabb konvergens och drain / undrain-operationer.,
  • Vi har arbetat med externa partners och operatörer för att stödja och använda Open/R, och vi bjuder in fler operatörer, Internetleverantörer, leverantörer, systemintegratörer och forskare att utnyttja Open/R som en plattform för att implementera nya nätverksroutningsidéer och applikationer.

Open-sourcing Open/R

När fler människor kommer online och konsumerar rikare innehåll växer komplexiteten hos de nätverk som ligger till grund för informationsflödet också., Medan traditionella routingprotokoll har fungerat bra under de senaste 30 åren kan det vara utmanande och tidskrävande att snabbt trycka på tillägg eller helt nya protokoll till nätverksenheter. Nya framsteg i routing kräver ofta noggrant utvidga ett befintligt protokoll eller utforma nya overlay förlängningar. Vidare utformades de flesta protokollen ursprungligen baserat på begränsade hårdvaru-och programvarumiljöantaganden från årtionden sedan. För att fortsätta leverera rika, realtid och mycket engagerande användarupplevelser över nätverk är det viktigt att påskynda innovation inom routningsdomänen.,

idag är vi Open-sourcing Open / R, en routningsplattform som möjliggör snabb innovation i nätverksfunktioner. Open / R byggdes ursprungligen för Terragraph wireless backhaul network, men vi såg snabbt dess potentiella användning för Facebook: s ryggrad, där det ger effektivare och exakt kontroll över ett globalt fibernätverk. Nu börjar vi till och med rulla ut det i våra datacenter tyger, som körs inuti FBOSS och på vår öppna Compute Project networking hardware som Wedge 100., Open/R är en enda plattform som spänner över en mängd olika nätverksdomäner och mönster, och vi funderar på att tillämpa den i ännu fler användningsfall.

Facebook har tagit en mjukvarucentrerad inställning till framtiden för vårt nätverk, och under de senaste åren har vi delat våra lärdomar med nätverkssamhället. Till exempel har vi delat kod från Facebook: s open switching system (FBOSS); detaljer om vår nätverksdesign, ledning och övervakningsverktyg som Robotron, FCR och fbflow; och mönster av våra intelligenta trafikstyrningssystem som Express Backbone och Edge Fabric., Nu, genom att släppa den moderna, lätt utbyggbara och vältestade Open/R-plattformen, har vi för avsikt att ytterligare driva toppmoderna i nätverkssamhället.

i denna anda är vi glada att kunna meddela att vi har arbetat med flera externa partners för att få Open/R till produktion, både inom Facebook-nätverket och externt. Öppen/R kör nu på Arista byta plattformar, integrera med öppen källkod EOS SDK, samt på Juniper DRAGOS och PTX routing-plattformar som använder gRPC-baserade Api: er., WiLine Networks, en trådlös ISP, har arbetat med Tieto för att distribuera Open / R i produktion i sitt kommersiella nätverk. Vi bjuder in andra leverantörer, operatörer, Internetleverantörer, systemintegratörer och forskare att utnyttja Open/R som en plattform för att implementera nya routingdomänidéer för att göra nästa generations nätverk effektivare, mer intelligenta och enklare att använda.

tillämplighet över olika nätverksdomäner

vi var ganska glada att upptäcka att Open / R är flexibel och töjbar nog att hantera många typer av nätverksteknik och topologier., Allt började med Terragraph, som presenterade en utmaning för traditionella nätverksprotokoll: tusentals trådlösa noder som kommunicerar utomhus med väder, lövverk och andra hinder som ständigt stör anslutningen. Ett stort lager 2 mesh skulle inte vara lika effektiv och motståndskraftig, medan traditionella lager 3 protokoll, främst avsedd för grundläggande anslutning och nåbarhet, är dåligt lämpade för mycket varierande och dynamiska utomhusförhållanden., ”Styr allt centralt” verkade som en enkel designlösning, men opraktisk med tanke på bristen på Out-of-band-hantering och stor storlek på det trådlösa nätet. Således utformade vi Open / R för att vara den distribuerade nätverksplattformen ovanpå Terragraph-nätverket som kunde klara av sina stora och snabba förändringar och möjliggöra snabb töjbarhet.

När vi ursprungligen delade att vi utvecklade Open / R, nådde flera medlemmar i nätverkssamhället ut för att lära sig mer, särskilt i det trådlösa utrymmet., Trådlösa nätverksdesigners står alla inför samma utmaning: hur man sprider information om det underliggande nätverket snabbt och ofta nog, med tanke på hur snabba trådlösa nätverk kan förändras. WiLine Networks hade börjat försöka ändra befintliga protokoll som grund för sin plattform, men när representanter lärde sig om Open / R, de och Tieto engagerade med Facebook för att se om Open/R kunde möta deras behov. Deras speciella nätverksdesign hade några nya, intressanta utmaningar för Open / R, men tillsammans kunde vi utöka Open / R för att tillgodose de nya kraven., Open / R är nu en del av deras produktionsnätverk. På liknande sätt såg andra leverantörer av nästa generations millimetervågnät den direkta tillämpligheten av Open/R, och vi har inlett diskussioner med medlemmar i Telecom Infra Project (TIP).

Internt såg vi att Open / R kunde ta itu med några av utmaningarna i Facebook backbone-nätverket. Medan ryggraden är en helt annan domän från ett trådlöst metronät (ryggraden har tusentals miles av fiber som spänner över kontinenter, korshav och cirklar världen), ur ett nätverksperspektiv står det inför liknande problem., Vår nya Express ryggraden krävs kontroll av trafik och dirigering över många vitt skilda vägar och snabba svar på misslyckanden. Istället för att använda ett traditionellt routingprotokoll som IS-IS, bestämde vi oss för att introducera Open / R I Express Backbone som det distribuerade kontrollplanet för nätverket, där det skulle fungera tillsammans med en centraliserad styrenhet. Här ger Open / R grundläggande anslutning i ett nätverk, snabba reaktioner på nätverkshändelser och en” distribuerad informationsbuss ” för att exportera ny information till styrenheten och agenterna på nätverksnoderna.,

senast, vi vände vår uppmärksamhet till Facebook data center tyger-igen, en domän som skiljer sig mycket från Terragraph och den globala ryggraden. Genom design är tyget mycket enhetligt och tätt Maskat, med många möjliga vägar att redogöra för och hävstångseffekt. I många år har Facebook drivit dessa storskaliga tyger enbart med Border Gateway Protocol (BGP). Medan BGP ger sina styrkor, särskilt när det gäller policytillämpning och skala, såg vi möjligheter att förbättra och förenkla designen genom att ha Open/R och BGP arbeta tillsammans., Open / R i denna del av nätverket körs ovanpå FBOSS och på vår egen OCP nätverkshårdvara som Wedge 100.

Routing i en modern hårdvaru-och programvarumiljö

många traditionella routingprotokoll utformades tidigare, med ett starkt fokus på att optimera för hårdvarubegränsade inbyggda system som processorer och RAM. Dessutom har protokoll utformats som specialbyggda lösningar för att lösa det särskilda problemet med routing för anslutning, snarare än som en flexibel mjukvaruplattform för att bygga nya applikationer i nätverket.,

idag är CPU-och RAM-begränsningar inte längre en stor flaskhals; samtidigt utvecklas de applikationskrav och användningsfall som nätverk behöver uppfylla snabbt. Dessa förändringar har skiftat fokus för nätverksingenjörer från att optimera protokoll för att snabbt bygga nya applikationer, vilket kan vara svårt att göra utöver befintliga protokoll. Open / r-plattformen möjliggör den snabba innovation som krävs för att stödja moderna nätverksdesign samtidigt som den operativa komplexiteten minskar.

Vi utformade Open / R för att köras på flera hårdvaruplattformar., Alla maskinvaru-och systemberoende bitar har abstraherats via RPC-gränssnitt (till exempel ruttprogrammering och länk/adress upptäckt). Detta har gjort det möjligt för oss att köra samma Open/R-implementering på olika typer av hårdvaruenheter, med olika ASICs eller till och med olika CPU-familjer. Denna flexibilitet ger ett lager av homogenitet ovanpå heterogena nätverksenheter, vilket gör nätverket lättare att kontrollera och hantera.,

design för snabb iteration gjorde det nödvändigt att inkludera robusta testprocedurer som ger förtroende och klarhet kring varje kodändring och ny funktion release. Vi strävar efter att ha 100 procent kod täckning för att validera varje rad kodlogik och fånga fel så tidigt som möjligt. Enhetstester är dock helt klart inte tillräckliga. För varje förändring i koden testar vi Open / R: s faktiska beteende i ett stort emulerat nätverk topologi av tusentals noder, kör regressionstester och kontrollerar hela uppsättningen funktioner för att säkerställa bakåtkompatibilitet., För att göra detta byggde vi en ram för att snurra upp stora virtuella topologier med lätta behållare som noder över flera fysiska maskiner. Vi kommer också att öppna denna emulering ram tillsammans med Open / R-plattformen.

öppna/r designuppdateringar

som vi tidigare har beskrivit utnyttjar open / R befintliga kodbaser med öppen källkod för två kärnfunktioner. För det första görs kodning och avkodning av styrplandatastrukturer med hjälp av sparsamhet. För det andra implementeras logiken för att utbyta data mellan nätverksnoder med ZeroMQ., Denna design val hjälpte oss att eliminera en hel del tekniska overhead och utveckla öppen/R snabbt, koncentrera sig på högre nivå funktioner snarare än på låg nivå VVS. Dessutom kan vi med hjälp av befintlig teknik skapa verktyg och bibliotek på andra språk än C++ för att interagera med Open/R. ett exempel är Breeze CLI-verktyget, som är skrivet i Python och ger sätt att interagera med de olika Open/R-modulerna.

sedan vårt första inlägg som beskriver open/R: s arkitektur har flera förbättringar och nya funktioner lagts till., En stor arkitektonisk förbättring är införandet av plattformsmodul. Det sammanfattar systemberoende delar och exponerar API: er för att mata information på låg nivå till andra moduler eller för att programmera den specifika underliggande hårdvaran. För vanilj Linux noder med programvara routing, det ger standardhanterare för att hantera vidarebefordra information base (FIB) programmering och gränssnitt statliga ändra meddelanden för att Öppna/R., För system som kan göra paket vidarebefordran direkt i hårdvara (till exempel våra Terragraph noder eller Express Backbone routrar), modulen implementerar fiberhanterare som interagerar med de specifika hårdvara SDK. Till exempel, i vår Wedge 100-plattform, implementerar FBOSS-agenten direkt Open/R: s Fib-programmeringsgränssnitt.

Följande diagram sammanfattar open / R: s arkitektur på hög nivå:

  • kV-STORE: fungerar som en replikerad nyckelvärdesbutik som möjliggör distribuerad kommunikation och statsreplikering.,
  • Spark: utför granne upptäckt på gränssnitt med hjälp av länk-lokal Multicast, och rapporterar granne aktiviteter.
  • LinkMonitor: övervakar systemgränssnitt via plattform, hanterar Spark sessioner på dem, och annonserar upptäckte grannar i KV-STORE.
  • PrefixManager: utför automatisk prefix-underfördelning för Ad hoc-konfiguration.
  • beslut: beräknar routningsinformation baserat på den topologiska information som läras via KV-STORE.
  • FIB: fungerar som en proxy för programmering beräknade rutter via plattform, upprätthåller vidarebefordran tillstånd (beräknade rutter).,
  • plattform: implementerar ruttprogrammering och gränssnittsupptäckningslogik för målhårdvaruplattformen.

emulering och CLI

Open / R-testning bygger på möjligheten att snabbt skapa stora virtuella nätverk utan behov av faktisk hårdvara. För att underlätta detta byggde vi ett generiskt emuleringsbibliotek-ett lättviktsomslag över systemd-nspawn — och ett emuleringsverktyg som startar tusentals Linux-behållare och bildar ett nät av tunnlar bland dem med ett enda kommando., För att emulera paketförlust, fördröjning eller jitter stöder verktyget skapandet av olika nätverksmiljöer, såsom WAN eller trådlösa nätverk, genom att konfigurera trafikkonditioneringar. Detta gör det enkelt att testa Open/R beteende under olika scenarier, och hjälper ramp upp Utvecklare Nya att öppna/R, vilket ger ett säkert sätt att experimentera.

plattformen levereras med Breeze CLI, ett kommandoradsgränssnitt verktyg för nätverksingenjörer att interagera med nätet av öppna / r instanser., Det tillåter inspektion av löpande statlig information, såsom adjacencies, noder, prefix, rutter, räknare och senaste konvergensstatistik, samt utföra kontrolloperationer som dränering och undraining noder, ställa in anpassade mätvärden på länkar, och tillkännage och dra tillbaka prefix., Till exempel är en användbar funktion möjligheten att utföra realtidsinspektion av plattformens replikerade tillståndsdatabas (KV-STORE), vilket gör det möjligt för ingenjörer att inspektera någon aktivitet i hela nätverket (noder som kommer upp, adjacenser riva ner eller metriska värden förändras) bara genom att ansluta till en enda nod.

öppen/r och centraliserad kontroll

den distribuerade aspekten är viktig för nätverkssäkerheten. Ändå görs intelligenta beslut optimalt när de lastas av till en centraliserad styrenhet, till exempel för trafikteknik., För det ger Open / R API: er som tillåter fjärragenter att lära sig länktillståndet eller prenumerera på databasuppdateringar, till exempel meddelanden om en länkkapacitetsändring. Detta kan till exempel användas för att beräkna etikettväxlade sökvägar och programmera dem på nätverket från en central plats. Denna funktion möjliggör en kombination av” lokal ” (i-nätverk) händelsehantering med centraliserad logik, som vi har genomfört framgångsrikt i vårt Express Backbone-projekt.,

sammanfattning av funktioner

medan Open / R implementerar många funktioner som liknar dem som finns i traditionella protokoll som IS-IS och OSPF, introducerar den också några unika egenskaper.

här är en snabb sammanfattning:

  • IPv6 först, utnyttja IPv6 länk-lokala adresser för att uppnå noll-touch konfiguration. Ingen speciell nätverkskonfiguration krävs.
  • stöd för native IPv4 routing när det behövs.
  • tilldelning av Ad hoc-nätverksprefix och IP-konfiguration för noder i nätverket från ett större aggregatprefix.,
  • en graciös omstart som möjliggör live programuppdateringar utan att störa trafik vidarebefordran.
  • stöd för dränering och undraining för noder och länkar.
  • dynamisk länk RTT mätvärden beräknas och jämnas ut från aktiva sonder.
  • möjligheten att ställa in egna mätvärden, statiskt eller dynamiskt.
  • snabb nätverkskonvergens med smarta back-off timers för länkfel eller nodfel.
  • kontinuerlig hälsokontroll av nätverket genom live reachability sonding.
  • ett API för integration med centraliserade styrenheter.,
  • ett Python-bibliotek för att interagera med alla de viktigaste öppna/R-processerna.
  • möjligheten att utöka plattformen för att sprida all slags ytterligare information, och till och med att införa förbättringar eller variationer i vägberäkningslogiken.

slutsats

medan traditionella routingprotokoll har varit avgörande för teknikens framsteg under de senaste decennierna närmar vi oss den punkt där nätverken behöver utvecklas ännu snabbare., Open/R är en öppen plattform som gör det enkelt att snabbt testa och distribuera nya idéer i skala, vilket gör våra nätverk effektivare, snabbare att distribuera och lättare att hantera.

Vi uppmuntrar starkt nätoperatörer, forskare, leverantörer, ingenjörer och det övergripande nätverkssamhället att använda Open/R för att implementera sina idéer och bygga moderna nätverk som är öppnare och kan utvecklas snabbare än någonsin.

och slutligen går ett stort tack till de många lag som arbetade med kärnutvecklingsgruppen för att få öppna/R till denna viktiga milstolpe., Detta inkluderar Terragraph team, Snabb Ryggraden team, Data Center Network Engineering, FBOSS team, Facebook Infrastruktur Partnerskap team, och våra externa partners.

Share

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *