Open / R: open routing pentru rețele moderne-inginerie Facebook

  • suntem open-sourcing Open/R, o platformă extensibilă de rutare a rețelei care permite inovația rapidă în funcțiile și aplicațiile de rețea.
  • Open / R este utilizat în rețelele Facebook backbone și data center.
  • platforma suportă diferite topologii de rețea (cum ar fi Wan-uri, țesături de centre de date și rețele wireless), precum și mai multe sisteme hardware și software de bază (FBOSS, Arista EOS, Juniper JunOS, Linux routing etc.).,
  • Open / R oferă o platformă pentru a disemina de stat în întreaga rețea și permite noi aplicații pentru a fi construit pe partea de sus a acesteia. De asemenea, oferă interfețe northbound pentru a permite integrarea cu controlere externe.
  • Open / R acceptă caracteristici cum ar fi alocarea automată a prefixului IP, valorile costurilor bazate pe RTT, repornirea grațioasă, convergența rapidă și operațiunile de scurgere/derulare.,
  • am lucrat cu parteneri și operatori externi pentru a sprijini și utiliza Open / R și invităm mai mulți operatori, ISP-uri, furnizori, integratori de sisteme și cercetători să utilizeze Open/R ca platformă pentru implementarea de noi idei și aplicații de rutare a rețelei.

open-sourcing Open / R

pe măsură ce mai mulți oameni vin online și consumă conținut mai bogat, complexitatea rețelelor care stau la baza fluxului de informații crește și ea., Deși protocoalele tradiționale de rutare au funcționat bine în ultimii 30 de ani, poate fi dificil și consumator de timp să împingeți rapid extensii sau protocoale complet noi în dispozitivele de rețea. Noile progrese în rutare necesită adesea extinderea cu atenție a unui protocol existent sau proiectarea de noi extensii suprapuse. Mai mult, majoritatea protocoalelor au fost inițial proiectate pe baza ipotezelor de mediu hardware și software constrânse de acum zeci de ani. Pentru a continua să oferiți experiențe bogate, în timp real și extrem de captivante utilizatorilor în rețele, este important să accelerați inovația în domeniul rutării.,astăzi, suntem open-sourcing Open/R, o platformă de rutare care permite inovarea rapidă în funcțiile de rețea. Open / R a fost inițial construit pentru rețeaua wireless backhaul Terragraph, dar am văzut rapid utilizarea sa potențială pentru coloana vertebrală a Facebook, unde oferă un control mai eficient și mai precis al unei rețele globale de fibre. Acum, chiar începem să o lansăm în țesăturile noastre din Centrul de date, rulând în interiorul FBOSS și pe hardware-ul nostru de rețea Open Compute Project, cum ar fi Wedge 100., Open / R este o singură platformă care acoperă o mare varietate de domenii și modele de rețea și căutăm să o aplicăm și în mai multe cazuri de utilizare.Facebook a adoptat o abordare centrată pe software pentru viitorul rețelei noastre, iar în ultimii ani am împărtășit cunoștințele noastre cu comunitatea rețelei. De exemplu, ne-am împărtășit cod de Facebook deschisă sistem de comutare (FBOSS); detalii despre rețeaua noastră de proiectare, management și instrumente de monitorizare, cum ar fi Robotron, FCR, și fbflow; desene și modele noastre inteligente sisteme de control al traficului, cum ar fi Expres Vertebrală și Marginea Tesatura., Acum, prin lansarea platformei Open/R moderne, ușor extensibile și bine testate, intenționăm să împingem în continuare starea de artă în comunitatea de rețea.în acest spirit, suntem încântați să anunțăm că am colaborat cu mai mulți parteneri externi pentru a aduce Open/R la producție, atât în interiorul rețelei Facebook, cât și în exterior. Open / R rulează acum pe platformele de comutare Arista, integrându-se cu Open source EOS SDK, precum și pe platformele de rutare Juniper QFX și PTX folosind API-uri bazate pe gRPC., WiLine Networks, un ISP fără fir, a lucrat cu Tieto pentru a implementa Open/R în producție în rețeaua sa comercială. Invităm alți furnizori, operatori, ISP-uri, integratori de sisteme și cercetători să utilizeze Open/R ca platformă pentru implementarea de noi idei de domenii de rutare pentru a face următoarea generație de rețele mai eficiente, mai inteligente și mai ușor de operat.am fost destul de fericiți să descoperim că Open/R este suficient de flexibil și extensibil pentru a gestiona multe tipuri de tehnologii și topologii de rețea., Totul a început cu Terragraph, care a prezentat o provocare protocoalelor tradiționale de rețea: mii de noduri wireless care comunică în aer liber cu vremea, frunzișul și alte obstacole care interferează constant cu conectivitatea. O plasă mare de strat 2 nu ar fi la fel de eficientă și rezistentă, în timp ce protocoalele tradiționale de strat 3, concepute mai ales pentru conectivitatea și accesibilitatea de bază, nu sunt potrivite pentru condiții exterioare foarte variabile și dinamice., „Controlați totul Central” părea o soluție ușoară de proiectare, dar nepractică, având în vedere lipsa managementului în afara benzii și dimensiunea mare a rețelei wireless. Astfel, am proiectat Open / R pentru a fi platforma de rețele distribuite pe partea de sus a rețelei Terragraph, care ar putea face față la scară largă și schimbări rapide, și să permită extensibilitate rapidă.

