Компания Hewlett-Packard анонсировала новую сетевую операционную систему OpenSwitch, построенную с использованием ядра Linux. HP позиционирует OpenSwitch как полностью открытый проект, развиваемый при участии сообщества и в соответствии с его потребностями. Кроме HP к разработке уже подключились компании
Broadcom, Intel, VMware, Accton, Arista и Qosmos.
Сборки новой ОС доступны для тестирования в системах виртуализации. В качестве первых поддерживаемых специализированных аппаратных устройств названы коммутаторы 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 | | || vrf table | +---------------------+ | | | interface table | | +-----------+-----------+ | daemon tableВ 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. Конфигурация может как храниться локально, так и загружаться с внешнего сервера.
ops-as5712# show running-config interface 1 Interface 1 shutdown speed 40000 autonegotiation on exit ops-as5712# configure terminal ops-as5712(config)# interface 1 ops-as5712(config-if)# description This is interface 1 ops-as5712(config-if)# ip address 172.16.32.2/24 ops-as5712(config-if)# ip address 172.16.50.2/24 secondary ops-as5712(config-if)# no shutdown ops-as5712(config-if)# exit ops-as5712(config)# ip route 172.16.32.0/24 10.10.10.1