Open / R: Open routing voor moderne netwerken-Facebook Engineering

  • We zijn open-sourcing Open / R, een uitbreidbaar netwerk routing platform dat snelle innovatie in netwerkfuncties en toepassingen mogelijk maakt.
  • Open / R wordt gebruikt in de backbone-en datacenternetwerken van Facebook.
  • het platform ondersteunt verschillende netwerktopologieën (zoals WANs, datacenter fabrics, en draadloze mazen) evenals meerdere onderliggende hardware-en softwaresystemen (FBOSS, Arista EOS, Juniper JunOS, Linux routing, enz.).,
  • Open / R biedt een platform om de status over het netwerk te verspreiden en maakt het mogelijk om er nieuwe applicaties bovenop te bouwen. Het biedt ook northbound interfaces om integratie met externe controllers mogelijk te maken.
  • Open / R ondersteunt functies zoals automatische IP-prefix-toewijzing, op RTT gebaseerde kostenstatistieken, sierlijke herstart, snelle convergentie en drain/undrain-bewerkingen.,
  • we hebben samengewerkt met externe partners en operators om Open/R te ondersteunen en te gebruiken, en we nodigen meer operators, ISP ‘ s, leveranciers, systeemintegrators en onderzoekers uit om Open/R te gebruiken als platform voor het implementeren van nieuwe netwerkrouteringsideeën en-toepassingen.

Open-sourcing Open / R

naarmate meer mensen online komen en rijkere inhoud consumeren, neemt de complexiteit van de netwerken die aan de informatiestroom ten grondslag liggen ook toe., Hoewel traditionele routeringsprotocollen de afgelopen 30 jaar goed hebben gewerkt, kan het uitdagend en tijdrovend zijn om snel extensies of volledig nieuwe protocollen naar netwerkapparaten te pushen. Nieuwe ontwikkelingen in routing vereisen vaak een zorgvuldige uitbreiding van een bestaand protocol of het ontwerpen van nieuwe overlay extensies. Verder werden de meeste protocollen in eerste instantie ontworpen op basis van beperkte hardware-en software-omgevingsaannames van decennia geleden. Om rijke, real-time en zeer boeiende gebruikerservaringen via netwerken te blijven leveren, is het belangrijk om de innovatie op het gebied van routering te versnellen.,

vandaag zijn we open-sourcing Open / R, een routeringsplatform dat snelle innovatie in Netwerkfuncties mogelijk maakt. Open / R is oorspronkelijk gebouwd voor het terragraph wireless backhaul netwerk, maar we zagen al snel het potentiële gebruik ervan voor Facebook ‘ s backbone, waar het een efficiëntere en nauwkeurigere controle van een wereldwijd glasvezelnetwerk biedt. Nu beginnen we het zelfs uit te rollen in onze datacenter stoffen, die in FBOSS en op onze Open Compute Project netwerk hardware zoals Wedge 100., Open / R is een enkel platform dat een breed scala aan netwerkdomeinen en-ontwerpen omvat, en we zijn op zoek om het in nog meer use cases toe te passen.

Facebook heeft de toekomst van ons netwerk op een softwaregerichte manier benaderd, en de afgelopen jaren hebben we onze lessen gedeeld met de netwerkgemeenschap. We hebben bijvoorbeeld code gedeeld van Facebook ‘ s open switching system (FBOSS); details over ons netwerkontwerp, – beheer en-monitoringtools zoals Robotron, FCR en fbflow; en ontwerpen van onze intelligente verkeerssystemen zoals Express Backbone en Edge Fabric., Nu, door het vrijgeven van de moderne, gemakkelijk uitbreidbare, en goed geteste Open / R-platform, zijn we van plan om verder te duwen de state-of-the-art in de netwerkgemeenschap.

