среда, 20 октября 2010 г.

Standard vSwitch - часть 1

Существует много статей о том, как сконфигурировать сеть на VMware ESX, но они по большей части на английском, либо затрагивают возможности тонкой настройки сети. Судя по вопросам, чаще всего задаваемым мне, у многих российских администраторов не хватает как раз базовых знаний и понимания, как все работает. Постараюсь в нескольких постах раскрыть тему сетей в VMware vSphere.

Ключевой компонент виртуальной сетевой инфраструктуры vSphere - vSwitch, виртуальный L2 коммутатор. vSwitch бывает двух типов - Standard vSwitch, и c выходом vSphere 4.0 появился vNetwork Distributed vSwitch (vDS). Мы будем рассматривать Standard vSwitch, присутствующий в любой редакции vSphere, в том числе и бесплатной.

vSwitch работает под управлением гипервизора (vmkernel) и отвечает за все сетевые операции хоста, в том числе он обеспечивает прохождение управляющего трафика. Все сетевые компоненты ESX(i) хоста подключаются к vSwitch через "портгруппы", о которых мы поговорим позже. Также обращаю ваше внимание, что по умолчанию разговор пойдет об устройстве сети в ESX, на 95% совпадающем с ESXi.

vSwitch очень богат функциями, и о них я расскажу в следующих постах:
  • Security
    • Promiscuous mode enable/disable
    • MAC Address Change enable/disable
    • Forged Transmit enable/disable
  • Traffic Shaping Configuration (outbound traffic only)
    • Average Bandwidth
    • Peak Bandwidth
    • Burst Size
  • NIC Teaming Policies
    • Active
    • Standby
    • Unused
  • Load Balancing Policies
    • vSwitch Port Based
    • MAC Address Based
    • IP Hash Based
    • Explicit Failover Order
  • Network Path Failure Detection
    • Link State
    • Beacon Probing
  • Cisco Discovery Protocol (CDP)
Так же хочу обратить ваше внимание на разницу между vSwitch и pSwitch (физическим L2 коммутатором):
  • vSwitch не изучает MAC адреса из проходящего трафика
  • vSwitches не участвует в Spanning Tree
    • vSwitch не может создать сетевую петлю
vSwitch обрабаытвает следующие типы трафика:
  • Управляюший трафик ESX Service Console
  • Сетевой трафик VMkernel
    • Трафик vMotion между хостами
    • Трафик Fault Tolerance между хостами
    • IP Storage (iSCSI и NFS) трафик
    • Управляющий трафик ESXi
  • Трафик между ВМ и сетевыми устройствами
В упрощенном виде это выглядит так (портгруппы не указаны намеренно).



На одном ESX хосте можно создать до 248 Standard vSwitch (vSphere 4.0 Configration Maximums). Следующий рисунок показывает довольно распространенный вариант использования нескольких vSwitch для разделения трафика.



Важно знать одну особенность vSwitch - ВМ, подключенные к разным vSwitch на одном хосте, будут общаться через внешнюю сеть. Прямое соединение vSwitch между собой невозможно. Поэтому невозможно и образование петель.



vSwitch - сетевое устройство, работающее на L2, канальном уровне сетевой модели OSI. Как любое устройство второго уровня, vSwitch отвечает за доставку пакетов соседним устройствам и не может осуществлять маршрутизацию. Поэтому если возникает необходимость доставки пакета в сегмент сети, напрямую не подключенный к vSwitch, то требуется наличие дополнительного маршрутизирующего устройства (физического или виртуального).

Существенное архитектурное отличие виртуальной инфраструктуры от привычной физической в том, что vSwitch берет на себя обеспечение отказоустойчивости сетевого соединения. В большинстве физических сред отказоустойчивость достигается добавлением дополнительной сетевой карты. Эти сетевые интерфейсы "связываются" при помощи специального ПО для поддержки агрегации (объединение пропускной способности нескольких сетевых интерфейсов в одном логическом) либо failover (при падении одного из линков трафик автоматически переключается на другой - не нашел адекватного перевода термина).