când am împărtășit inițial că dezvoltăm Open / R, mai mulți membri ai comunității de rețele au ajuns să afle mai multe, în special în spațiul wireless., Designerii de rețele fără fir se confruntă cu aceeași provocare: cum să difuzeze informații despre rețeaua de bază rapid și suficient de frecvent, având în vedere cât de repede se pot schimba rețelele fără fir. WiLine Rețele a început încercarea de a modifica protocoalele existente ca baza pentru platforma sa, dar când reprezentanți ai învățat despre Open/R, ei și Tieto angajat cu Facebook pentru a vedea dacă Deschide/R putea satisface nevoile lor. Designul special al rețelei lor a avut unele provocări noi și interesante pentru Open / R, dar împreună am reușit să extindem Open / R pentru a satisface noile cerințe., Open / R este acum parte a rețelei lor de producție. În mod similar, alți furnizori de rețele de undă milimetrică de generație următoare au văzut aplicabilitatea directă a Open/R și am început discuțiile cu membrii proiectului Telecom Infra (TIP).

pe plan intern, am văzut că Open / R ar putea aborda unele dintre provocările din rețeaua Facebook backbone. În timp ce coloana vertebrală este un domeniu complet diferit de o rețea wireless metro (coloana vertebrală are mii de mile de fibre care se întind pe continente, traversează oceanele și înconjoară globul), dintr-o perspectivă de rețea se confruntă cu probleme similare., Noua noastră coloană vertebrală expresă a necesitat controlul traficului și rutarea pe multe căi foarte diferite și răspunsul rapid la defecțiuni. În loc să folosim un protocol de rutare tradițional, cum ar fi IS-IS, am decis să introducem Open/R în coloana vertebrală expresă ca plan de control distribuit pentru rețea, unde ar funcționa împreună cu un controler centralizat. Aici, Open / R oferă conectivitate de bază într-o rețea, reacții rapide la evenimentele din rețea și un „autobuz de informații distribuite” pentru a exporta informații noi controlerului și agenților din nodurile rețelei.,cel mai recent, ne — am îndreptat atenția către țesăturile Centrului de date Facebook-din nou, un domeniu foarte diferit de Terragraph și coloana vertebrală globală. Prin design, materialul este foarte uniform și dens cu ochiuri, cu multe căi posibile pentru a ține cont și de pârghie. De mulți ani, Facebook operează aceste țesături la scară largă exclusiv cu protocolul Border Gateway (BGP). În timp ce BGP își aduce punctele forte, în special în ceea ce privește aplicarea politicilor și amploarea, am văzut oportunități de îmbunătățire și simplificare a proiectării prin colaborarea dintre Open/R și BGP., Open / R în această parte a rețelei rulează pe partea de sus a FBOSS și pe propriul hardware de rețea OCP, cum ar fi Wedge 100.rutarea într-un mediu hardware și software modern multe protocoale de rutare tradiționale au fost proiectate în trecut, cu un accent puternic pe optimizarea pentru sistemele încorporate limitate de hardware, cum ar fi procesoarele și memoria RAM. În plus, protocoalele au fost concepute ca soluții construite pentru a rezolva problema particulară a rutării pentru conectivitate, mai degrabă decât ca o platformă software flexibilă pentru a construi noi aplicații în rețea.,astăzi, limitările CPU și RAM nu mai sunt un blocaj major; în același timp, cerințele aplicației și cazurile de utilizare pe care rețelele trebuie să le satisfacă evoluează rapid. Aceste schimbări au mutat accentul inginerilor de rețea de la optimizarea protocoalelor la construirea rapidă a noilor aplicații, ceea ce poate fi dificil de făcut pe lângă protocoalele existente. Platforma Open / R permite inovarea rapidă necesară pentru a sprijini proiectele moderne de rețea, reducând în același timp complexitatea operațională.am proiectat Open/R pentru a rula pe mai multe platforme hardware., Toate piesele dependente de hardware și de sistem au fost abstractizate prin interfețe RPC (de exemplu, programarea rutelor și descoperirea legăturilor/adreselor). Acest lucru ne-a permis să rulăm aceeași implementare Open/R pe diferite tipuri de dispozitive hardware, cu ASIC-uri diferite sau chiar familii de procesoare diferite. Această flexibilitate oferă un strat de omogenitate pe lângă dispozitivele de rețea eterogene, făcând rețeaua mai ușor de controlat și de gestionat.,

