Виртуализация сетей
Прежде чем переходить к подробному рассмотрению различных способов организации и
поддержки виртуальных сетей в Linux, стоит рассмотреть эту проблему на более высоком
уровне абстракции.
Виртуальная коммутация
Виртуальный коммутатор – это ключевой компонент, необходимый для виртуализации
сетевой инфраструктуры. Виртуальный коммутатор соединяет виртуальные сетевые
адаптеры (vNIC) с физическими сетевыми адаптерами, установленными на сервере, и, что
более важно, связывает одни виртуальные сетевые адаптеры с другими для локального
взаимодействия в рамках сервера. Стоит отметить, что для виртуального коммутатора
предел возможностей определяется не скоростью сети, а пропускной способностью памяти,
которая позволяет наладить эффективные коммуникации между локальными виртуальными
машинами и минимизировать нагрузку на сетевую инфраструктуру. Эта экономия связана с
тем, что ресурсы физической сети расходуются только на коммуникации между серверами, а
трафик между виртуальными машинами изолируется внутри серверов.
Поскольку в ядре Linux уже присутствует коммутатор второго уровня, возникает вопрос,
зачем необходим еще и виртуальный коммутатор. Ответ на этот вопрос учитывает
несколько факторов, но наиболее важный из них – это новая классификация коммутаторов.
Новый класс коммутаторов называется распределенным виртуальным коммутатором
(distributed virtual switch) и применяется для соединения серверов таким способом,
чтобы нижележащая архитектура стала "прозрачной" для использующих её приложений.
Виртуальный коммутатор на одном сервере может «прозрачно» для пользователей
подключиться к виртуальному коммутатору на другом сервере (см. рисунок 3). Это
значительно упрощает миграцию виртуальных машин между серверами и их виртуальными
интерфейсами, так как они могут подключиться к распределенному виртуальному
коммутатору другого сервера и "прозрачно" присоединиться к его виртуальной сети.
Один из наиболее важных проектов в этой области – проект Open vSwitch, который будет
рассматриваться в следующем разделе.
Из-за изоляции локального трафика внутри сервера возникает проблема, связанная с тем,
что этот трафик оказывается недоступен снаружи (например, сетевым анализаторам).
В разных реализациях эту проблема решается с помощью различных схем, например,
OpenFlow, NetFlow и sFlow, призванных обеспечить удаленный доступ для контроля и
мониторинга трафика.
Open vSwitch
Ранние реализации распределенных виртуальных коммутаторов были закрытыми и могли
работать только с гипервизорами определенных поставщиков ПО. Однако при современном
развитии облачной инфраструктуры желательна поддержка гетерогенных сред, в которых
могут сосуществовать различные гипервизоры.
QEMU
Хотя QEMU – это эмулятор аппаратных платформ, он также может программно эмулировать
различные устройства, включая сетевые адаптеры. Также QEMU включает внутренний
DHCP-сервер (Dynamic Host Configuration Protocol – протокол динамической конфигурации
хоста) для назначения IP-адресов. Совместное использование QEMU и KVM создает
платформу для виртуализации, обеспечивающую эмуляцию аппаратной составляющей и
отдельных устройств на основе KVM. Дополнительная информация о QEMU находится в
разделе Ресурсы.
virtio
virtio – это инфраструктура ввода/вывода для Linux с поддержкой паравиртуализации
(para-virtualization), упрощающая и ускоряющая обмен данными между виртуальной
машиной и гипервизором. Технология virtio создает стандартизированный транспортный
механизм для операций ввода/вывода между виртуальной машиной и гипервизором,
который можно использовать для виртуализации блочных устройств, стандартных PCI-
устройств, сетевых устройств и т.д. Дополнительная информация о virtio находится в
разделе Ресурсы.
TAP и TUN
Виртуализация довольно давно реализована в сетевом стеке, чтобы обеспечить сетевым
интерфейсам гостевой виртуальной машины доступ к сетевым интерфейсам физического
сервера. Две схемы подобного рода – это TAP и TUN. TAP – это виртуальный сетевой
драйвер ядра, реализующий Ethernet-устройство и работающий на уровней фреймов
(пакетов) Ethernet. Драйвер TAP представляет собой "перехватчик" (англ. tap) Ethernet-
трафика, который позволяет Ethernet-фреймам гостевой виртуальной машины участвовать
в коммуникациях. Технология TUN (от network TUNnel – сетевой туннель) эмулирует
устройство сетевого уровня, общающееся на более высоком уровне IP-пакетов. Это
технология применяется для оптимизации, позволяя нижележащим Ethernet-устройствам
управлять формированием пакетов 2-го уровня из IP-пакетов TUN.
Виртуализация ввода-вывода
Виртуализация ввода-вывода обеспечивается стандартной схемой от PCI Special Interest
Group (SIG), позволяющей ускорить виртуализацию на аппаратном уровне. Технология
Single-root IOV (SR-IOV) предоставляет интерфейс, делающий один адаптер PCIe
(PCI Express) доступной множеству пользователей как несколько независимых PCIe-
адаптеров. Это позволяет нескольким драйверам независимо и прозрачно друг для друга
подключаться к одному PCIe-адаптеру. Технология SR-IOV достигает такого эффекта,
открывая пользователям виртуальные функции, которые отображаются как физические
Заключение
Раньше любое используемое устройство обязано было существовать в реальности.
Но сегодня, в нашем виртуализированном мире, физические устройства и службы
постепенно исчезают из поля зрения. Физические сети виртуально разделяются на
отдельные фрагменты, обеспечивая изоляцию трафика и создание виртуальных сетей
между географическими разделенными регионами. Приложения вытесняются готовыми
виртуальными устройствами, которые распределяются между высокопроизводительными
серверами, что усложняет обязанности администратора, но повышает гибкость и
управляемость разработанных решений. И, конечно, Linux находится "на передовой"
разработки и применения технологий виртуализации.
Об авторе
M. Тим Джонс