Компания Hewlett-Packard анонсировала новую сетевую операционную систему OpenSwitch, построенную с использованием ядра Linux. HP позиционирует OpenSwitch как полностью открытый проект, развиваемый при участии сообщества и в соответствии с его потребностями. Кроме HP к разработке уже подключились компании Broadcom, Intel, VMware, Accton, Arista и Qosmos.


OpenSwitch

Сборки новой ОС доступны для тестирования в системах виртуализации. В качестве первых поддерживаемых специализированных аппаратных устройств названы коммутаторы HP Altoline и платформы, развиваемые проектом Open Compute Project, выполненные на базе ASIC Broadcom Trident II. Портирование для других ASIC выполняется через разработку соответствующих плагинов.


Код проекта размещён в Git-репозитории и включает в себя многие типовые открытые компоненты, такие как ядро Linux, Puppet, OpenVswitch, ISC DHCP, lldpd и Quagga. Оригинальные разработки распространяются под лицензией Apache 2.0. Взаимодействие всех компонентов платформы организовано через обращение к централизованной системной БД (OVSDB), хранящей настройки, статистику и параметры работы всех имеющихся сервисов. Напрямую системные модули не взаимодействуют между собой, только через обращение к системной БД.


+-----------------------+
| image.manifest file | +---------------------+
+-----------------------+ +--------------------------+ | |
^ | OpenSwitch database | | hardware daemons |
| | |<----+ |
+-----------+-----------+ | system table | +---------------------+
| | | base subsystem table |
| sysd +---->| vrf table | +---------------------+
| | | interface table | | |
+-----------+-----------+ | daemon table |<----+ protocol daemons |
| | bridge table | | |
v | port table | +---------------------+
+-----------------------+ +--------------------------+
| hw description files |
+-----------------------+

В OpenSwitch применяется собственная система инициализации ops-sysd, которая обеспечивает запуск компонентов системы и отслеживание их работы с учётом файлов описания оборудования и базы данных конфигурации. Для сохранения/восстановления конфигурации применяется демон ops-cfgd. Настройку сетевых интерфейсов обеспечивает демон ops-intfd, управление VLAN - ops-vland, агрегацию линков - ops-lacpd. Протоколы маршрутизации реализованы через компоненты Quagga (ospfd, bgpd). Дополнительная функциональность может наращиваться через модули.


+------------------------------------------------------------------------+
| | |
| +------------------------+ +---------------+ +-----------v----------+ |
| | L2/L3 protocol daemons | |System daemons | |Management/monitoring | |
| | bgpd, lldpd, lacpd,... | |sysd, intfd,...| |CLI, Rest, Ansible,...| |
| +--------^--------^------+ +--------^------+ +-----------^----------+ |
| | | | | |
| | +------v-----------------v--------------------v----------+ |
| | | | | RFC 7047
| | | System state database - OVSDB-Server | | protocol
| | | <------------->
| | +----------------------------^------------------------^--+ |
| | | | |
| | Hardware support | ops-switchd | |
| | daemons | +------------------v--+ | OpenFlow
| | +-----------------v---+ | SDK independent <------------->
| | | ops-fand | | layer | |
| | | - - - - - - - - - - | +---------------------+ |
| | | ops-tempd | | SDK specific | | sFlow
| | | - - - - - - - - - - | | plugin +------------->
| | | ops-powerd | +---------------------+ |
| | | ... | | SDK | |
| | +----------^----------+ +----------^----------+ |
| Kernel | | | |
| +-------------------------------------------------------------------+ |
| | +------v-----------+ +---------v---------+ +----------v--------+ | |
| | | | | I2C/other drivers | | | | |
| | |Virtual interfaces| +-------------------+ | SDK driver | | |
| | | <------------------------> | | |
| | +------------------+ +-------------------+ | |
| +-------------------------------------------------------------------+ |
| |
+------------------------------------------------------------------------+

Управление может производиться при помощи похожего на Cisco IOS интерфейса командной строки (ops-cli), основанного на наработках проекта Quagga, через web-интерфейс (ops-webui), а также при помощи REST API, Puppet, Chef и Ansible. Конфигурация может как храниться локально, так и загружаться с внешнего сервера.


Источник opennet.ru