- Vi er åpne-sourcing Åpne/R, en utvidbar nettverk ruting plattform som muliggjør rask innovasjon i nettverk funksjoner og programmer.
- Åpne/R blir brukt i Facebook ‘ s backbone og data center nettverk.
- plattformen støtter forskjellige nettverkstopologier (for eksempel WANs, data center tekstiler, og trådløse masker), samt flere underliggende hardware og software systems (FBOSS, Arista EOS, Einer JunOS, Linux ruting, etc.).,
- Åpne/R gir en plattform for å spre staten over nettverket, og tillater nye programmer til å være bygget på toppen av det. Det gir også videre nordover grensesnitt for å tillate integrering med eksterne kontrollører.
- Åpne/R støtter funksjoner som automatisk IP-prefiks tildeling, RTT-basert kostnad beregninger, grasiøs start, rask konvergens, og avløp/undrain operasjoner.,
- Vi har jobbet med eksterne partnere og operatører til å støtte og bruke Åpne – /R, og vi inviterer flere operatører, Leverandører, forhandlere, systemintegratorer og forskere for å utnytte Åpne/R som en plattform for implementering av nye nettverk ruting ideer og programmer.
Åpne-sourcing Åpne/R
Som flere mennesker kommer online og forbruker rikere innhold, kompleksiteten av nettverk underliggende flyten av informasjon vokser også., Mens tradisjonelle ruting protokoller har jobbet godt over de siste 30 årene, kan det være utfordrende og tidkrevende å raskt skyve utvidelser eller helt nye protokoller i nettverk enheter. Nye fremskritt i ruting ofte krever nøye utvide en eksisterende protokoll eller designer nye overlegg utvidelser. Videre, de fleste protokollene ble opprinnelig utviklet basert på begrenset maskinvare og programvare i miljøet forutsetninger fra flere tiår siden. For å fortsette å levere rik, real-time, og svært engasjerende brukeropplevelser over nettverk, er det viktig å stimulere til innovasjon i ruting-domene.,
i Dag, vi er åpne-sourcing Åpne/R, en arbeidsplan plattform som muliggjør rask innovasjon i nettverk funksjoner. Åpen/R ble opprinnelig bygget for Terragraph trådløs backhaul nettverk, men vi raskt så potensialet sitt bruk for Facebook ryggrad, der det gir mer effektiv og presis styring av en global fiber nettverk. Nå, vi er også begynt å rulle det ut i våre data center stoffer, som kjører inne FBOSS og på våre Åpne Beregne Prosjektet nettverksmaskinvare som Kile 100., Åpen/R er en enkelt plattform som strekker seg over et bredt utvalg av nettverk domener og design, og vi ønsker å bruke det i enda flere bruksmåter.
Facebook har tatt en programvare-sentriske tilnærming til fremtiden i våre nettverk, og i løpet av de siste årene har vi vært å dele erfaringene våre med nettverket samfunnet. For eksempel, vi har felles kode fra Facebook er åpen switching system (FBOSS); opplysninger om våre nettverk design, styring og overvåking verktøy som Robotron, FCR, og fbflow; og design av våre intelligent trafikk-kontroll-systemer, for eksempel Express Ryggraden og Edge Stoff., Nå, ved å slippe moderne, lett utvidbar, og godt testet Åpne/R plattform, vi har til hensikt å ytterligere trykk og state-of-the-art i networking fellesskap.
I denne ånd, vi er glade for å kunngjøre at vi har jobbet med flere eksterne partnere for å bringe Åpne/R til produksjon, både inne i Facebook-nettverket og eksternt. Åpen/R går nå på Arista bytte plattformer, integrert med åpen kildekode EOS SDK, så vel på Einer QFX og PTX ruting plattformer ved hjelp av gRPC-basert Api., WiLine Nettverk, trådløs ISP, har jobbet med Tieto å distribuere Åpne/R i produksjon i den kommersielle nettverk. Vi inviterer andre leverandører, operatører, Leverandører, systemintegratorer og forskere for å utnytte Åpne/R som en plattform for implementering av ny arbeidsplan domene ideer for å gjøre den neste generasjonen av nettverk, mer effektiv, mer intelligent, og enklere å betjene.
Anvendelse på tvers av ulike nettverk domener
Vi var ganske glade for å oppdage at Åpne/R er fleksibel og utvidbar nok til å håndtere mange typer nettverk teknologier og topologi., Det hele startet med Terragraph, som presenterte en utfordring for tradisjonelle nettverk protokoller: tusenvis av trådløse noder kommuniserer utendørs med været, løvverk, og andre hindringer stadig forstyrre tilkobling. Et stort Lag 2 mesh ville ikke være så effektiv og robust, mens tradisjonelle Lag 3 protokoller, designet for det meste for grunnleggende tilkobling og reachability, er dårlig egnet til svært variable og dynamiske utendørs forhold., «Kontrollere det hele sentralt» virket som en enkel design løsning, men upraktisk på grunn av mangelen på out-of-band, management og store størrelsen på den trådløse mesh. Dermed, vi har konstruert Åpne/R for å bli distribuert nettverk plattform på toppen av Terragraph nettverk som kan takle dens store og raske endringer, og tillater rask utvidelsesmuligheter.
Når vi først delt som vi var å utvikle Open/R, flere medlemmer av nettverk samfunnet nådd ut til å lære mer, spesielt i den trådløse plass., Trådløst nettverk designere er alle står overfor den samme utfordringen: hvordan å spre informasjon om det underliggende nettverket raskt og ofte nok, gitt hvor raskt trådløst nettverk kan du endre. WiLine Nettverk hadde startet prøver å endre eksisterende protokoller som grunnlag for sin plattform, men når representanter lært om Åpne/R, de og Tieto engasjert med Facebook for å se om Åpne/R for å kunne møte deres behov. Deres spesielle network design hadde noen nye, interessante utfordringer for Åpne/R, men sammen klarte vi å utvide Åpne/R for å imøtekomme de nye kravene., Åpen/R er nå en del av sin produksjon nettverk. På samme måte som andre leverandører av neste generasjon, millimeter-wave nettverk så direkte anvendelse av Åpne/R, og vi har startet diskusjoner med medlemmer av Telekom-Infra-Prosjektet (TIPS).
Internt, vi så at Åpne/R kunne ta opp noen av utfordringene i Facebook backbone-nettverk. Mens ryggraden er et helt annet domene fra en t wireless mesh (ryggraden har tusenvis av miles av fiber som strekker seg over kontinenter, krysse hav, og sett en sirkel rundt kloden), fra et nettverk perspektiv som den står overfor lignende problemer., Vår nye Express (Backbone) nødvendig for kontroll av trafikk og ruting over mange vidt forskjellige veier, og rask respons på feil. I stedet for å bruke en tradisjonell ruting protokoll som ER-ER, bestemte vi oss for å innføre Åpne/R inn Express Ryggraden som distribueres styre flyet til nettverket, hvor det ville fungere sammen med en sentralisert kontrolleren. Her Åpner du/R gir enkel tilkobling i et nettverk, raske reaksjoner til nettverk hendelser, og en «distribuert informasjon buss» til å eksportere ny informasjon til kontrolleren og agenter på nettverket noder.,
nylig, vi viste vår oppmerksomhet til Facebook data center stoffer — igjen, en domene svært forskjellig fra Terragraph og den globale ryggraden. Ved design, stoffet er meget jevn og tett meshed, med mange mulige veier å redegjøre for, og innflytelse. For mange år, Facebook har vært med å drive disse i stor skala stoffer utelukkende med Border Gateway Protocol (BGP). Mens BGP bringer sine styrker, spesielt med hensyn til håndhevelse og skala, så vi muligheter til å forbedre og forenkle utformingen av å ha Åpne/R og BGP arbeide sammen., Åpen/R i denne delen av nettverket som kjører på toppen av FBOSS og på vår egen OCP nettverksmaskinvare, for eksempel Kile 100.
Ruting i et moderne maskinvare og programvare i miljøet
Mange tradisjonelle ruting protokoller ble laget i det siste, med et sterkt fokus på å optimalisere for maskinvare-begrenset embedded systemer, slik som Cpu og RAM. I tillegg, protokoller ble utformet som spesialbygde løsninger for å løse det aktuelle problemet for ruting for tilkobling, snarere enn som en fleksibel programvare plattform å bygge nye programmer i nettverket.,
i Dag, CPU og RAM begrensninger er ikke lenger en stor flaskehals; på samme tid, krav til søknad og bruk saker som nettverk trenger å tilfredsstille er i rask utvikling. Disse endringene har skiftet fokus for nettverk ingeniører fra optimalisering av protokoller for å bygge nye programmer raskt, noe som kan være utfordrende å gjøre på toppen av eksisterende protokoller. Åpen/R-plattformen muliggjør rask innovasjon er nødvendig for å støtte moderne nettverk design, samtidig som du reduserer operasjonell kompleksitet.
Vi har konstruert Åpne/R for å kjøre på flere maskinplattformer., Alle maskinvare – og system-avhengig brikker har blitt hentet ut via RPC-grensesnitt (for eksempel rute programmering og link/adresse discovery). Dette har tillatt oss å kjøre den samme Åpne/R implementering på ulike typer maskinvare enheter, med forskjellige ASICs eller enda forskjellige CPU familier. Denne fleksibiliteten gir et lag av homogenitet på toppen av heterogene nettverk enheter, noe som gjør nettverket enklere å kontrollere og styre.,
Design for rask iterasjon gjort det nødvendig å inkludere robust test prosedyrer som gir trygghet og klarhet rundt hver kode endre og nye funksjonen utgivelse. Vi bestreber oss i å ha 100 prosent kode dekning for å validere hver eneste linje med kode logikk og ta feil så tidlig som mulig. Imidlertid, unit tester alene er klart ikke tilstrekkelig. For hver endring i koden, tester vi Åpne/R faktiske atferd i en stor emulert nettverkstopologien av tusenvis av noder, kjører regresjon tester og sjekker hele sett av funksjoner for å sikre bakoverkompatibilitet., For å gjøre dette, har vi bygget et rammeverk for å snurre stor virtuell topologier med lett beholdere som noder på tvers av flere fysiske maskiner. Vi vil også være åpen-sourcing dette emulering rammeverket sammen med Åpne – /R-plattformen.
Åpne/R-design oppdateringer
Som vi har beskrevet tidligere, Åpne/R utnytter eksisterende åpen kildekode codebases for to viktige funksjoner. Første, koding og dekoding av kontroll flyet data strukturer er gjort ved hjelp av Sparsommelighet. For det andre, logikk til å utveksle data mellom nettverksnoder er implementert ved hjelp av ZeroMQ., Dette design-valg hjalp oss med å eliminere mye av tekniske overhead og utvikle Åpne/R raskt, og konsentrerer seg på høyere nivå har snarere enn på lavt nivå vvs. I tillegg, ved hjelp av eksisterende teknologi tillatt oss å lage verktøy og biblioteker i andre språk enn C++ til å samhandle med Åpne/R. Et eksempel er Bris CLI-verktøyet, som er skrevet i Python, og tilbyr måter å samhandle med ulike Åpne/R moduler.
Siden vår første post som beskriver Åpne/R arkitektur, flere forbedringer og nye funksjoner har blitt lagt til., En arkitektonisk forbedring er innføringen av Platform module). Den abstracts ut systemet-avhengige deler og eksponerer Api for å mate lavt nivå informasjon til andre moduler, eller til å programmere de spesifikke underliggende maskinvaren. For vanilje Linux noder med programvare ruting, det gir standard behandlere til adressen for videresending av informasjon base (FIB) programmering og grensesnitt state endre varsler for å Åpne/R., For systemer som er i stand til å gjøre packet videresending direkte i maskinvare (for eksempel våre Terragraph noder eller Uttrykke Ryggraden rutere), modul som implementerer FIB behandlere som samhandler med maskinvaren Sdk. For eksempel, i vår Kile 100-plattformen, FBOSS agent direkte implementerer Åpne/R er FIB programming interface.
følgende diagram oppsummerer Åpne/R s high-nivå arkitektur:
- KV-BUTIKKEN: dette fungerer som en replikert nøkkel-verdi lagre som gjør det mulig for distribuert kommunikasjon og staten replikering.,
- Gnist: utfører nabo funnet på grensesnitt ved hjelp av Link-Local Multicast, og rapporter nabo aktiviteter.
- LinkMonitor: overvåker systemet grensesnitt via Plattformen, klarer Gnist økter på disse, og annonserer oppdaget naboer i KV-BUTIKKEN.
- PrefixManager: utfører automatisk prefiks suballocation for ad hoc-konfigurasjon.
- Vedtak: regner ruting informasjon basert på den topologiske informasjon lært via KV-BUTIKKEN.
- FIB: fungerer som en proxy for programmering beregnet ruter via Plattformen, opprettholder videresending state (beregnet ruter).,
- Plattform: implementerer rute programmering og grensesnitt discovery logikk for mål-hardware-plattform.
– Emulering og CLI
Åpne/R testing er avhengig av evnen til raskt å sette opp store virtuelle nettverk uten behov for selve maskinvaren. Til rette for dette, har vi bygget en generisk emulering bibliotek — en lett-wrapper over systemd-nspawn
— og en emulering verktøy som starter tusenvis av Linux containere og former en maske av tunneler blant dem med en enkelt kommando., For å etterligne pakketap, forsinkelse, eller jitter, verktøyet støtter etablering av ulike nettverk miljøer, for eksempel WAN eller trådløst nettverk, ved å konfigurere trafikk balsam. Dette gjør det enkelt å teste Åpne/R ‘ s oppførsel under ulike scenarier, og bidrar til å trappe opp utviklere ny for å Åpne/R, og gir en sikker måte å eksperimentere.
plattformen kommer med Vind CLI, et kommandolinje-grensesnitt verktøy for nettverk ingeniører til å samhandle med mesh for å Åpne/R tilfeller., Det tillater inspeksjon av å kjøre statlig informasjon, for eksempel adjacencies, noder, prefikser, ruter, tellere, og siste konvergens statistikk, så vel som å utføre kontroll operasjoner som for eksempel drenering og undraining noder, innstilling beregninger på linker, og kunngjøring og uttak av prefikser., For eksempel, en nyttig funksjon er muligheten til å utføre sanntids inspeksjon av plattformen er replikert state-databasen (KV-STORE), som lar ingeniører til å inspisere enhver aktivitet i hele nettverket (noder som kommer opp, adjacencies rive ned, eller verdiene endre) bare ved å koble til en enkelt node.
Åpne/R og sentralisert kontroll
distribuert aspektet er viktig for nettverket pålitelighet. Likevel, intelligente beslutninger er optimalt gjort når de er losses i en sentral kontroller, for eksempel for trafikkteknikk formål., For at Åpne/R gir Api tillater eksterne agenter for å lære link staten eller abonnere på database oppdateringer, for eksempel varsler om en kobling kapasitet endre. For eksempel, dette kan brukes til å beregne etikett-slått stier og programmere dem på nettverket fra et sentralt sted. Denne funksjonaliteten gjør at kombinasjonen av «lokale» (i-nettverk) – event-håndtering med sentralisert logikk, som vi har gjennomført med hell i vår Express Ryggraden prosjektet.,
Oppsummering av funksjoner
Mens Åpne/R implementerer mange funksjoner som ligner de man finner i tradisjonelle protokoller som ER-ER og OSPF, det introduserer også noen unike funksjoner av sine egne.
Her er en rask oppsummering:
- IPv6-først å benytte IPv6-link-lokal-adresser for å oppnå zero-touch-konfigurasjon. Ingen spesielle nettverk konfigurasjon er nødvendig.
- Støtte for native IPv4-ruting når det er nødvendig.
- Ad hoc-nettverk prefiks tildeling og IP-konfigurasjon for noder i nettverket fra en større samlet prefiks.,
- En herlig start som gjør det mulig for live-oppdateringer uten å forstyrre trafikken videresending.
- Støtte for drenering og undraining for noder og lenker.
- Dynamic link RTT beregninger beregnet og glattet ut fra aktive prober.
- evne til å sette egendefinert beregning verdier, statisk eller dynamisk.
- et Raskt nettverk konvergens med smart back-off tidtakere for kobling eller en node feil.
- Kontinuerlig helse kontroll av nettverket via live reachability sondering.
- Et API for integrasjon med sentralisert kontrollere.,
- Et Python library for å samhandle med alle de viktigste Åpne/R prosesser.
- evne til å forlenge plattformen til å formidle alle typer ytterligere informasjon, og til og med å innføre forbedringer i forhold til banen beregning logikk.
Konklusjon
Mens tradisjonelle ruting protokoller, har vært medvirkende til utviklingen av teknologi i de siste tiårene, nærmer vi oss et punkt der nettverk trenger å utvikle seg enda raskere., Åpen/R er en åpen plattform som gjør det enkelt å raskt teste og implementere nye ideer i stor skala, noe som gjør at våre nettverk mer effektiv, raskere å distribuere, og enklere å administrere.
Vi oppfordrer nettverksoperatører, forskere, leverandører, ingeniører, og den samlede nettverk fellesskap for å bruke Åpen/R for å gjennomføre sine ideer og bygge moderne nettverk som er mer åpne og kan utvikle seg raskere enn noen gang.
Og til slutt, en stor takk går til de mange lagene som jobbet med kjernen utvikling gruppe for å få Åpne/R til denne viktige milepælen., Dette inkluderer Terragraph team, Express Ryggraden team, Data Center Network Engineering, FBOSS team, Facebook Infrastruktur Partnerskap team, og våre eksterne samarbeidspartnere.