Так выглядит отказоустойчивость в физической среде.



А так - в виртуальной.



Легко заметить, что количество сетевых портов сократилось с 8 до 2 при сохранении эффективного уровная отказоустойчивости.

vSwitch поддерживает IEEE 802.1Q VLAN Tagging, расширение, позволяющее делить физическую сеть на несколько виртуальных. Для ESX характерны три режима работы с VLAN:
  • Virtual Guest Tagging (VGT) – сетевые пакеты пересылаются ВМ через vSwitch в нетронутом виде, вместе с VLAN тэгами 802.1Q. Для включения данного режима необходимо указать VLAN ID = 4095 в свойствах портгруппы.
  • External Switch Tagging (EST) – этот метод наболее распространен в физических сетях. VLAN тэги добавляются и обрезаются при передаче трафика на физическом коммутаторе, поэтому пакет, достигший сервера, уже не будет иметь никакого тэга.
  • Virtual Switch Tagging (VST) – этот метод распространен в виртуальных инфраструктурах VMware. В режиме VST VLAN тэги обрабатываются на vSwitch, а гостевая ОС работает с нетэгированным трафиком.
При работе в VST режиме vSwitch поддерживает определение VLAN'ов через свойства портгрупп, и каждый VLAN видится как отдельная L2 сеть. Таким образом, требуется устройство L3 для маршрутизации трафика между VLAN'ами.

Небольшой пример. Скажем, у нас есть сервер, которому требуется доступ в несколько VLAN'ов.



Если мы сделаем то же самое в виртуальной инфраструктуре, картинка будет такой.



Обратите внимание, что для виртуальной машины не требуется Storage VLAN, он обрабатывается на уровне ESX и предоставляется ВМ в форме SCSI устройств.

А если машин становится больше, то дополнительных портов нам все равно не требуется.



Краткое представление и VLANах и EST режиме мы получили, теперь перейдем к VST режиму. Для включения VST режима достаточно указать VLAN ID в свойствах портгруппы. Обратите особое внимание, что для работы в VST режиме ваш физический коммутатор, к которому подключен ESX, должен уметь работать с 802.1Q трафиком!



Теперь мы можем избавиться от лишних сетевых интерфейсов, пустив весь трафик по одному транку. vSwitch автоматически определит кому предназначен трафик, отрежет VLAN тэг и направит пакет в требуемый vNIC.

А помните что мы говорили об уровне L2 и vSwitch? vSwitch не может маршрутизировать трафик между разными VLAN, поэтому для того, чтобы ВМ из VLAN 100 смогли работать с ВМ из VLAN 200, пакеты должны выйти из vSwitсh по аплинк-порту (pNIC) и добраться до L3 устройства (маршрутизатора).



При написании статьи использованы материалы "The Great vSwitch Debate" by Ken Cline.

8 комментариев:

  1. Отличнейшая и полезнейшая статья

    ОтветитьУдалить
  2. Антон, молоток ;)
    Я тоже как-то заглядывался на сетевые дебаты Кена, но их так много и они такие объемные...
    Так что успехов.

    ОтветитьУдалить
  3. За что люблю блог Антона, так за то, что информация всегда полезна, по теме и без лишней воды...
    Спасибо!

    ОтветитьУдалить
  4. огромное спасибо... теперь многое становиться понятным.

    ОтветитьУдалить
  5. По поводу петель: можно же взять ВМ с ЦентОСом например, воткнуть в неё две портгруппы, и внутри ОС забриджевать эти интерфейсы, что тогда будет, как себя поведут вСвитчи? :)

    А ещё маршрутизация между портгруппами (с разными вланами) можно осуществить также само с поомощью ВМ и ОС/софта-маршрутизатора в ней и необязательно гонять трафик через пНИКи.

    ОтветитьУдалить