Huawei Agile Controller (AC) представляет собой базовый компонент для программно-определяемых сетей (Software-defined networking, SDN). Он может применяться для четырех основных бизнес-сценариев: для сетей центров обработки данных, а также кампусных, WAN и IoT-сетей. Задача AC состоит в обеспечении автоматической трансляции данных из приложений на физическую сеть, полного контроля сетевых ресурсов, а также визуализаций функций эксплуатации и технической поддержки. В основе AC лежат открытые технологии, что дает широчайший простор для совместимости с продуктами сторонних разработчиков и создания на их основе комплексных решений.
Для взаимодействия с окружением Agile Controller использует несколько интерфейсов: NBI (NorthBound Interface или Северный интерфейс) и SBI (SouthBound Interface или Южный интерфейс).
Рассмотрим основные моменты и принципы интеграции AgileController со сторонними системами и оборудованием, на примере сценария развертывания концепции SDN в центре обработки данных.
NBI-интерфейс позволяет интегрировать Agile Controller с наиболее распространенными облачными платформами, например разработанными на базе OpenStack. SBI-интерфейс позволяет Agile Controller управлять множеством сетевых элементов, таких как vSwitch, физические устройства (коммутаторы, маршрутизаторы, МСЭ и т.д.). Возможности Agile Controller также позволяют осуществлять преобразование данных от сервисных API NBI-интерфейса в конкретную конфигурацию для автоматизации процессов в сети через SBI-интерфейс. Даже без участия облачной платформы, AC способен самостоятельно интегрироваться с системами управления вычислениями, такими как VMWare vCenter и Microsoft SystemCenter, для обеспечения совместного сетевого и вычислительного взаимодействия.
Agile Controller поддерживает следующие периферийные интерфейсы:
Специфические протоколы и соответствующие им интерфейсные функции:
NBI-интерфейс для интеграции с OpenStack
OpenStack Networking представляет собой отдельный сервис, который часто используется для развертывания нескольких процессов на нескольких узлах. Эти процессы взаимодействуют как друг с другом, так и с прочими сервисами OpenStack. Основной процесс сервиса OpenStack Networking – neutron-сервер, процесс на языке Python, который активирует API OpenStack Networking и передает запросы клиентов системе плагинов для дополнительной обработки.
OpenStack Networking, как компонент модуля Neutron, взаимодейсвует с контроллером SDN через API Neutron. Компонент Neutron может автоматически получать информацию о различных событиях, связанных с виртуальными машинами (создание, удаление, миграция), через компонент NOVA, который отвечает за управление виртуальными компонентами. Контроллер SDN получает оповещение об изменениях статуса виртуальных машин через агента или плагин, встроенный в компонент Neutron. Сетевая конфигурация физической сети может быть создана полностью автоматически через Agile Controller.
Интерфейс между AC и OpenStack реализован следующим образом:
Сервис neutron-server получает через собственный NBI-интерфейс запрос, затем отправляет запрашиваемые сервисом параметры на AC по протоколу RESTCONF. Таким образом neutron-server может через AC управлять коммутаторами vSwitch, физическими коммутаторами, а также VAS уровней L4-L7.
- Интеграция Layer 2 между AC и OpenStack:
OpenStack интегрируется с Agile Controller через драйвер ML2, что позволяет получать различную информацию о сети, включая подсети и номера портов, а также осуществлять подготовку конфигурации виртуальной сети.
Тип поддерживаемой виртуализации Layer2 – VXLAN (Virtual Extensible LAN). Технология использует 24-битные индентификаторы VN ID виртуальных сетевых сущностей, что позволяет обойти ограничение в 4096 VLAN, действующее в традиционных сетях. Элемент сети VTEP (VXLAN Tunnel End Point) обеспечивает инкапсуляцию и декапсуляцию VXLAN, он может быть сконфигурирован на коммутаторе TOR или vSwitch. Для решения VXLAN на аппаратной базе узел VTEP располагается на TOR, а для решения VXLAN на программной базе VTEP располагается на vSwitch.
Для сети VXLAN на аппаратной базе поддержка иерархической привязки портов должна осуществляться между AC и OpenStack. OpenStack назначает глобальный VN ID, а AC назначает VLAN на uplink-порт сервера, задает связь между назначенной локальной VLAN и глобальным VN ID на OpenStack, а затем задает сопоставление локальной VLAN и глобального VN ID на узле VTEP.
Для виртуальной сети Layer2 также доступна поддержка групп безопасности и функции обеспечения качества обслуживания (QoS). Группы безопасности и QoS используются для проверки безопасности в направлении восток-запад, а также для контроля полосы пропускания на портах доступа виртуальных машин, соответственно.
- Интеграция Layer3 между AC и OpenStack:
Agile Controller поддерживает интеграцию с OpenStack для создания устройств Layer3 — vRouter. vRouter используется для обеспечения связности Layer3 между виртуальными машинами одного и того же клиента. Для элемента vRouter может быть использована как модель централизованного шлюза, так и распределенного шлюза или распределенного виртуального маршрутизатора (Distributed Virtual Router, DVR). Если используется модель распределенного шлюза, то функции маршрутизатора могут размещаться на vSwitch или TOR. Первый из них представляет собой решение DVR на базе программной платформы, а последний — решение DVR на базе аппаратной платформы. Если используется модель централизованного шлюза, то функционал vRouter, как правило, размещается на базовом коммутаторе/AGG. На физическом коммутаторе каждый экземпляр vRouter сопоставляется с экземпляром виртуального маршрутизатора (VRF), имеющим собственную выделенную таблицу маршрутизации и коммутации.
- Интеграция с VAS
Agile Controller взаимодействует с облачной платформой управления OpenStack. Взаимодействие реализовано через плагины для управления конечным устройствами фаерволлов/балансировщиков. Таким образом, AC может управлять на фаерволле функциями «плавающих» IP-адресов, ACL и SNAT, IPSEC VPN и т.д.
SBI-интерфейс
Agile Controller использует комбинацию протоколов OVSDB и OpenFlow для контроля элементов vSwitch. При этом OVSDB используется для статичной конфигурации, а OpenFlow — для динамического заполнения таблиц потоков трафика Layer2 и Layer3. Agile Controller может обнаруживать события создания, удаления и миграции виртуальных машин, а также запускать динамическую синхронизацию таблиц потоков трафика через различные коммутаторы vSwitch.
Процесс обнаружения события создания виртуальной машины происходит следующим образом:
- Оператор через OpenStack Nova создает виртуальную машину на конкретном физическом сервере.
- vSwitch обнаруживает создание виртуальной машины посредством агента, встроенного в гипервизор физического сервера, а затем посылает сообщение о создании виртуальной машины на Agile Controller через OVSDB.
- Agile Controller обнаруживает событие — создание VM.
Agile Controller контролирует физический коммутатор посредством комбинации NETCONF и Yang (NETCONF – это протокол конфигурации, а Yang – это язык моделирования данных).
Agile Controller также поддерживает протокол BGP EVPN, действующий между AC и аппаратными устройствами. Он используется для синхронизации таблиц коммутации и маршрутизации между vSwitch (overlay) и аппаратной сетью (underlay) в сценарии гибридного оверлея (hybrid overlay).
Интерфейс для трафика «Восток-Запад» (East-West)
При отсутствии сценариев облачной платформы, AgileController создает виртуальную сеть, используя свой собственный интерфейс портала. AC может взаимодействовать с приложением Virtual Machine Manager (VMM) через API SOAP/SDK.
AgileController назначает уникальный глобальный VN ID (VXLAN) для каждой виртуальной сети и классический VLAN (802.1q) для каждой виртуальной машинны в рамках домена каждого VMM (например, VMware vCenter или SystemCenter). Для оповещения о доступе к VLAN от AC на VMM используется SOAP API. Когда VMM создает виртуальную машину в виртуальной сети, та должна быть ассоциирована с VLAN, использующегося для изолирования трафика на локальном vSwitch.
Agile Controller поддерживает динамическое обнаружение событий создания, удаления и миграции виртуальных машин через API SOAP/SDK, а также автоматический маппинг конфигурации между VLAN и глобальным VN ID на порту доступа.
В заключение стоит сказать, что в качестве центрального элемента управления сетью, если хотите «супермозга» сети ЦОД контроллер AgileController может полностью интегрировать облачную платформу, аппаратный и программный слои сети в рамках ЦОД и обеспечить взаимодействие вычислительных, сетевых и дисковых ресурсов посредством стандартных открытых интерфейсов, включая NBI, SBI и интерфейса «East-West». Все это помогает оптимально планировать ресурсы в корпоративных облачных сервисах, повышать эффективность сети операторов связи и поддерживать высочайшее качество обслуживания.
Михаил Светлов, менеджер по IP-продуктам Huawei Enterprise Business Group в России