- Siamo open-sourcing Open/R, una piattaforma di routing di rete estensibile che consente una rapida innovazione nelle funzioni e nelle applicazioni di rete.
- Open / R viene utilizzato nelle reti backbone e data center di Facebook.
- La piattaforma supporta diverse topologie di rete (come WAN, tessuti per data center e mesh wireless) e più sistemi hardware e software sottostanti (FBOSS, Arista EOS, Juniper JunOS, Linux routing, ecc.).,
- Open / R fornisce una piattaforma per diffondere lo stato attraverso la rete e consente di costruire nuove applicazioni su di esso. Fornisce inoltre interfacce northbound per consentire l’integrazione con controller esterni.
- Open / R supporta funzionalità come l’allocazione automatica del prefisso IP, metriche di costo basate su RTT, riavvio grazioso, convergenza rapida e operazioni di drain/undrain.,
- Abbiamo lavorato con partner e operatori esterni per supportare e utilizzare Open/R, e invitiamo più operatori, ISP, fornitori, integratori di sistemi e ricercatori a sfruttare Open/R come piattaforma per implementare nuove idee e applicazioni di routing di rete.
Open-sourcing Open/R
Man mano che sempre più persone arrivano online e consumano contenuti più ricchi, cresce anche la complessità delle reti alla base del flusso di informazioni., Mentre i protocolli di routing tradizionali hanno funzionato bene negli ultimi 30 anni, può essere difficile e dispendioso in termini di tempo per spingere rapidamente estensioni o protocolli completamente nuovi in dispositivi di rete. I nuovi progressi nel routing spesso richiedono l’estensione di un protocollo esistente o la progettazione di nuove estensioni di sovrapposizione. Inoltre, la maggior parte dei protocolli sono stati inizialmente progettati sulla base di presupposti hardware e software vincolati di decenni fa. Per continuare a fornire esperienze utente ricche, in tempo reale e altamente coinvolgenti sulle reti, è importante accelerare l’innovazione nel dominio del routing.,
Oggi, siamo open-sourcing Open / R, una piattaforma di routing che consente una rapida innovazione nelle funzioni di rete. Open / R è stato originariamente costruito per la rete backhaul wireless Terragraph, ma abbiamo visto rapidamente il suo potenziale utilizzo per backbone di Facebook, dove fornisce un controllo più efficiente e preciso di una rete in fibra globale. Ora, stiamo anche iniziando a stenderlo nei nostri tessuti del data center, in esecuzione all’interno di FBOSS e sul nostro hardware di rete Open Compute Project come Wedge 100., Open / R è una singola piattaforma che si estende su una vasta gamma di domini di rete e disegni, e stiamo cercando di applicarlo in ancora più casi d’uso.
Facebook ha adottato un approccio software-centric per il futuro della nostra rete, e nel corso degli ultimi anni abbiamo condiviso le nostre conoscenze con la comunità della rete. Ad esempio, abbiamo condiviso codice dal sistema open switching (FBOSS) di Facebook; dettagli sulla nostra progettazione di rete, gestione e strumenti di monitoraggio come Robotron, FCR e fbflow; e progetti dei nostri sistemi di controllo del traffico intelligente come Express Backbone e Edge Fabric., Ora, rilasciando la piattaforma Open/R moderna, facilmente estensibile e ben collaudata, intendiamo spingere ulteriormente lo stato dell’arte nella comunità di networking.
In questo spirito, siamo entusiasti di annunciare che abbiamo lavorato con diversi partner esterni per portare Open / R alla produzione, sia all’interno della rete Facebook che all’esterno. Open / R ora funziona su piattaforme di commutazione Arista, integrandosi con l’SDK EOS open source, nonché sulle piattaforme di routing Juniper QFX e PTX che utilizzano API basate su gRPC., WiLine Networks, un ISP wireless, ha lavorato con Tieto per distribuire Open / R in produzione nella sua rete commerciale. Invitiamo altri fornitori, operatori, ISP, integratori di sistemi e ricercatori a sfruttare Open/R come piattaforma per implementare nuove idee di dominio di routing per rendere la prossima generazione di reti più efficiente, più intelligente e più facile da utilizzare.
Applicabilità tra diversi domini di rete
Siamo stati molto felici di scoprire che Open / R è abbastanza flessibile ed estensibile per gestire molti tipi di tecnologie e topologie di rete., Tutto è iniziato con Terragraph, che ha presentato una sfida ai protocolli di rete tradizionali: migliaia di nodi wireless che comunicano all’aperto con il tempo, il fogliame e altri ostacoli che interferiscono costantemente con la connettività. Una grande mesh Layer 2 non sarebbe così efficiente e resiliente, mentre i tradizionali protocolli Layer 3, progettati principalmente per la connettività e la raggiungibilità di base, sono poco adatti a condizioni esterne altamente variabili e dinamiche., “Control it all centrally” sembrava una soluzione di design semplice, ma poco pratica data la mancanza di gestione out-of-band e le grandi dimensioni della mesh wireless. Pertanto, abbiamo progettato Open/R per essere la piattaforma di rete distribuita in cima alla rete Terragraph in grado di far fronte ai suoi cambiamenti rapidi e su larga scala e consentire una rapida estensibilità.
Quando inizialmente abbiamo condiviso che stavamo sviluppando Open / R, diversi membri della comunità di networking hanno contattato per saperne di più, specialmente nello spazio wireless., I progettisti di reti wireless stanno tutti affrontando la stessa sfida: come diffondere le informazioni sulla rete sottostante in modo rapido e abbastanza frequente, data la velocità con cui le reti wireless possono cambiare. WiLine Networks aveva iniziato a cercare di modificare i protocolli esistenti come base per la sua piattaforma, ma quando i rappresentanti hanno appreso di Open/R, loro e Tieto si sono impegnati con Facebook per vedere se Open/R poteva soddisfare le loro esigenze. Il loro particolare design della rete ha avuto alcune nuove e interessanti sfide per Open / R, ma insieme siamo stati in grado di estendere Open/R per soddisfare i nuovi requisiti., Open / R è ora parte della loro rete di produzione. Allo stesso modo, altri fornitori di reti a onde millimetriche di nuova generazione hanno visto l’applicabilità diretta di Open/R e abbiamo avviato discussioni con i membri del progetto Telecom Infra (TIP).
Internamente, abbiamo visto che Open / R potrebbe affrontare alcune delle sfide nella rete backbone di Facebook. Mentre la spina dorsale è un dominio completamente diverso da una rete wireless della metropolitana (la spina dorsale ha migliaia di miglia di fibra che coprono i continenti, attraversano gli oceani e circondano il globo), da una prospettiva di rete affronta problemi simili., Il nostro nuovo Backbone Express richiedeva il controllo del traffico e del routing su molti percorsi molto diversi e una risposta rapida ai guasti. Invece di utilizzare un protocollo di routing tradizionale come IS-IS, abbiamo deciso di introdurre Open/R nel Backbone Express come piano di controllo distribuito per la rete, dove avrebbe funzionato insieme a un controller centralizzato. Qui, Open / R fornisce connettività di base in una rete, reazioni rapide agli eventi di rete e un” bus di informazioni distribuite ” per esportare nuove informazioni al controller e agli agenti sui nodi di rete.,
Più di recente, abbiamo rivolto la nostra attenzione ai tessuti di Facebook data center — ancora una volta, un dominio molto diverso da Terragraph e la spina dorsale globale. In base alla progettazione, il tessuto è altamente uniforme e densamente ingranato, con molti percorsi possibili da tenere in considerazione e sfruttare. Per molti anni, Facebook ha operato questi tessuti su larga scala esclusivamente con Border Gateway Protocol (BGP). Mentre BGP porta i suoi punti di forza, in particolare per quanto riguarda l’applicazione delle politiche e la scala, abbiamo visto opportunità per migliorare e semplificare la progettazione avendo Open/R e BGP lavorare insieme., Open / R in questa parte della rete è in esecuzione su FBOSS e sul nostro hardware di rete OCP come Wedge 100.
Routing in un moderno ambiente hardware e software
Molti protocolli di routing tradizionali sono stati progettati in passato, con una forte attenzione all’ottimizzazione per sistemi embedded limitati dall’hardware come CPU e RAM. Inoltre, i protocolli sono stati progettati come soluzioni appositamente costruite per risolvere il particolare problema del routing per la connettività, piuttosto che come una piattaforma software flessibile per costruire nuove applicazioni nella rete.,
Oggi, le limitazioni di CPU e RAM non sono più un collo di bottiglia importante; allo stesso tempo, i requisiti applicativi e i casi d’uso che le reti devono soddisfare sono in rapida evoluzione. Questi cambiamenti hanno spostato l’attenzione degli ingegneri di rete dall’ottimizzazione dei protocolli alla creazione rapida di nuove applicazioni, il che può essere difficile da eseguire in aggiunta ai protocolli esistenti. La piattaforma Open / R consente la rapida innovazione necessaria per supportare i moderni progetti di rete riducendo al contempo la complessità operativa.
Abbiamo progettato Open / R per funzionare su più piattaforme hardware., Tutti i pezzi dipendenti dall’hardware e dal sistema sono stati astratti tramite interfacce RPC (ad esempio, programmazione del percorso e rilevamento di link/indirizzi). Questo ci ha permesso di eseguire la stessa implementazione Open/R su diversi tipi di dispositivi hardware, con diverse ASIC o anche diverse famiglie di CPU. Questa flessibilità fornisce un livello di omogeneità su dispositivi di rete eterogenei, rendendo la rete più facile da controllare e gestire.,
La progettazione per una rapida iterazione ha reso necessario includere procedure di test affidabili che forniscano sicurezza e chiarezza su ogni modifica del codice e nuova versione delle funzionalità. Ci sforziamo di avere una copertura del codice al 100% per convalidare ogni riga di logica del codice e rilevare gli errori il prima possibile. Tuttavia, i test unitari da soli non sono chiaramente sufficienti. Per ogni modifica del codice, testiamo il comportamento effettivo di Open/R in una grande topologia di rete emulata di migliaia di nodi, eseguendo test di regressione e controllando l’intero set di funzionalità per garantire la compatibilità con le versioni precedenti., Per fare ciò, abbiamo creato un framework per creare grandi topologie virtuali utilizzando contenitori leggeri come nodi su più macchine fisiche. Ci sarà anche open-sourcing questo quadro di emulazione insieme con la piattaforma Open / R.
Open/R design updates
Come abbiamo descritto in precedenza, Open / R sfrutta le basi di codice open source esistenti per due funzioni principali. Innanzitutto, la codifica e la decodifica delle strutture dati del piano di controllo vengono eseguite utilizzando la parsimonia. In secondo luogo, la logica per lo scambio di dati tra i nodi di rete viene implementata utilizzando ZeroMQ., Questa scelta progettuale ci ha aiutato a eliminare un sacco di sovraccarico tecnico e sviluppare Open/R rapidamente, concentrandosi su caratteristiche di livello superiore piuttosto che sull’impianto idraulico di basso livello. Inoltre, l’utilizzo delle tecnologie esistenti ci ha permesso di creare strumenti e librerie in linguaggi diversi dal C++ per interagire con Open/R. Un esempio è lo strumento Breeze CLI, che è scritto in Python e fornisce modi per interagire con i diversi moduli Open/R.
Dal nostro post iniziale che descrive l’architettura di Open/R, sono stati aggiunti diversi miglioramenti e nuove funzionalità., Un importante miglioramento architettonico è l’introduzione del modulo Platform. Astrae le parti dipendenti dal sistema ed espone le API per alimentare informazioni di basso livello ad altri moduli o per programmare l’hardware sottostante specifico. Per i nodi vanilla Linux con routing software, fornisce gestori predefiniti per indirizzare la programmazione FIB (forwarding Information Base) e le notifiche di modifica dello stato dell’interfaccia per Open/R., Per i sistemi che sono in grado di eseguire l’inoltro dei pacchetti direttamente nell’hardware (ad esempio, i nostri nodi Terragraph o i router Backbone Express), il modulo implementa gestori FIB che interagiscono con gli SDK hardware specifici. Ad esempio, nella nostra piattaforma Wedge 100, l’agente FBOSS implementa direttamente l’interfaccia di programmazione FIB di Open / R.
Il seguente diagramma riassume l’architettura di alto livello di Open/R:
- KV-STORE: funziona come un archivio chiave-valore replicato che consente comunicazioni distribuite e replica dello stato.,
- Spark: esegue il neighbor discovery sulle interfacce utilizzando il Multicast Link-Local e riporta le attività neighbor.
- LinkMonitor: monitora le interfacce di sistema tramite la piattaforma, gestisce le sessioni di Spark su quelle e pubblicizza i vicini scoperti in KV-STORE.
- PrefixManager: esegue la suballocazione automatica dei prefissi per la configurazione ad hoc.
- Decisione: calcola le informazioni di routing in base alle informazioni topologiche apprese tramite KV-STORE.
- FIB: funge da proxy per la programmazione di percorsi calcolati tramite piattaforma, mantiene lo stato di inoltro (percorsi calcolati).,
- Piattaforma: implementa la programmazione del percorso e la logica di scoperta dell’interfaccia per la piattaforma hardware di destinazione.
Emulazione e CLI
Open / R testing si basa sulla capacità di impostare rapidamente grandi reti virtuali senza la necessità di hardware reale. Per facilitare questo, abbiamo creato una libreria di emulazione generica-un wrapper leggero su systemd-nspawn
— e uno strumento di emulazione che avvia migliaia di contenitori Linux e forma una mesh di tunnel tra loro con un singolo comando., Per emulare la perdita di pacchetti, il ritardo o il jitter, lo strumento supporta la creazione di diversi ambienti di rete, come reti WAN o wireless, configurando i condizionatori di traffico. Ciò rende facile testare il comportamento di Open/R in diversi scenari e aiuta gli sviluppatori a far crescere gli sviluppatori nuovi per Open / R, fornendo un modo sicuro per sperimentare.
La piattaforma viene fornita con Breeze CLI, uno strumento di interfaccia a riga di comando per gli ingegneri di rete per interagire con la mesh delle istanze Open/R., Consente l’ispezione delle informazioni sullo stato in esecuzione, come adiacenze, nodi, prefissi, rotte, contatori e statistiche di convergenza più recenti, nonché l’esecuzione di operazioni di controllo come il drenaggio e lo svuotamento dei nodi, l’impostazione di metriche personalizzate sui collegamenti e l’annuncio e il ritiro dei prefissi., Ad esempio, una caratteristica utile è la possibilità di eseguire l’ispezione in tempo reale del database di stato replicato della piattaforma (il KV-STORE), che consente agli ingegneri di ispezionare qualsiasi attività nell’intera rete (nodi in arrivo, adiacenze che si abbattono o valori metrici che cambiano) semplicemente collegandosi a un singolo nodo.
Open/R e controllo centralizzato
L’aspetto distribuito è importante per l’affidabilità della rete. Tuttavia, le decisioni intelligenti vengono eseguite in modo ottimale quando vengono scaricate su un controller centralizzato, ad esempio per scopi di ingegneria del traffico., Per questo, Open / R fornisce API che consentono agli agenti remoti di apprendere lo stato del collegamento o di sottoscrivere gli aggiornamenti del database, ad esempio le notifiche di una modifica della capacità del collegamento. Ad esempio, questo potrebbe essere utilizzato per calcolare i percorsi con etichetta e programmarli sulla rete da una posizione centrale. Questa funzionalità consente la combinazione di gestione degli eventi “locale” (in rete) con logica centralizzata, come abbiamo implementato con successo nel nostro progetto Express Backbone.,
Riepilogo delle funzionalità
Mentre Open / R implementa molte funzionalità simili a quelle presenti nei protocolli tradizionali come IS-IS e OSPF, introduce anche alcune funzionalità uniche.
Ecco un breve riassunto:
- IPv6 in primo luogo, sfruttando IPv6 link-indirizzi locali per ottenere la configurazione zero-touch. Non è richiesta alcuna configurazione di rete speciale.
- Supporto per il routing IPv4 nativo quando necessario.
- Allocazione prefisso di rete ad hoc e configurazione IP per i nodi della rete da un prefisso aggregato più grande.,
- Un riavvio grazioso che consente aggiornamenti software in tempo reale senza interrompere l’inoltro del traffico.
- Supporto per il drenaggio e lo svuotamento di nodi e collegamenti.
- Metriche Dynamic link RTT calcolate e levigate dalle sonde attive.
- La possibilità di impostare valori metrici personalizzati, staticamente o dinamicamente.
- Convergenza di rete veloce con timer di back-off intelligenti per errori di collegamento o nodo.
- Controllo continuo dello stato di salute della rete tramite live reachability probing.
- Un’API per l’integrazione con controller centralizzati.,
- Una libreria Python per interagire con tutti i principali processi Open / R.
- La possibilità di estendere la piattaforma per diffondere ogni sorta di informazioni aggiuntive, e anche di introdurre miglioramenti o variazioni alla logica di calcolo percorso.
Conclusione
Mentre i protocolli di routing tradizionali sono stati strumentali al progresso della tecnologia negli ultimi decenni, ci stiamo avvicinando al punto in cui le reti devono evolversi ancora più velocemente., Open / R è una piattaforma aperta che rende facile testare e distribuire rapidamente nuove idee su larga scala, rendendo le nostre reti più efficienti, più veloci da implementare e più facili da gestire.
Incoraggiamo fortemente gli operatori di rete, i ricercatori, i fornitori, gli ingegneri e la comunità di networking globale a utilizzare Open / R per implementare le loro idee e costruire reti moderne che siano più aperte e possano evolvere più velocemente che mai.
E infine, un enorme ringraziamento va ai tanti team che hanno lavorato con il core development group al fine di ottenere Open / R a questo importante traguardo., Questo include il team Terragraph, il team Backbone Express, Data Center Network Engineering, il team FBOSS, il team Facebook Infrastructure Partnerships e i nostri partner esterni.