In deze geest zijn we verheugd om aan te kondigen dat we met verschillende externe partners hebben samengewerkt om Open/R in productie te brengen, zowel binnen het Facebook-netwerk als daarbuiten. Open / R draait nu op Arista switching platforms, geïntegreerd met de open source EOS SDK, evenals op de Juniper QFX en PTX routing platforms met behulp van gRPC-gebaseerde API ‘ s., WiLine Networks, een draadloze ISP, heeft met Tieto samengewerkt om Open/R in haar commerciële netwerk in te zetten in de productie. We nodigen andere leveranciers, operators, ISP ‘ s, systeemintegrators en onderzoekers uit om Open/R te gebruiken als platform voor het implementeren van nieuwe routeringsdomeinideeën om de volgende generatie netwerken efficiënter, intelligenter en gemakkelijker te bedienen te maken.

toepasbaarheid in verschillende netwerkdomeinen

We waren heel blij om te ontdekken dat Open / R flexibel en uitbreidbaar genoeg is om veel soorten netwerktechnologieën en topologieën aan te kunnen., Het begon allemaal met Terragraph, wat een uitdaging vormde voor de traditionele netwerkprotocollen: duizenden draadloze knooppunten die buiten communiceerden met weer, gebladerte en andere obstakels die de connectiviteit voortdurend verstoorden. Een large Layer 2 mesh zou niet zo efficiënt en veerkrachtig zijn, terwijl traditionele Layer 3-protocollen, meestal ontworpen voor basisconnectiviteit en bereikbaarheid, slecht geschikt zijn voor zeer variabele en dynamische buitenomstandigheden., “Control it all central” leek een eenvoudige ontwerpoplossing, maar onpraktisch gezien het gebrek aan out-of-band management en de grote omvang van de draadloze mesh. Zo hebben we Open/R ontworpen als het gedistribueerde netwerkplatform bovenop het terragraph-netwerk dat de grootschalige en snelle veranderingen aankan en snelle uitbreidbaarheid mogelijk maakt.

toen we in eerste instantie deelden dat we Open/R aan het ontwikkelen waren, namen verschillende leden van de netwerkgemeenschap contact op om meer te leren, vooral in de draadloze ruimte., Ontwerpers van draadloze netwerken staan allemaal voor dezelfde uitdaging: hoe informatie over het onderliggende netwerk snel en vaak genoeg te verspreiden, gezien hoe snel draadloze netwerken kunnen veranderen. WiLine Networks was begonnen met het aanpassen van bestaande protocollen als basis voor het platform, maar toen vertegenwoordigers leerden over Open/R, gingen zij en Tieto samen met Facebook om te zien of Open/R aan hun behoeften kon voldoen. Hun specifieke netwerkontwerp had een aantal nieuwe, interessante uitdagingen voor Open / R, maar samen waren we in staat om Open/R uit te breiden om tegemoet te komen aan de nieuwe eisen., Open / R maakt nu deel uit van hun productienetwerk. In dezelfde geest zagen andere aanbieders van de volgende generatie millimetergolfnetwerken de directe toepasbaarheid van Open/R, en zijn we besprekingen begonnen met leden van het Telecom Infra-Project (TIP).

intern zagen we dat Open / R enkele van de uitdagingen in het Facebook backbone-netwerk kon aanpakken. Terwijl de backbone een heel ander domein is dan een metro wireless mesh (de backbone heeft duizenden mijlen vezels die continenten overspannen, oceanen oversteken en de wereld omcirkelen), wordt het vanuit een netwerkperspectief geconfronteerd met soortgelijke problemen., Onze nieuwe Express Backbone vereiste controle van het verkeer en routering over veel verschillende paden en snelle reactie op storingen. In plaats van een traditioneel routeringsprotocol zoals IS-IS te gebruiken, hebben we besloten om Open/R in de Express Backbone te introduceren als het gedistribueerde besturingsvlak voor het netwerk, waar het zou samenwerken met een gecentraliseerde controller. Open / R biedt hier basisconnectiviteit in een netwerk, snelle reacties op netwerkgebeurtenissen en een “gedistribueerde informatiebus” om nieuwe informatie te exporteren naar de controller en agenten op de netwerkknooppunten.,