proiectarea pentru iterație rapidă a făcut necesară includerea unor proceduri de testare robuste care să ofere încredere și claritate în jurul fiecărei schimbări de cod și a unei noi versiuni de funcții. Ne străduim să avem o acoperire de cod de 100% pentru a valida fiecare linie de logică a codului și pentru a detecta erorile cât mai curând posibil. Cu toate acestea, testele unitare nu sunt suficiente. Pentru fiecare modificare a codului, testăm comportamentul real al lui Open / R într-o topologie mare de rețea emulată de mii de noduri, rulând teste de regresie și verificând întregul set de caracteristici pentru a asigura compatibilitatea înapoi., Pentru a face acest lucru, am construit un cadru pentru a roti topologii virtuale mari folosind containere ușoare ca noduri pe mai multe mașini fizice. Vom fi, de asemenea, open-sourcing acest cadru de emulare, împreună cu platforma Open / R.așa cum am descris anterior, Open/R utilizează bazele de cod open source existente pentru două funcții de bază. În primul rând, codificarea și decodarea structurilor de date ale planului de control se face folosind cumpătare. În al doilea rând, logica schimbului de date între nodurile de rețea este implementată folosind ZeroMQ., Această alegere de design ne-a ajutat să eliminăm o mulțime de cheltuieli tehnice și să dezvoltăm rapid Open/R, concentrându-ne pe caracteristici de nivel superior, mai degrabă decât pe instalații sanitare de nivel scăzut. În plus, utilizarea tehnologiilor existente ne-a permis să creăm instrumente și biblioteci în alte limbi decât C++ pentru a interacționa cu Open/R. Un exemplu este instrumentul Breeze CLI, care este scris în Python și oferă modalități de a interacționa cu diferitele module Open/R.

de la postarea noastră inițială care descrie arhitectura Open / R, au fost adăugate mai multe îmbunătățiri și caracteristici noi., O îmbunătățire arhitecturală majoră este introducerea modulului de platformă. Abstractizează părțile dependente de sistem și expune API-urile pentru a alimenta informații de nivel scăzut altor module sau pentru a programa hardware-ul de bază specific. Pentru nodurile vanilla Linux cu rutare software, Acesta oferă handlers implicite pentru a aborda forwarding information base (FIB) de programare și notificări de schimbare de stat interfață pentru Open/R., Pentru sisteme care sunt capabile de a face pachete de expediere direct în hardware (de exemplu, Terragraph noduri sau Exprima Vertebrală routere), modul implementează FIB stivuitoare care interacționează cu hardware specific Sdk. De exemplu, în platforma noastră Wedge 100, agentul FBOSS implementează direct interfața de programare FIB Open/R.

următoarea diagramă rezumă arhitectura Open / R la nivel înalt:

  • kV-STORE: funcționează ca un magazin de valori cheie replicate care permite comunicațiile distribuite și replicarea statului.,
  • Spark: efectuează descoperirea vecinului pe interfețe folosind Multicast Local Link și raportează activitățile vecinilor.
  • LinkMonitor: monitorizează interfețele sistemului prin platformă, gestionează sesiunile Spark pe acestea și face reclamă vecinilor descoperiți în KV-STORE.
  • PrefixManager: efectuează subalocarea automată a prefixului pentru configurarea ad-hoc.
  • decizie: calculează informațiile de rutare pe baza informațiilor topologice învățate prin KV-STORE.
  • FIB: servește ca proxy pentru programarea rutelor calculate prin platformă, menține starea de redirecționare (rute calculate).,
  • platformă: implementează programarea rutelor și logica descoperirii interfeței pentru platforma hardware țintă.

emularea și CLI

testarea Open / R se bazează pe capacitatea de a configura rapid rețele virtuale mari fără a fi nevoie de hardware real. Pentru a facilita acest lucru, am construit o bibliotecă generică de emulare — un înveliș ușor peste systemd-nspawn — și un instrument de emulare care pornește mii de containere Linux și formează o plasă de tuneluri între ele cu o singură comandă., Pentru a emula pierderea pachetelor, întârzierea sau bruiajul, instrumentul acceptă crearea de medii de rețea diferite, cum ar fi rețelele WAN sau wireless, prin configurarea balsamurilor de trafic. Acest lucru face ușor pentru a testa comportamentul deschis / R în diferite scenarii, și ajută la sol până dezvoltatorii noi pentru a deschide/R, oferind o modalitate sigură de a experimenta.

Platforma vine cu Breeze CLI, un instrument de interfață de linie de comandă pentru inginerii de rețea pentru a interacționa cu Plasa de instanțe deschise/R., Acesta vă permite inspecția de stat care rulează informații, cum ar fi adiacente, noduri, prefixe, rute, contoare, și cele mai recente convergență statistici, precum și efectuarea operațiunilor de control, cum ar fi drenarea și undraining noduri, stabilind valori personalizate pe link-uri, și anunțându-și retragerea de prefixe., De exemplu, o caracteristică utilă este abilitatea de a efectua control în timp real al platformei este reprodus de date de stat (KV-STORE), care permite inginerilor să inspecteze orice activitate în întreaga rețea (noduri vine, adiacente rupere jos, sau valorile în schimbare) doar prin conectarea la un singur nod.

control deschis / R și centralizat

aspectul distribuit este important pentru fiabilitatea rețelei. Cu toate acestea, deciziile inteligente sunt realizate în mod optim atunci când sunt descărcate la un controler centralizat, cum ar fi în scopuri de Inginerie a traficului., Pentru aceasta, Open / R oferă API-uri care permit agenților de la distanță să învețe starea legăturii sau să se aboneze la actualizările bazei de date, cum ar fi notificările unei modificări a capacității legăturii. De exemplu, aceasta ar putea fi utilizată pentru a calcula căile comutate pe etichete și pentru a le programa în rețea dintr-o locație centrală. Această funcționalitate permite combinarea gestionării evenimentelor” locale ” (în rețea) cu logica centralizată, așa cum am implementat cu succes în proiectul nostru Express Backbone.,în timp ce Open / R implementează multe caracteristici similare cu cele găsite în protocoalele tradiționale, cum ar fi IS-IS și OSPF, introduce, de asemenea, câteva caracteristici unice proprii.

Iată un rezumat rapid:

  • IPv6 mai întâi, folosind adresele locale de legătură IPv6 pentru a obține configurația zero-touch. Nu este necesară o configurație specială a rețelei.
  • suport pentru rutare IPv4 nativ atunci când este necesar.
  • alocarea prefixului de rețea Ad-hoc și configurarea IP pentru nodurile din rețea dintr-un prefix agregat mai mare.,
  • o repornire grațioasă care permite actualizări software live fără a perturba redirecționarea traficului.
  • suport pentru drenarea și undraining pentru noduri și link-uri.
  • valori dinamice link RTT calculate și netezite din sonde active.
  • capacitatea de a seta valori metrice personalizate, static sau dinamic.
  • convergență rapidă a rețelei cu cronometre inteligente de back-off pentru eșecuri de link sau nod.
  • verificarea continuă a stării de sănătate a rețelei prin sondare a accesibilității în direct.
  • un API pentru integrarea cu controlere centralizate.,
  • o bibliotecă Python pentru a interacționa cu toate procesele principale deschise / R.
  • capacitatea de a extinde platforma pentru a disemina tot felul de informații suplimentare, și chiar să introducă îmbunătățiri sau variații la logica de calcul cale.

concluzie

deși protocoalele tradiționale de rutare au fost esențiale pentru progresul tehnologiei în ultimele decenii, ne apropiem de punctul în care rețelele trebuie să evolueze și mai repede., Open/R este o platformă deschisă care facilitează testarea și implementarea rapidă a ideilor noi la scară largă, făcând rețelele noastre mai eficiente, mai rapide de implementat și mai ușor de gestionat.încurajăm cu tărie operatorii de rețea, cercetătorii, vânzătorii, inginerii și comunitatea globală de rețele să folosească Open/R pentru a-și implementa ideile și a construi rețele moderne care sunt mai deschise și pot evolua mai repede ca niciodată.și în cele din urmă, o mulțumire uriașă se adresează numeroaselor Echipe care au lucrat cu grupul de dezvoltare de bază pentru a se deschide/R la această etapă importantă., Aceasta include Terragraph echipa, Express coloana Vertebrală a echipei, Rețea de centre de Date Inginerie, FBOSS echipa, Facebook Infrastructurii Parteneriate echipă, și partenerii noștri externi.

Share

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *