VMQ (Virtual Machine Queue)

Материал из Национальной библиотеки им. Н. Э. Баумана
VMware Fusion
VMWare Fusion 7.0 Icon.png
Rightsizing-your-sql-server-virtual-machine-12-638.jpg
Пример организации VMQ
Разработчики: VMware, Inc.
Постоянный выпуск: 8.1.1 / December 8, 2015 (2015-12-08)[1]
Операционная система: OS X
Платформа: Apple-Intel architecture
Тип ПО: Hypervisor
Лицензия: Commercial proprietary software
Веб-сайт Official website

VMQ (англ. Virtual Machine Queue) - это аппаратная технология виртуализации для эффективного переноса сетевого трафика (используя протоколы TCP/IP, iSCSI или FCoE) для виртуализированной ОС. Технология VMQ была запатентована в 2010 году Даниэлем Баумбергером из компании Intel. Совместимый с VMQ сетевой контроллер может использовать DMA для транспортировки всех полученных фреймов, которые должны быть обработаны для получения очереди для буферов приема, на которые выделена память для очереди.

Общие сведения о VMQ

Поддержка VMQ позволяет перенести большую часть затрат на обработку сетевых пакетов, адресованных виртуальным машинам с хостовой ОС на плечи процессора сетевого адаптера. Разумеется, при условии, что сетевой адаптер это поддерживает, и в гостевых ОС установлены компоненты интеграции. Если не используется VMQ, то обработка сетевых пакетов происходит следующим образом:

1ec883ef9cb378bd4f7b59e699ee2e20.png


Распределением трафика по виртуальным машинам и фильтрацией по тегам VLAN при этом занимается виртуальный коммутатор, действующий в пространстве родительской ОС. При большом количестве виртуальных машин и при больших объемах трафика это может привести к некоторому снижению производительности, так как у процессора сервера есть и другие задачи, помимо обработки сетевых пакетов. Использование VMQ позволяет переложить обработку пакетов на плечи процессора сетевого адаптера:

25d5bb8960ac2865ec7ab64587d93447.png

Сетевой адаптер, поддерживающий VMQ, способен самостоятельно осуществлять необходимую обработку сетевых пакетов, а затем записать данные непосредственно в область памяти соответствующей виртуальной машины. Передача же данных, что с VMQ, что без оной – идет как и обычно: Виртуальный сетевой адаптер – VMBus – Виртуальный коммутатор – Физический сетевой адаптер.

Сетевые адаптеры

Как можно увидеть в Hyper-V Manager, есть два типа виртуальных сетевых адаптеров: Network Adapter и Legacy Network Adapter. Отличаются между собой они тем, что первый из них является синтетическим устройством, а второй – эмулируемым. Чем отличаются синтетические устройства от эмулируемых – можно почитать в первой статье, «Архитектура Hyper-V».Legacy Network Adapter эмулирует многопортовую сетевую карту DEC 21140 10/100TX 100 MB (и поэтому поддерживает только 10/100Мбит/с) и не поддерживается ОС Windows XP и Windows Server 2003 в 64-битной версии. Использование синтетических устройств всегда предпочтительнее, и именно поэтому при создании новой виртуальной машины по умолчанию добавляется именно Network Adapter. Использовать Legacy Network Adapter рекомендуется только в двух случаях:

  • Когда гостевая ОС не поддерживает установку компонент интеграции;
  • Когда необходим доступ к сети до загрузки ОС, к примеру – загрузка по PXE для установки ОС с сервера WDS.

Для этого при создании виртуальной машины необходимо убрать галочку «Start virtual machine automatically», а затем, зайдя в конфигурацию виртуальной машины, вручную удалить Network Adapter и добавить Legacy Network Adapter. Стоит еще упомянуть о назначении MAC-адресов виртуальным адаптерам. Он может назначаться как автоматически при создании виртуальной машины (причем диапазон выдачи MAC-адресов можно изменять в настройках сервера Hyper-V), либо же вручную через конфигурацию виртуальной машины.

Виртуальные сети

В Hyper-V существуют виртуальные сети (Virtual Networks), которые по сути представляют собой самые обычные виртуальные коммутаторы. К каждому виртуальному коммутатору могут присоединяться как сетевые интерфейсы виртуальных машин, так и физические сетевые интерфейсы сервера. Виртуальные сети бывают трех типов:

Типы виртуальных сетей


Виртуальные сети (то есть виртуальные коммутаторы) бывают трех типов: External, Internal и Private. External – виртуальная сеть, имеющая выход «во внешний мир». При создании сети типа External необходимо указать сетевой интерфейс, через который будет осуществляться выход наружу (Физический адаптер 2). При этом физический интерфейс теряет все сетевые настройки, и создается виртуальный адаптер в хостовой ОС (Виртуальный адаптер 1), к которому привязываются все необходимые протоколы и настройки. Физический же интерфейс остается всего с одним протоколом: Virtual Network Switching Protocol.

Работа с VLAN

Hyper-V поддерживает работу с VLAN (IEEE 802.1Q). Для этого в свойствах виртуальных сетевых интерфейсов имеется галочка «Enable VLAN Identification», после активации которой можно ввести VLAN ID. Предварительно, необходимо настроить коммутаторы, чтобы трафик тегировался соответствующими ID, и установить в хостовой ОС драйверы сетевого адаптера с поддержкой необходимых функций.

Ссылки на источники

https://habrahabr.ru/post/97085/
https://habrahabr.ru/company/microsoft/blog/209684/
https://habrahabr.ru/post/99255/

Примечания