Как устроена цепочка сетевого стека VMware ESXi на уровне виртуального коммутатора - Network IOChain.
Недавно мы писали про то, как работает механизм регулирования полосы канала Network I/O Control (NIOC) в VMware vSphere, который позволяет приоритизировать различные типы трафика на одном сетевом адаптере, а сегодня взглянем на сам механизм прохождения трафика по уровням абстракции виртуального коммутатора изнутри.
Цепочка прохождения пакетов по сетевому стеку гипервизора ESXi через различные уровни называется Network IOChain. Это фреймворк, который позволяет на пути следования данных от виртуальной машины к физическому сетевому адаптеру производить различную модификацию данных и передачу их на следующий уровень.
IOChain обеспечивает связность виртуального коммутатора vSphere Standard Switch (VSS) или vSphere Distributed Switch (VDS) от групп портов на них к портам физических сетевым адаптеров (uplikns) в процессе передачи и обработки пакетов между этими сущностями. Для каждого из виртуальных коммутаторов есть 2 интерфейса IOChain (для входящего и исходящего трафика). Это дает большую гибкость по настройке политик каналов трафика Ingress и Egress.
Примерами таких политик служат поддержка сетей VLAN, механизма группировки NIC teaming и шейпинг трафика (traffic shaping). Работают эти политики на трех уровнях абстракции (в порядке следования от виртуальной машины):
- Группа портов виртуального коммутатора (port group).
На этом уровне работает фильтрация VLAN, а также политики безопасности, такие как Promiscuous mode, MAC address changes и Forged transmits. Пользователи также могут настроить политики шейпинга исходящего трафика (для VSS) или в обоих направлениях (только для VDS).
- Обычный или распределенный виртуальный коммутатор (VSS или VDS).
Основная задача этого уровня - направлять пакеты к нужному порту (аплинку), через которые они достигнут адреса назначения. Он оперирует MAC-адресами источника и назначения, а также определяет, отдавать ли трафик локально (в рамках одного или нескольких виртуальных коммутаторов на хосте), либо перенаправлять его к уровню аплинка хоста ESXi.
Кроме того, на этом уровне настраиваются правила NIC teaming по балансировке пакетов между аплинками, подключенными к данному коммутатору. Ну и на этом уровне можно также настраивать политики шейпинга и безопасности для всего виртуального коммутатора в целом.
Этот уровень отвечает за передачу трафика к драйверу сетевого адаптера. На этом уровне работают функции hardware offloading, облегчающие работу с обработкой пакетов за счет ресурсов сетевой карты. Доступные возможности hardware offloading зависят от конкретной модели карты и ее драйвера. Примерами таких возможностей являются TCP Segment Offload (TSO), Large Receive Offload (LRO) и Checksum Offload (CSO). Также здесь обеспечивается поддержка оверлейных протоколов VXLAN и Geneve, которые используются в решениях NSX-v и NSX-T соответственно (эта поддержка есть во многих современных сетевых картах).
Помимо этого на уровне аплинка работают механизмы буфферизации пакетов при всплесках нагрузки (ring buffers), после чего пакеты передаются на DMA-контроллер, чтобы быть обработанными процессором карты и перенаправлены уже в сеть передачи данных.
Для обычного виртуального коммутатора (VSS) схема прохождения трафика через уровни абстракции IOChain
выглядит так:
Если же у вас распределенный виртуальный коммутатор VDS, то вы можете использовать механизм Network I/O Control (NIOC) для резервирования и приоритизации трафика внутри канала аплинков. Также VDS предоставляет множество дополнительных возможностей, таких как LBT (Load Balanced Teaming) и LACP (Link Aggregation Control Protocol).
В случае с VDS схема с IOChain выглядит следующим образом:
Обратите внимание, что на этой диаграмме есть дополнительный модуль DVfilter. Это API-фреймворк, который есть в VDS и требуется для работы решения NSX. Когда компоненты NSX устанавливаются в ядро ESXi, они взаимодействуют с трафиком именно через этот модуль.
С помощью команды summarize-dvfilter можно вывести все загруженные агенты DVfilter и фильтры. Вот так это выглядит без установленного решения NSX:
Если вы посмотрите информацию по компонентам NSX, когда он установлен, то увидите модули nxst-switch-security, nsxt-vsip и nsxt-vdrb.
Вообще, весь стек IOChain является модульным, что позволяет добавлять новую функциональность его компонентов на различных уровнях абстракции. Например, компоненты DVfilter разделяются на Fastpaths, Slowpaths и Filters:
- Fastpaths – фильтры трафика на уровне ядра ESXi.
- Slowpaths – интеграция со сторонними продуктами для сетевой инфраструктуры.
- Filters – размещение фильтров в слоты для каждого из подходящих по модели сетевых адаптеров vNIC.
В VMware vSphere 6.7 в стеке IOChain появилось несколько улучшений, таких как поддержка MAC learning и функции IGMP snooping через интерфейс VNI (Virtual Network Interface), которые могут быть использованы в будущем.
Ну и напомним, что текущая версия распределенного виртуального коммутатора VDS - это 6.6, об их обновлении мы писали вот тут.
Таги: VMware, Networking, ESXi, VDS, VSS, VMachines
Апгрейд распределенного виртуального коммутатора (vSphere Distributed Switch) при обновлении VMware vSphere.
Когда вы обновляете виртуальную инфраструктуру VMware vSphere, нужно также подумать и об обновлении виртуального коммутатора (vSphere Distributed Switch, VDS), который, в зависимости от версии, предоставляет те или иные возможности.
Если вы хотите обновить VMware vSphere 5.5 на последнуюю версию VMware vSphere 6.7 Update 1, то, как вы уже знаете, прямого апгрейда нет. Вам нужно будет обновиться на одну из версий - vSphere 6.0 или 6.5 - и потом уже накатить апгрейд до версии 6.7.
В этом процессе есть нюанс - если вы обновитесь с 5.5 на 6.x, то вам надо будет обновить и Distributed Switch, до того, как будете проводить апгрейд на версию 6.7. В противном случае процесс обновления до версии 6.7 завершится неудачно.
Обновить распределенный коммутатор очень просто: в vSphere Client нужно зайти в Networking, выбрать там ваш VDS-коммутатор и на вкладке "Summary" кликнуть на ссылку, где написано "Upgrades available":
Чтобы запустить процесс обновления VDS, нужно в меню "Actions" выбрать пункт "Upgrade":
В процессе обновления вам предложат выбрать версию VDS, если кликнуть на иконку <i>, то можно узнать какие фичи предоставляют соответствующие версии:
Обратите внимание, что соответствие версий VDS версиям vSphere следующее:
- vSphere 6.0 = VDS 6.0
- vSphere 6.5 = VDS 6.5
- vSphere 6.7 = VDS 6.6 (да, вот так странно)
После обновления убедитесь, что виртуальный коммутатор имеет ту версию, которую вы выбрали:
И еще вам может оказаться полезной информация о потенциальных проблемах при обновлении на VDS 6.6, описанная в KB 52621.
Таги: VMware, vSphere, VDS, Upgrade, Networking
Как создать резервную копию конфигурации VMware vSphere Distributed Switch и восстановить ее.
Некоторым администраторам VMware vSphere в крупных инфраструктурах иногда приходится сталкиваться с задачей по переносу распределенного виртуального коммутатора VMware vSphere Distributed Switch в другую инфраструктуру (миграция, восстановление после сбоя и т.п.). При этом многие знают, как перенести vCenter и SSO, но не знают как быть с этим коммутатором.
Специально для этого компания VMware сделала обучающее видео по процессу резервного копирования и восстановления конфигурации VMware vSphere Distributed Switch:
Но это еще не все. Для тех, кто хочет пройти эти процессы самостоятельно на практике, VMware сделала пошаговое руководство в формате walkthrough (о них мы уже писали тут и тут) - то есть набора экранов, где нужно самостоятельно кликать на элементы в vSphere Web Client:
Таги: VMware, vSphere, VDS, Backup, vNetwork
Shadow vmnics в выводе esxtop на VMware ESXi.
Если заглянуть в секцию Network утилиты esxtop, то там (начиная с ESXi 5.1) можно увидеть объекты Shadow of vmnic1 и т.п.:
На самом деле, эти штуки созданы для обеспечения работы функций VDS Network Health Check, которые появились в VMware vSphere 5.1. Для каждого физического интерфейса создается shadow port, через который посылаются пакеты Health Check, связанные с состоянием этого порта. Эти виртуальные интерфейсы можно мониторить на предмет работоспособности означенной функциональности.
Если эти штуки вам мешают, то можно убрать их, отключив модули хоста ESXi, связанные с хэлсчеком (заодно и в целях безопасности). Для этого нужно выполнить следующую последовательность команд для выгрузки ненужных модулей:
vmkload_mod -u vlanmtucheck
vmkload_mod -u teamcheck
vmkload_mod -u heartbeat
vmkload_mod -u healthchk
Помните, что после перезагрузки эти изменения не сохранятся - модули снова будут загружены автоматически.
Кстати, не по теме, но хозяйке на заметку: если вы видите, что в esxtop какой-либо счетчик принимает только значения 0 или 100 - знайте, что это просто означает работает эта штука в данный момент времени или нет. Так, например, происходит с SIOC. Просто нет еще в esxtop булевых метрик.
Таги: VMware, ESXi, vNetwork, Blogs, vSphere, VDS
Постер о сетевой инфраструктуре VMware vCloud: VSS, VDS и VXLAN.
Во время проходившей в конце августа конференции VMworld 2012 компания VMware выпустила интересный постер - "VMware vCloud Networking Poster".
Из этого постера можно узнать о том, как работают 3 основных составляющих сетевого взаимодействия виртуальной облачной инфраструктуры VMware:
- vSphere Standard Switch (VSS) - обычный виртуальный коммутатор на хостах ESXi.
- vSphere Distributed Switch (VDS) - распределенный виртуальный коммутатор, предоставляющий функции централизованного управления сетевой инфраструктурой через vCenter.
- Virtual Extensible Local Area Network (VXLAN) - новая технология для облачных инфраструктур, пришедшая на смену VLAN, описанная у нас тут.
На постере приведены различные параметры настройки обычного и распределенного коммутаторов, которые могут оказаться полезными для администраторов, поэтому можно распечатать постер в формате A2+, повесить на стену и обращаться к нему по мере надобности. Он также будет полезен при общении с сетевыми администраторами компании.
Скачать постер VMware vCloud Networking в формате PDF.
Таги: VMware, vCloud, vNetwork, VDS, vSphere, Cloud
Network Health Check в VMware vSphere 5.1 - проверка корректности VLAN на физических свичах.
Мы уже писали о новых возможностях плафтормы виртуализации VMware vSphere 5.1, а также о принципах лицензирования продукта. Среди новых функций сетевого взаимодействия в vSphere 5.1 появились возможности Network Health Check, обеспечивающие проверку согласованности параметров на виртуальных распределенных коммутаторах VDS и физических коммутаторах, к которым подключены сетевые адаптеры серверов ESXi.
В рамках Network Health Check отслеживается корректность настройки следующих параметров (с интервалом в 1 минуту) для физических и виртуальных коммутаторов:
- VLAN
- MTU
- Network adapter teaming
Делается это средствами Layer 2 Ethernet probing. Сегодня мы расскажем о том, как выглядит на практике Network Health Check при проверке VLAN, основываясь на материалах блогера Rickard Nobel. Для начала в vSphere Web Client для коммутатора VDS 5.1 зайдем на вкладку "Manage" в раздел "Health check":
Здесь мы видим, что функции Health check включены только для параметров VLAN и MTU. Частая проблема администраторов vSphere заключается в том, что настройки VLAN, сделанные в портгруппах на виртуальном коммутаторе VDS, не совпадают с настройками VLAN на портах физических свичей.
Например, для портгруппы VDS настроен VLAN 200, а сетевой администратор, который настраивал VLAN для портов физических коммутаторов, куда ведут аплинки серверов ESXi, пропустил один из портов физического коммутатора при настройке для пропускания фреймов VLAN 200. Вследствие этого, виртуальные машины могут работать хорошо, однако функции vMotion/DRS могут быть частично недоступны для некоторых из хостов.
Собственно, чтобы вовремя обнаружить такую ошибку, мы и включаем Network Health Check:
Теперь хосты ESXi будут слать броадкасты на все свои адаптеры vmnic, привязанные к VDS, и отслеживать, не дропают ли их порты физических коммутаторов. Эти фреймы будут тэгированы всеми VLAN ID, которые назначены для групп портов VDS. В нашем случе - это VLAN 100 и VLAN 200, которые мы видим в списке портгрупп:
Теперь мы видим новую вкладку "Monitor", где можно отслеживать жизнедеятельность VLAN на хостах. Заходим в подраздел "Health":
Здесь мы видим, что для одного хоста с настройками VLAN что-то не так. Смотрим детали:
Здесь мы видим, что для аплинков vmnic2 и vmnic3 не работает VLAN 200. Теперь неплохо бы в настройках VDS включить поддержку LLDP (режим Both или Advertise), чтобы определить порты физического коммутатора, с которыми связана данная проблема для конкретных аплинков, и не бегать в серверную.
Теперь на физическом коммутаторе смотрим порты, куда включены vmnic2 и vmnic3 командой (в данном случае команды для коммутатора HP):
# show lldp info remote
Мы видим порты свича, куда включены проблемные аплинки хоста. Теперь смотрим, для каких портов настроен VLAN 200 командой:
# show vlan 200
Видим, что VLAN 200 пропускается только на порту A13, а порт A14 не пропускает двухсотый VLAN. Исправляем ситуацию, добавляя VLAN 200 для порта A14, командой:
# vlan 200 tag A14
И выводим снова информацию по VLAN 200:
Теперь оба порта на физическом коммутаторе принимают кадры с VLAN ID 200.
Откроем vSphere Web Client for ESXi 5.1 и посмотрим, в каком состоянии теперь находятся аплинки VDS:
Теперь мы видим, что все корректно настроено, и порты физических коммутаторов пропускают нужные VLAN от обозначенных сетевых адаптеров хостов в портгруппах VDS. Таги: VMware, vSphere, VDS, Troubleshooting, ESXi, vNetwork, Hardware
|