Ключевой компонент виртуальной сетевой инфраструктуры 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 не изучает MAC адреса из проходящего трафика
- vSwitches не участвует в Spanning Tree
- vSwitch не может создать сетевую петлю
- Управляюший трафик ESX Service Console
- Сетевой трафик VMkernel
- Трафик vMotion между хостами
- Трафик Fault Tolerance между хостами
- IP Storage (iSCSI и NFS) трафик
- Управляющий трафик ESXi
- Трафик между ВМ и сетевыми устройствами
![](http://kensvirtualreality.files.wordpress.com/2009/03/vswitch-overview.png?w=450&h=315)
На одном ESX хосте можно создать до 248 Standard vSwitch (vSphere 4.0 Configration Maximums). Следующий рисунок показывает довольно распространенный вариант использования нескольких vSwitch для разделения трафика.
![](http://kensvirtualreality.files.wordpress.com/2009/03/031709-1247-thegreatvsw24.png?w=448&h=192)
Важно знать одну особенность vSwitch - ВМ, подключенные к разным vSwitch на одном хосте, будут общаться через внешнюю сеть. Прямое соединение vSwitch между собой невозможно. Поэтому невозможно и образование петель.
![](http://kensvirtualreality.files.wordpress.com/2009/03/no-direct-path.png?w=450&h=289)
vSwitch - сетевое устройство, работающее на L2, канальном уровне сетевой модели OSI. Как любое устройство второго уровня, vSwitch отвечает за доставку пакетов соседним устройствам и не может осуществлять маршрутизацию. Поэтому если возникает необходимость доставки пакета в сегмент сети, напрямую не подключенный к vSwitch, то требуется наличие дополнительного маршрутизирующего устройства (физического или виртуального).
Существенное архитектурное отличие виртуальной инфраструктуры от привычной физической в том, что vSwitch берет на себя обеспечение отказоустойчивости сетевого соединения. В большинстве физических сред отказоустойчивость достигается добавлением дополнительной сетевой карты. Эти сетевые интерфейсы "связываются" при помощи специального ПО для поддержки агрегации (объединение пропускной способности нескольких сетевых интерфейсов в одном логическом) либо failover (при падении одного из линков трафик автоматически переключается на другой - не нашел адекватного перевода термина).
Так выглядит отказоустойчивость в физической среде.
![](http://kensvirtualreality.files.wordpress.com/2009/03/physical-fault-tolerance.png?w=450&h=177)
А так - в виртуальной.
![](http://kensvirtualreality.files.wordpress.com/2009/03/virtual-fault-tolerance.png?w=450&h=278)
Легко заметить, что количество сетевых портов сократилось с 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, а гостевая ОС работает с нетэгированным трафиком.
Небольшой пример. Скажем, у нас есть сервер, которому требуется доступ в несколько VLAN'ов.
![](http://kensvirtualreality.files.wordpress.com/2009/03/vlan-1.png?w=450&h=203)
Если мы сделаем то же самое в виртуальной инфраструктуре, картинка будет такой.
![](http://kensvirtualreality.files.wordpress.com/2009/03/virt-vlan-1.png?w=450&h=421)
Обратите внимание, что для виртуальной машины не требуется Storage VLAN, он обрабатывается на уровне ESX и предоставляется ВМ в форме SCSI устройств.
А если машин становится больше, то дополнительных портов нам все равно не требуется.
![](http://kensvirtualreality.files.wordpress.com/2009/03/virt-vlan.png?w=450&h=423)
Краткое представление и VLANах и EST режиме мы получили, теперь перейдем к VST режиму. Для включения VST режима достаточно указать VLAN ID в свойствах портгруппы. Обратите особое внимание, что для работы в VST режиме ваш физический коммутатор, к которому подключен ESX, должен уметь работать с 802.1Q трафиком!
![](http://kensvirtualreality.files.wordpress.com/2009/03/single-port-group.png?w=450&h=453)
Теперь мы можем избавиться от лишних сетевых интерфейсов, пустив весь трафик по одному транку. vSwitch автоматически определит кому предназначен трафик, отрежет VLAN тэг и направит пакет в требуемый vNIC.
А помните что мы говорили об уровне L2 и vSwitch? vSwitch не может маршрутизировать трафик между разными VLAN, поэтому для того, чтобы ВМ из VLAN 100 смогли работать с ВМ из VLAN 200, пакеты должны выйти из vSwitсh по аплинк-порту (pNIC) и добраться до L3 устройства (маршрутизатора).
![](http://kensvirtualreality.files.wordpress.com/2009/03/port-group-connectivity.png?w=450&h=248)
При написании статьи использованы материалы "The Great vSwitch Debate" by Ken Cline.
Отличнейшая и полезнейшая статья
ОтветитьУдалитьАнтон, молодца.
ОтветитьУдалитьАнтон, молоток ;)
ОтветитьУдалитьЯ тоже как-то заглядывался на сетевые дебаты Кена, но их так много и они такие объемные...
Так что успехов.
За что люблю блог Антона, так за то, что информация всегда полезна, по теме и без лишней воды...
ОтветитьУдалитьСпасибо!
Спасибо за похвалы :)
ОтветитьУдалитьогромное спасибо... теперь многое становиться понятным.
ОтветитьУдалитьПо поводу петель: можно же взять ВМ с ЦентОСом например, воткнуть в неё две портгруппы, и внутри ОС забриджевать эти интерфейсы, что тогда будет, как себя поведут вСвитчи? :)
ОтветитьУдалитьА ещё маршрутизация между портгруппами (с разными вланами) можно осуществить также само с поомощью ВМ и ОС/софта-маршрутизатора в ней и необязательно гонять трафик через пНИКи.
super klassno prosto i so vkusom
ОтветитьУдалить