FBOSS — это программный стек Facebook для контроля и управления сетевыми коммутаторами.
FBOSS состоит из ряда пользовательских приложений, библиотек и утилит.
Первоначальная версия FBOSS с открытым исходным кодом состоит в основном из демона агента, но мы также работаем над выпуском дополнительных частей и функций.
Одной из центральных частей FBOSS является демон агента, который работает на каждом коммутаторе и управляет аппаратным ASIC пересылки. Демон агента отправляет информацию о пересылке на оборудование и реализует некоторые протоколы плоскости управления, такие как ARP и NDP. Агент предоставляет экономичные API для управления маршрутами, позволяющие внешним процессам управления маршрутизацией запрограммировать информацию о маршрутизации в аппаратные таблицы пересылки.
Код агента можно найти в fboss/agent.
Агенту требуется файл конфигурации JSON, чтобы указать его порт и конфигурацию VLAN. Некоторые примеры файлов конфигурации можно найти в папке fboss/agent/configs. Эти файлы на самом деле не предназначены для использования человеком — в Facebook есть инструменты, которые генерируют эти файлы для нас.
Агент FBOSS управляет таблицами пересылки в аппаратном ASIC, но его необходимо информировать о текущих маршрутах через экономичные API.
Наша первоначальная версия с открытым исходным кодом еще не содержит демона протокола маршрутизации, способного взаимодействовать с агентом. Демон протокола маршрутизации, который мы используем в Facebook, довольно специфичен для нашей среды и, вероятно, не будет так полезен для сообщества открытого исходного кода. Для более широкого использования за пределами Facebook должна быть возможность модифицировать существующие инструменты маршрутизации с открытым исходным кодом для взаимодействия с агентом FBOSS, но мы еще не реализовали это. Тем временем мы включили небольшой пример скрипта Python в fboss/agent/tools, который может вручную добавлять и удалять маршруты.
Очевидно, что для взаимодействия с агентом FBOSS, предоставления отчетов о его состоянии, создания файлов конфигурации и устранения проблем необходимы дополнительные инструменты и утилиты.
На данный момент у нас не так много наших инструментов, готовых к выпуску с открытым исходным кодом, но мы надеемся сделать больше их доступными в ближайшие недели. Тем временем компилятор Thrift может автоматически генерировать удаленный скрипт Python, позволяющий вручную вызывать различные интерфейсы Thrift агента.
Инструкции по сборке FBOSS см. в документе BUILD.md.
FBOSS был разработан специально для нужд сетей центров обработки данных Facebook, но мы надеемся, что он может быть полезен и более широкому сообществу. Однако обратите внимание, что эта первоначальная версия FBOSS, вероятно, потребует модификации и дополнительной разработки для поддержки других конфигураций сети, помимо функций, используемых Facebook. Пока он не станет более зрелым, FBOSS, скорее всего, будет представлять интерес в первую очередь для разработчиков сетевого программного обеспечения, а не для сетевых администраторов, которые надеются использовать его в качестве готового решения.
Мы с нетерпением ждем обратной связи от сообщества и надеемся, что FBOSS может послужить отправной точкой для других пользователей, желающих программировать сетевые коммутаторы.
В Facebook продолжается разработка FBOSS, и мы планируем продолжать выпускать больше компонентов, дополнительных функций и улучшать существующие инструменты.
См. ЛИЦЕНЗИЯ.