meest recent richtten we onze aandacht op de Facebook datacenter fabrics — wederom een domein dat heel anders is dan Terragraph en de wereldwijde backbone. Door het ontwerp, de stof is zeer uniform en dicht mazen, met vele mogelijke paden om rekening te houden en hefboomwerking. Facebook exploiteert deze grootschalige stoffen al vele jaren uitsluitend met Border Gateway Protocol (BGP). Hoewel BGP zijn sterke punten heeft, vooral op het gebied van beleidshandhaving en schaalbaarheid, zagen we kansen om het ontwerp te verbeteren en te vereenvoudigen door Open/R en BGP samen te laten werken., Open / R in dit deel van het netwerk draait op de top van FBOSS en op onze eigen OCP netwerk hardware zoals Wedge 100.

routering in een moderne hardware-en softwareomgeving

veel traditionele routeringsprotocollen zijn in het verleden ontworpen, met een sterke focus op het optimaliseren van embedded systemen met beperkte hardware zoals CPU ‘ s en RAM. Bovendien werden protocollen ontworpen als speciaal gebouwde oplossingen om het specifieke probleem van routering voor connectiviteit op te lossen, in plaats van als een flexibel softwareplatform om nieuwe toepassingen in het netwerk te bouwen.,

tegenwoordig zijn CPU-en RAM-beperkingen niet langer een belangrijk knelpunt; tegelijkertijd evolueren de applicatievereisten en use cases waaraan netwerken moeten voldoen snel. Deze veranderingen hebben de focus van netwerkingenieurs verschoven van het optimaliseren van protocollen naar het snel bouwen van nieuwe toepassingen, wat een uitdaging kan zijn om te doen bovenop bestaande protocollen. Het Open / R-platform maakt de snelle innovatie mogelijk die nodig is om moderne netwerkontwerpen te ondersteunen en tegelijkertijd de operationele complexiteit te verminderen.

We hebben Open/R ontworpen om op meerdere hardwareplatforms te draaien., Alle hardware-en systeemafhankelijke stukken zijn geabstraheerd via RPC-interfaces (bijvoorbeeld routeprogrammering en link/address discovery). Hierdoor konden we dezelfde Open/R-implementatie uitvoeren op verschillende soorten hardwareapparaten, met verschillende ASICs of zelfs verschillende CPU-families. Deze flexibiliteit zorgt voor een laag homogeniteit bovenop heterogene netwerkapparaten, waardoor het netwerk gemakkelijker te besturen en te beheren is.,

ontwerpen voor snelle iteratie maakte het noodzakelijk om robuuste testprocedures op te nemen die vertrouwen en duidelijkheid bieden rond elke codewijziging en nieuwe feature release. We streven ernaar om 100 procent codedekking te hebben om elke regel code logica en catch fouten zo vroeg mogelijk te valideren. Unit tests alleen zijn echter duidelijk niet voldoende. Voor elke verandering in de code testen we het werkelijke gedrag van Open/R in een grote geëmuleerde netwerktopologie van duizenden knooppunten, waarbij we regressietests uitvoeren en de hele set functies controleren om achterwaartse compatibiliteit te garanderen., Om dit te doen, bouwden we een framework om grote virtuele topologieën te draaien met behulp van lichtgewicht containers als knooppunten op meerdere fysieke machines. Samen met het Open/R platform zullen we dit emulatiekader ook open sourcen.

open / R ontwerpupdates

zoals we eerder beschreven, Open / R maakt gebruik van bestaande open source codebases voor twee kernfuncties. Ten eerste, het coderen en decoderen van de controle vliegtuig datastructuren wordt gedaan met behulp van spaarzaamheid. Ten tweede wordt de logica voor het uitwisselen van gegevens tussen netwerkknooppunten geïmplementeerd met behulp van ZeroMQ., Deze ontwerpkeuze heeft ons geholpen om veel technische overhead te elimineren en Open/R snel te ontwikkelen, waarbij we ons concentreren op functies op een hoger niveau in plaats van op het low-level sanitair. Bovendien, met behulp van bestaande technologieën konden we tools en bibliotheken in andere talen dan C++ te maken om te communiceren met Open/R. Een voorbeeld is de Breeze CLI tool, die is geschreven in Python en biedt manieren om te communiceren met de verschillende Open/R modules.

sinds ons eerste bericht waarin de architectuur van Open/R wordt beschreven, zijn verschillende verbeteringen en nieuwe functies toegevoegd., Een belangrijke architectonische verbetering is de introductie van de Platform module. Het abstraheert systeem-afhankelijke onderdelen en stelt API ‘ s bloot om low-level informatie te voeden naar andere modules of om de specifieke onderliggende hardware te programmeren. Voor vanilla Linux nodes met software routing, biedt het standaard handlers aan forwarding information base (FIB) programmering en interface state change meldingen voor Open / R., Voor systemen die packet forwarding direct in hardware kunnen uitvoeren (bijvoorbeeld onze terragraph nodes of Express Backbone routers), implementeert de module Fib handlers die interageren met de specifieke hardware SDK ‘ s. In ons Wedge 100-platform implementeert de fboss-agent bijvoorbeeld direct de FIB-programmeerinterface van Open/R.

het volgende diagram geeft een samenvatting van de architectuur op hoog niveau van Open/R:

  • KV-STORE: functioneert als een gerepliceerd sleutelwaardearchitectuur dat gedistribueerde communicatie en statusreplicatie mogelijk maakt.,
  • Spark: voert neighbor discovery uit op interfaces met behulp van Link-Local Multicast, en rapporteert neighbor activiteiten.
  • LinkMonitor: controleert systeeminterfaces via het Platform, beheert Sparksessies daarop en adverteert ontdekte buren in KV-STORE.
  • PrefixManager: voert automatische prefix-suballocatie uit voor ad-hocconfiguratie.
  • besluit: berekent routeringsinformatie op basis van de topologische informatie die via KV-STORE is aangeleerd.
  • FIB: dient als een proxy voor het programmeren van berekende routes via Platform, onderhoudt forwarding status (berekende routes).,
  • Platform: implementeert route programmering en interface discovery logica voor het doel hardware platform.

emulatie en CLI

Open / R testen is gebaseerd op de mogelijkheid om snel grote virtuele netwerken op te zetten zonder de noodzaak voor echte hardware. Om dit te vergemakkelijken, hebben we een generic emulatie library gebouwd — een lichtgewicht wrapper over systemd-nspawn — en een emulatie tool die duizenden Linux containers opstart en een mesh van tunnels tussen hen vormt met een enkel commando., Om pakketverlies, vertraging of jitter te emuleren, ondersteunt de tool het creëren van verschillende netwerkomgevingen, zoals WAN-of draadloze netwerken, door het configureren van verkeersconditioners. Dit maakt het gemakkelijk om het gedrag van Open/R onder verschillende scenario ‘ s te testen, en helpt ontwikkelaars die nieuw zijn voor Open/R op te starten, waardoor een veilige manier wordt geboden om te experimenteren.

het platform wordt geleverd met de Breeze CLI, een command-line interface tool voor netwerk engineers om te communiceren met de mesh van Open/R instanties., Het maakt de inspectie van de draaiende staat informatie, zoals adjacencies, knooppunten, voorvoegsels, routes, tellers, en de nieuwste convergentie statistieken, evenals het uitvoeren van controle operaties zoals aftappen en undraining knooppunten, het instellen van aangepaste statistieken op links, en het aankondigen en intrekken van voorvoegsels., Een handige functie is bijvoorbeeld de mogelijkheid om realtime inspectie uit te voeren van de gerepliceerde statusdatabase van het platform (de KV-STORE), waarmee engineers elke activiteit in het hele netwerk kunnen inspecteren (nodes komen eraan, adjacencies worden afgebroken, of metrische waarden veranderen) alleen door verbinding te maken met een enkel knooppunt.

