- jesteśmy open-sourcing Open/R, rozszerzalną platformą routingu sieci, która umożliwia szybkie wprowadzanie innowacji w funkcjach i aplikacjach sieciowych.
- Open / R jest używany w sieci szkieletowej i centrów danych Facebook.
- platforma obsługuje różne topologie sieci (takie jak Wan, tkaniny data center i siatki bezprzewodowe), a także wiele podstawowych systemów sprzętowych i programowych (FBOSS, Arista EOS, Juniper JunOS, Linux routing itp.).,
- Open/R zapewnia platformę do rozpowszechniania stanu w sieci i pozwala na budowanie na niej nowych aplikacji. Zapewnia również interfejsy umożliwiające integrację z zewnętrznymi sterownikami.
- Open / R obsługuje takie funkcje, jak automatyczna alokacja prefiksów IP, wskaźniki kosztów oparte na RTT, płynny restart, szybka Konwergencja i operacje drain/undrain.,
- współpracujemy z zewnętrznymi partnerami i operatorami, aby wspierać i używać Open/R, i zapraszamy więcej operatorów, dostawców usług internetowych, dostawców, integratorów systemów i badaczy do wykorzystania Open / R jako platformy do wdrażania nowych pomysłów i aplikacji do routingu sieci.
Open-sourcing Open/R
ponieważ coraz więcej osób korzysta z Internetu i korzysta z bogatszych treści, wzrasta również złożoność sieci leżących u podstaw przepływu informacji., Podczas gdy tradycyjne protokoły routingu działały dobrze w ciągu ostatnich 30 lat, szybkie wprowadzanie rozszerzeń lub całkowicie nowych protokołów do urządzeń sieciowych może być trudne i czasochłonne. Nowe postępy w routingu często wymagają starannego rozszerzenia istniejącego protokołu lub zaprojektowania nowych rozszerzeń nakładek. Ponadto większość protokołów została początkowo zaprojektowana w oparciu o ograniczone założenia sprzętowe i programowe sprzed dziesięcioleci. Aby nadal dostarczać rozbudowane, angażujące doświadczenia użytkowników w czasie rzeczywistym za pośrednictwem sieci, ważne jest przyspieszenie innowacji w domenie routingu.,
dziś jesteśmy open-sourcing Open/R, platformą routingu, która umożliwia szybkie wprowadzanie innowacji w funkcjach sieciowych. Open / R został pierwotnie zbudowany dla sieci bezprzewodowej terragraph backhaul, ale szybko dostrzegliśmy jego potencjalne wykorzystanie w szkielecie Facebook, gdzie zapewnia bardziej wydajną i precyzyjną kontrolę globalnej sieci światłowodowej. Teraz zaczynamy nawet wprowadzać go do naszych tkanin centrów danych, działających wewnątrz FBOSS i na naszym otwartym sprzęcie sieciowym do projektów obliczeniowych, takim jak Wedge 100., Open / R to pojedyncza platforma, która obejmuje szeroką gamę domen i projektów sieciowych, i chcemy ją zastosować w jeszcze większej liczbie przypadków użycia.
Facebook przyjął podejście zorientowane na oprogramowanie do przyszłości naszej sieci, a w ciągu ostatnich kilku lat dzieliliśmy się naszymi doświadczeniami ze społecznością sieciową. Na przykład udostępniliśmy kod z otwartego systemu przełączania Facebook (Fboss); szczegóły dotyczące naszych narzędzi do projektowania sieci, zarządzania i monitorowania, takich jak Robotron, FCR i fbflow; oraz projekty naszych inteligentnych systemów sterowania ruchem, takich jak Express Backbone i Edge Fabric., Teraz, wypuszczając nowoczesną, łatwo rozszerzalną i dobrze przetestowaną platformę Open/R, zamierzamy jeszcze bardziej popchnąć najnowocześniejsze rozwiązania w społeczności sieciowej.
w tym duchu z radością ogłaszamy, że współpracujemy z kilkoma zewnętrznymi partnerami, aby wprowadzić Open/R do produkcji, zarówno wewnątrz sieci Facebook, jak i na zewnątrz. Open / R działa teraz na platformach przełączających Arista, integrując się z open source EOS SDK, a także na platformach routingu Juniper QFX i PTX przy użyciu interfejsów API opartych na gRPC., WiLine Networks, bezprzewodowy ISP, współpracował z Tieto wdrożyć Open / R do produkcji w swojej sieci komercyjnej. Zachęcamy innych dostawców, operatorów, dostawców usług internetowych, integratorów systemów i badaczy do wykorzystania Open/R jako platformy do wdrażania nowych pomysłów dotyczących domen routingu, aby nowa generacja sieci była bardziej wydajna, inteligentniejsza i łatwiejsza w obsłudze.
zastosowanie w różnych domenach sieci
z przyjemnością odkryliśmy, że Open / R jest wystarczająco elastyczny i rozszerzalny, aby obsługiwać wiele rodzajów technologii sieciowych i topologii., Wszystko zaczęło się od Terragraph, który stanowił wyzwanie dla tradycyjnych protokołów sieciowych: tysiące węzłów bezprzewodowych komunikujących się na zewnątrz z pogodą, liśćmi i innymi przeszkodami stale zakłócającymi łączność. Duża siatka warstwy 2 nie byłaby tak wydajna i odporna, podczas gdy tradycyjne protokoły warstwy 3, zaprojektowane głównie do podstawowej łączności i osiągalności, słabo nadają się do bardzo zmiennych i dynamicznych warunków zewnętrznych., „Kontroluj wszystko centralnie” wydawało się łatwym rozwiązaniem projektowym, ale niepraktycznym ze względu na brak zarządzania poza pasmem i duży rozmiar siatki bezprzewodowej. W związku z tym zaprojektowaliśmy Open/R jako rozproszoną platformę sieciową na szczycie sieci Terragraph, która poradzi sobie z jej dużą skalą i szybkimi zmianami oraz pozwoli na szybką rozszerzalność.
Kiedy początkowo informowaliśmy, że rozwijamy Open/R, kilku członków społeczności sieciowej skontaktowało się, aby dowiedzieć się więcej, zwłaszcza w przestrzeni bezprzewodowej., Projektanci sieci bezprzewodowych stoją przed tym samym wyzwaniem: jak szybko i wystarczająco często rozpowszechniać informacje o sieci bazowej, biorąc pod uwagę, jak szybko Sieci bezprzewodowe mogą się zmieniać. Wiline Networks zaczął próbować zmodyfikować istniejące protokoły jako podstawę swojej platformy, ale kiedy przedstawiciele dowiedzieli się o Open/R, oni i Tieto zaangażowali się w Facebook, aby sprawdzić, czy Open/r może zaspokoić ich potrzeby. Ich konkretny projekt sieci miał kilka nowych, interesujących wyzwań dla Open/R, ale razem byliśmy w stanie rozszerzyć Open / R, aby dostosować się do nowych wymagań., Open / R jest obecnie częścią ich sieci produkcyjnej. W podobnym duchu inni dostawcy sieci nowej generacji o fali milimetrowej widzieli bezpośrednie zastosowanie Open/ R i rozpoczęliśmy rozmowy z członkami projektu Telecom Infra (TIP).
wewnętrznie zauważyliśmy, że Open / R może sprostać niektórym wyzwaniom w sieci szkieletowej Facebook. Chociaż sieć szkieletowa jest zupełnie inną domeną niż sieć bezprzewodowa metra (sieć szkieletowa ma tysiące kilometrów światłowodów, które obejmują kontynenty, oceany i otaczają świat), z perspektywy sieciowej napotyka podobne problemy., Nasz nowy szkielet Express wymagał kontroli ruchu i wyznaczania tras na wielu różnych ścieżkach oraz szybkiej reakcji na awarie. Zamiast używać tradycyjnego protokołu routingu, takiego jak IS-IS, zdecydowaliśmy się wprowadzić Open / R do szkieletu Express jako rozproszoną płaszczyznę sterowania dla sieci, gdzie będzie współpracować ze scentralizowanym kontrolerem. W tym przypadku Open / r zapewnia podstawową łączność w sieci, szybkie reakcje na zdarzenia sieciowe oraz „rozproszoną magistralę informacyjną” do eksportowania nowych informacji do kontrolera i agentów w węzłach sieciowych.,
Ostatnio zwróciliśmy naszą uwagę na Facebook data center — znowu domenę zupełnie inną niż Terragraph i globalny kręgosłup. Dzięki projektowi tkanina jest bardzo jednolita i gęsto siatkowa, z wieloma możliwymi ścieżkami do uwzględnienia i dźwigni. Od wielu lat Facebook obsługuje te wielkoskalowe tkaniny wyłącznie za pomocą protokołu Border Gateway Protocol (BGP). Podczas gdy BGP przynosi swoje mocne strony, zwłaszcza w odniesieniu do egzekwowania i skali polityki, widzieliśmy możliwości ulepszenia i uproszczenia projektu dzięki współpracy Open / R i BGP., Open / R w tej części sieci działa na fboss i na własnym sprzęcie sieciowym OCP, takim jak Wedge 100.
Routing w nowoczesnym środowisku sprzętowym i programowym
wiele tradycyjnych protokołów routingu zostało zaprojektowanych w przeszłości, z silnym naciskiem na optymalizację dla systemów wbudowanych o ograniczonym dostępie sprzętowym, takich jak procesory i pamięć RAM. Ponadto protokoły zostały zaprojektowane jako specjalnie zaprojektowane rozwiązania do rozwiązywania konkretnego problemu routingu łączności, a nie jako elastyczna platforma oprogramowania do tworzenia nowych aplikacji w sieci.,
obecnie ograniczenia procesora i pamięci RAM nie są już głównym wąskim gardłem; jednocześnie wymagania aplikacji i przypadki użycia, które muszą spełniać sieci, szybko ewoluują. Zmiany te przeniosły uwagę inżynierów sieci z optymalizacji protokołów na szybkie tworzenie nowych aplikacji, co może być trudne do zrobienia w oparciu o istniejące protokoły. Platforma Open / R umożliwia szybkie wprowadzanie innowacji niezbędnych do obsługi nowoczesnych projektów sieci przy jednoczesnym zmniejszeniu złożoności operacyjnej.
zaprojektowaliśmy Open / R do pracy na wielu platformach sprzętowych., Wszystkie elementy zależne od sprzętu i systemu zostały wyodrębnione poprzez interfejsy RPC (na przykład programowanie trasy i wykrywanie linków/adresów). Pozwoliło nam to uruchomić tę samą implementację Open / R na różnych rodzajach urządzeń sprzętowych, z różnymi układami ASIC, a nawet z różnymi rodzinami procesorów. Ta elastyczność zapewnia warstwę jednorodności na heterogenicznych urządzeniach sieciowych, dzięki czemu sieć jest łatwiejsza do kontrolowania i zarządzania.,
Projektowanie dla szybkiej iteracji wymagało uwzględnienia solidnych procedur testowania, które zapewniają pewność i przejrzystość przy każdej zmianie kodu i wydaniu nowych funkcji. Staramy się mieć 100% pokrycie kodu, aby zweryfikować każdą linię logiki kodu i wychwycić błędy tak wcześnie, jak to możliwe. Same testy jednostkowe nie są jednak wystarczające. Dla każdej zmiany w kodzie testujemy rzeczywiste zachowanie Open / R w dużej emulowanej topologii sieci złożonej z tysięcy węzłów, uruchamiamy testy regresyjne i sprawdzamy cały zestaw funkcji w celu zapewnienia kompatybilności wstecznej., Aby to zrobić, zbudowaliśmy framework do tworzenia dużych wirtualnych topologii przy użyciu lekkich kontenerów jako węzłów na wielu fizycznych maszynach. Będziemy również open-sourcing ten framework emulacji wraz z platformą Open / R.
aktualizacje projektu Open/R
jak już wcześniej opisaliśmy, Open / R wykorzystuje istniejące bazy kodu open source dla dwóch podstawowych funkcji. Po pierwsze, kodowanie i dekodowanie struktur danych płaszczyzny sterowania odbywa się za pomocą Thrift. Po drugie, logika wymiany danych między węzłami sieci jest zaimplementowana przy użyciu ZeroMQ., Ten wybór projektu pomógł nam wyeliminować wiele kosztów technicznych i szybko opracować Open / R, koncentrując się na funkcjach wyższego poziomu, a nie na instalacjach niskopoziomowych. Ponadto, wykorzystanie istniejących technologii pozwoliło nam stworzyć narzędzia i biblioteki w językach innych niż C++ do interakcji z Open/R. przykładem jest narzędzie Breeze CLI, które jest napisane w Pythonie i zapewnia sposoby interakcji z różnymi modułami Open / R.
od czasu naszego pierwszego postu opisującego architekturę Open/R dodano kilka ulepszeń i nowych funkcji., Jednym z głównych usprawnień architektonicznych jest wprowadzenie modułu Platformy. Wyodrębnia części zależne od systemu i udostępnia interfejsy API, aby dostarczać informacje niskiego poziomu do innych modułów lub zaprogramować konkretny sprzęt bazowy. Dla węzłów vanilla Linux z routingiem programowym, zapewnia domyślne procedury obsługi adresowania programowania forwarding information base (FIB) i powiadomień o zmianie stanu interfejsu dla Open / R., W przypadku systemów, które są zdolne do przesyłania pakietów bezpośrednio w sprzęcie (na przykład nasze węzły Terragraph lub Routery szkieletowe Express), moduł implementuje procedury obsługi FIB, które współdziałają z określonymi sprzętowymi zestawami SDK. Na przykład w naszej platformie Wedge 100 agent fboss bezpośrednio implementuje interfejs programowania Open/R FIB.
poniższy diagram podsumowuje architekturę wysokiego poziomu Open/R:
- KV-STORE: działa jako replikowany magazyn wartości klucza, który umożliwia rozproszoną komunikację i replikację stanu.,
- Spark: wykonuje wyszukiwanie sąsiadów na interfejsach przy użyciu lokalnego multicastu Link i raportuje działania sąsiadów.
- LinkMonitor: monitoruje interfejsy systemowe za pośrednictwem Platformy, zarządza sesjami Spark i reklamuje wykrytych sąsiadów w KV-STORE.
- PrefixManager: wykonuje automatyczną podalokację prefiksów dla konfiguracji ad hoc.
- Decision: oblicza informacje o routingu na podstawie informacji topologicznych wyuczonych przez KV-STORE.
- FIB: służy jako proxy do programowania tras obliczeniowych za pośrednictwem Platformy, utrzymuje stan przekazywania (trasy obliczeniowe).,
- Platform: implementuje programowanie tras i logikę wykrywania interfejsów dla docelowej platformy sprzętowej.
Emulacja i CLI
testowanie Open / R polega na możliwości szybkiego konfigurowania dużych sieci wirtualnych bez potrzeby korzystania z rzeczywistego sprzętu. Aby to ułatwić, zbudowaliśmy generyczną bibliotekę emulacji-lekki wrapper na systemd-nspawn
div — – oraz narzędzie do emulacji, które uruchamia tysiące kontenerów Linuksa i tworzy siatkę tuneli między nimi za pomocą jednego polecenia., Aby emulować utratę pakietów, opóźnienie lub jitter, narzędzie obsługuje tworzenie różnych środowisk sieciowych, takich jak sieci WAN lub sieci bezprzewodowe, poprzez konfigurowanie kondycjonerów ruchu. Ułatwia to testowanie zachowania Open / R w różnych scenariuszach i pomaga przyspieszyć rozwój nowych programistów Open / R, zapewniając bezpieczny sposób eksperymentowania.
platforma jest wyposażona w Breeze CLI, narzędzie interfejsu wiersza poleceń dla inżynierów sieciowych do interakcji z siatką instancji Open/R., Umożliwia kontrolę bieżących informacji o stanie, takich jak adjacencies, węzły, prefiksy, trasy, liczniki i najnowsze statystyki konwergencji, a także wykonywanie operacji kontrolnych, takich jak opróżnianie i cofanie węzłów, ustawianie niestandardowych wskaźników na łączach oraz ogłaszanie i wycofywanie prefiksów., Na przykład przydatną funkcją jest możliwość przeprowadzania inspekcji w czasie rzeczywistym replikowanej bazy danych stanu platformy( KV-STORE), która pozwala inżynierom kontrolować dowolną aktywność w całej sieci (pojawiające się węzły, rozbijanie adjacencies lub zmiana wartości metrycznych) po prostu przez połączenie z pojedynczym węzłem.
Otwórz/R i sterowanie scentralizowane
aspekt rozproszony jest ważny dla niezawodności sieci. Mimo to inteligentne decyzje są optymalnie podejmowane, gdy są przenoszone do scentralizowanego kontrolera, na przykład do celów inżynierii ruchu., W tym celu Open / R udostępnia interfejsy API umożliwiające zdalnym agentom poznanie stanu łącza lub subskrybowanie aktualizacji bazy danych, takich jak powiadomienia o zmianie pojemności łącza. Na przykład można go użyć do obliczania ścieżek przełączanych etykiet i programowania ich w sieci z centralnej lokalizacji. Ta funkcjonalność pozwala na połączenie obsługi zdarzeń” lokalnych ” (w sieci) ze scentralizowaną logiką, co z powodzeniem wdrożyliśmy w naszym projekcie Express Backbone.,
podsumowanie funkcji
podczas gdy Open / R implementuje wiele funkcji podobnych do tych występujących w tradycyjnych protokołach, takich jak IS-IS i OSPF, wprowadza również kilka unikalnych funkcji własnych.
oto krótkie podsumowanie:
- najpierw IPv6, wykorzystując adresy lokalne łącza IPv6, aby uzyskać konfigurację zero-touch. Nie jest wymagana specjalna konfiguracja sieci.
- Obsługa natywnego routingu IPv4 w razie potrzeby.
- ad hoc przydzielanie prefiksów sieciowych i konfiguracja IP dla węzłów w sieci z większego zagregowanego prefiksu.,
- pełen wdzięku restart, który umożliwia aktualizacje oprogramowania na żywo bez zakłócania przekazywania ruchu.
- Obsługa opróżniania i opróżniania węzłów i linków.
- Dynamic link RTT metryki obliczane i wygładzane z aktywnych sond.
- możliwość ustawiania niestandardowych wartości metrycznych, statycznie lub dynamicznie.
- szybka konwergencja sieci z inteligentnymi timerami cofania w przypadku awarii łącza lub węzła.
- ciągłe sprawdzanie stanu sieci za pomocą live reachability sonding.
- API do integracji ze sterownikami scentralizowanymi.,
- Biblioteka Pythona do interakcji ze wszystkimi głównymi procesami Open/R.
- możliwość rozszerzenia platformy w celu rozpowszechniania wszelkiego rodzaju dodatkowych informacji, a nawet wprowadzenia ulepszeń lub zmian do logiki obliczeń ścieżki.
podsumowanie
podczas gdy tradycyjne protokoły routingu odegrały zasadniczą rolę w rozwoju technologii w ostatnich dziesięcioleciach, zbliżamy się do punktu, w którym sieci muszą ewoluować jeszcze szybciej., Open / R to otwarta platforma, która ułatwia szybkie testowanie i wdrażanie nowych pomysłów na dużą skalę, dzięki czemu nasze sieci są bardziej wydajne, szybsze we wdrażaniu i łatwiejsze w zarządzaniu.
gorąco zachęcamy operatorów sieci, badaczy, dostawców, inżynierów i całą społeczność sieciową do korzystania z Open / R do wdrażania swoich pomysłów i budowania nowoczesnych sieci, które są bardziej otwarte i mogą ewoluować szybciej niż kiedykolwiek.
i wreszcie, ogromne podziękowania dla wielu zespołów, które pracowały z core development group, aby otworzyć się na ten ważny kamień milowy., Obejmuje to zespół Terragraph, zespół Express Backbone, inżynierię sieci centrów danych, zespół FBOSS, zespół Facebook Infrastructure partnership oraz naszych partnerów zewnętrznych.