The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Facebook открыл реализацию платформы и протокола маршрутизац..."
Отправлено opennews, 16-Ноя-17 12:57 
Facebook открыл (https://code.facebook.com/posts/291641674683314/open-r-open-... наработки, связанные с платформой маршрутизации Open/R, которая изначально развивалась как распределённая система маршрутизации для динамически меняющихся беспроводных mesh-сетей, но затем была перенесена для других сетевых применений, включая опорную сеть Facebook Express Backbone.  Код эталонной реализации Open/R написан на языке C++ и распространяется (https://github.com/facebook/openr/) под лицензией MIT. Для определения RPC-вызовов используется язык описания интерфейсов Apache Thrift (http://thrift.apache.org/), а для обмена сообщениями между узлами - шина ZeroMQ (http://zeromq.org/).


Для управления доступен расширяемый CLI-интерфейс Breeze (https://github.com/facebook/openr/blob/master/openr/docs/Bre... написанный на языке Python. Для интеграции с централизованными системами управления трафиком предоставляется API, позволяющих внешним обработчикам получать сведения о состоянии линков или отслеживать обновления БД, например, получать информацию об изменении пропускной способности. Также доступен (https://github.com/facebook/openr/blob/master/openr/docs/Emu... эмулятор для тестирования при помощи виртуальных сетей на базе Open/R, поддерживающий симуляцию различных видов сбоев, трафика и характеристик работы участков сети (возникновения потери пакетов, перегрузки, задержек, jitter и т.п.).


Протокол Open/R подходит для создания автономных сетевых решений с построением оптимальных маршрутов на основе построения реплицируемой базы данных о состоянии каналов. Open/R может применяться как альтернатива OSPF и IS-IS, легко адаптируемая для различных применений. Распределённая система маршрутизации является одним из таких применений. Вместо реализации собственных механизмов согласования соединений, оформления кадров и других низкоуровневых элементов протокола, в Open/R применяется идея задействования языка Thrift для кодирования всех связанных с Open/R  сообщений и применения для их передачи уже проверенной временем библиотеки ZeroMQ, позволяющей использовать такие расширенные схемы, как издатель-подписчик (https://ru.wikipedia.org/wiki/%D0%98%D0%....

Open/R также изначально спроектирован как универсальная платформа, не привязанная к конкретным аппаратным системам и маршрутизаторам. Логика построения маршрутов и обмена информацией с другими узлами полностью отделена от средств установки маршрутов через специальную прослойку  (модуль Platform). В качестве основной платформы для  Open/R  применяется сетевое оборудование на базе открытой платформы FBOSS (https://www.opennet.ru/opennews/art.shtml?num=40038), такое как коммутаторы Wedge 100 (https://code.facebook.com/posts/145488969140934/open-network.... При этом Open/R  не зависит от ASIC и также может работать как поверх обычного сетевого стека Linux, так и с операционными системами Arista EOS и Juniper JunOS (QFX и PTX) через предоставляемый ими API на базе gRPC.


Элементы архитектуры Open/R:


-  KV-STORE (https://github.com/facebook/openr/blob/master/openr/docs/KvS... - отвечает за ведение распределённого хранилища в формате ключ/значение (in-memory DB на базе CRDT (https://en.wikipedia.org/wiki/Conflict-free_replicated_data_... синхронизацию данных и репликацию состояния между узлами;
-  Spark (https://github.com/facebook/openr/blob/master/openr/docs/Spa... - выполняет задачи обнаружение соседних узлов при помощи протокола Link-Local Multicast и обрабатывает сведения об активности соседей. Каждый Hello-пакет передаётся с указанием цифровой подписи узла, что позволяет проверить его достоверность;

-  LinkMonitor (https://github.com/facebook/openr/blob/master/openr/docs/Lin... - выполняет мониторинг сетевых интерфейсов, обращаясь через прослойку Platform, а также управляет сеансами модуля Spark  и транслирует выявленные соседние узлы в модуль
KV-STORE (поддерживает локальную базу соседних линков и управляет сеансами с соседними узлами);

-  PrefixManager (https://github.com/facebook/openr/blob/master/openr/docs/Pre... - решает задачи автоматического распределения сетевых префиксов;

-  Decision (https://github.com/facebook/openr/blob/master/openr/docs/Dec... - вычисляет оптимальные маршруты и строит локальную таблицу маршрутизации на основе информации о топологии сети и базы префиксов, полученных из хранилища KV-STORE;

-  FIB (https://github.com/facebook/openr/blob/master/openr/docs/Fib... - работает как прокси для программирования вычисленных маршрутов  в фактическом системном окружении, обращаясь к нему через модуль Platform. Также занимается поддержанием базы состояний вычисленных маршрутов (forwarding state);

-  Platform (https://github.com/facebook/openr/blob/master/openr/docs/Pla... - прослойка для низкоуровневого программирования маршрутизации и взаимодействия с сетевыми интерфейсами. Создаётся для каждой целевой аппаратной платформы и абстрагирует доступ к ней.

Основные возможности:

-  Первоочередная поддержка IPv6 и задействование возможностей IPv6 по  привязке локальных адресов для автоматической настройки без необходимости явного задания сетевой конфигурации;

-  Полноценная поддержка маршрутизации IPv4 при необходимости;
-  Распределение сетевых префиксов и настройка IP-адресов для узлов  самоорганизующихся динамических сетей (Ad hoc (https://ru.wikipedia.org/wiki/%D0%91%D0%...

-  Возможность перезапуска без остановки работы и без нарушения процессов перенаправления трафика, что позволяет организовать применение обновлений на лету;

-  Поддержка подсоединения и вывода из сети узлов и линков;
-  Динамическое вычисление метрик RTT (время приема-передачи) и их уточнение через активные проверки;

-  Возможность установки собственных значений метрик, их статическая привязка или динамическое вычисление;

-  Быстрая конвергенция (https://en.wikipedia.org/wiki/Network_convergence) сети с применением счётчиков отсрочки (backoff) для сбойных  линков или узлов;
-  Python-библиотека для взаимодействия со всеми основными процессами Open/R;
-  Возможность расширения платформы путём распространения любых видов дополнительной информации и изменения  логики вычисления маршрута;

-  Непрерывный контроль работоспособности сети через  отправку проверочных запросов;
-  Наличие API для интеграции с централизованными системами управления.


URL: https://code.facebook.com/posts/291641674683314/open-r-open-.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=47577

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру