Open vSwitch часть №1. Зачем и для чего

Open vSwitch — все статьи

Сегодня виртуализация серверов и рабочих станций помогает оптимизировать множество процессов, но она также привносит некоторые специфические проблемы, требующие нового подхода. Одной из таких непростых задач является контроль трафика ВМ, его приоритезация и  мониторинг. Так как на одном узле может работать множество ВМ и трафик между виртуальными интерфейсами может не выходить за его рамки, применение классических, аппаратных коммутаторов и фаерволов в данной среде становится неэффективным.По этой причине возникла необходимость в реализации виртуального коммутатора, работающего на каждом из физических узлов и умеющего отслеживать и контролировать трафик ВМ. open vswitch

Какое-то время в средах виртуализации на базе KVM и Xen для решения данной задачи использовался встроенный в ядро Linux коммутатор второго уровня — Linux Bridge (мост, он же разновидность коммутатора)[1]. В принципе, он и сейчас используется по умолчанию в некоторых дистрибутивах как наиболее простое решение. Linux-мост позволяет создавать виртуальные интерфейсы для ВМ, а также коммутировать их между собой и  внешним миров через физические интерфейсы узла. Также возможны некоторые методы фильтрации трафика на канальном уровне. Но даже этот скромный функционал едва ли применим в  крупных инфраструктурах из-за еще одной особенности виртуализации — высокой мобильности объектов(ВМ). К сожалению Linux-мост не подходит для динамичных сред с большим количеством узлов и миграцией ВМ по причине отсутствия централизованности и взаимодействия между узлами. Связанность состояний и правил, таких как правила маршрутизации, ACL, QoS, мониторинга, закрепленные за сетевым объектом (ВМ) при перемещении на другой физический узел — это основной список требований к коммутатору в виртуальной среде. Здесь нам на помощь и приходит распеределенный, управляемый, многоуровневый виртуальный коммутатор, каковым и является Open vSwitch(далее OVS).

OVS — это свободный аналог коммерческих VMware Distributed vSwitch и Cisco Nexus 1000v, изначально развиваемый компанией Citrix, а теперь уже и многочисленным сообществом, включающим специалистов из Red Hat, Canonical, Oracle и других компаний. Он базируется на некоторых уже имеющихся в ядре компонентах, например, том же Linux Bridge и штатном стеке QoS, плюс собственных разработках, реализующих дополнительный функционал.

С помощью OVS можно создавать VLAN’ы, фильтровать трафик на сетевом уровне, агрегировать каналы, зеркалировать трафик, ограничивать ширину канала для конкретных ВМ.
OVS значительно упрощает администрирование виртуализированных сред, так как вся сетевая конфигурация ВМ и статистика остаются связанными, даже если ВМ мигрирует с одного физического узла на другой. Управление коммутаторами, создание правил и их перемещение на каждом из узлов осуществляется централизованно с помощью протокола OpenFlow.
Поддержка NetFlow[2] и sFlow[3] позволяет мониторить и анализировать состояние сети по множеству аспектов, учитывать трафик ВМ.

Также реализована сетевая база данных состояний (OVSDB), которая поддерживает удаленные триггеры. Поэтому часть программного обеспечения оркестровки может наблюдать различные аспекты сети и сообщать об их изменениях, например, отслеживать миграцию ВМ.

Кроме всего, OVS может работать с логическими тегами так же как и его коммерческие конкуренты. Поддержка логического контекста в сети достигается посредством добавления тегов или управления ими в сетевых пакетах. Это может использоваться, например чтобы однозначно определить ВМ (способ, стойкий к аппаратному спуфингу).
Так же имеется реализация GRE-туннелирования, способная обрабатывать тысячи одновременных GRE-туннелей. Это, например, может использоваться, для объединения частных сетей ВМ в различных центрах обработки данных.

[1] Linux Bridge — http://xgu.ru/wiki/Linux_Bridge
[2] NetFlow — http://rfc2.ru/3954.rfc
[3] sFlow — http://www.netflowfaq.ru/index/0-10