Open / R en gecentraliseerde controle

het gedistribueerde aspect is belangrijk voor de betrouwbaarheid van het netwerk. Toch worden intelligente beslissingen optimaal genomen wanneer ze worden uitgeladen naar een centrale controller, bijvoorbeeld voor verkeerstechnische doeleinden., Hiervoor biedt Open/R API ‘ s waarmee externe agenten de status van de koppeling kunnen leren of zich kunnen abonneren op databaseupdates, zoals meldingen van een wijziging van de koppelingscapaciteit. Dit kan bijvoorbeeld worden gebruikt om labelgeschakelde paden te berekenen en deze vanaf een centrale locatie op het netwerk te programmeren. Deze functionaliteit maakt het mogelijk om “lokale” (In-network) event-handling te combineren met gecentraliseerde logica, zoals we met succes hebben geïmplementeerd in ons Express Backbone-project.,

samenvatting van features

hoewel Open/R veel features implementeert die vergelijkbaar zijn met die in traditionele protocollen zoals IS-IS en OSPF, introduceert het ook een paar unieke features.

Hier is een korte samenvatting:

  • IPv6 eerst wordt gebruik gemaakt van IPv6 link-local adressen om zero-touch configuratie te bereiken. Er is geen speciale netwerkconfiguratie vereist.
  • ondersteuning voor native IPv4-routering indien nodig.
  • ad hoc netwerk prefix toewijzing en IP configuratie voor knooppunten in het netwerk uit een groter geaggregeerd prefix.,
  • een sierlijke herstart die live software-updates mogelijk maakt zonder het doorsturen van verkeer te verstoren.
  • ondersteuning voor draining en undraining voor knooppunten en koppelingen.
  • Dynamic link RTT metrics berekend en gladgestreken uit actieve sondes.
  • de mogelijkheid om aangepaste metrische waarden in te stellen, statisch of dynamisch.
  • snelle netwerkconvergentie met slimme back-off timers voor link-of knooppuntfouten.
  • continue gezondheidscontrole van het netwerk door middel van live bereikbaarheidsonderzoek.
  • een API voor integratie met gecentraliseerde controllers.,
  • een Python-bibliotheek om te interageren met alle belangrijke Open/R-processen.
  • de mogelijkheid om het platform uit te breiden om allerlei aanvullende informatie te verspreiden, en zelfs om verbeteringen of variaties in de logica van de berekening van het pad te introduceren.

conclusie

hoewel traditionele routeringsprotocollen de afgelopen decennia een belangrijke rol hebben gespeeld bij de vooruitgang van de technologie, naderen we het punt waarop netwerken nog sneller moeten evolueren., Open / R is een open platform dat het gemakkelijk maakt om snel nieuwe ideeën op schaal te testen en te implementeren, waardoor onze netwerken efficiënter, sneller te implementeren en gemakkelijker te beheren zijn.

We moedigen netwerkexploitanten, onderzoekers, leveranciers, ingenieurs en de gehele netwerkgemeenschap sterk aan om Open/R te gebruiken om hun ideeën te implementeren en moderne netwerken te bouwen die opener zijn en sneller dan ooit kunnen evolueren.

en tot slot, een grote dank gaat uit naar de vele teams die met de core development group hebben samengewerkt om Open/R te krijgen voor deze belangrijke mijlpaal., Dit omvat het terragraph team, het Express Backbone team, Datacenter Network Engineering, het fboss team, het Facebook Infrastructure Partnerships team en onze externe partners.

Share

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *