Обзор расширяемых сетевых адаптеров коммутаторов Hyper-V
Hyper-V расширяемый коммутатор поддерживает подключения из различных типов виртуальных или физических сетевых адаптеров. Подключение к этим типам сетевых адаптеров осуществляется через расширяемый порт коммутатора. Порты создаются перед подключением к виртуальной сети и удаляются после удаления подключения сетевого адаптера.
Например, при запуске дочернего раздела Hyper-V, расширяемый интерфейс коммутатора создает порт перед предоставлением виртуального сетевого адаптера в гостевой операционной системе. После предоставления и перечисления сетевого адаптера виртуальной машины расширяемый интерфейс коммутатора создает сетевое подключение между сетевым адаптером виртуальной машины и расширяемым портом коммутатора. Если дочерний раздел остановлен, интерфейс расширяемого коммутатора сначала удаляет сетевое подключение, а затем удаляет расширяемый порт коммутатора.
Расширяемый коммутатор Hyper-V поддерживает подключения из следующих типов виртуальных сетевых адаптеров:
внешние сетевые адаптеры
Это сетевой адаптер расширяемого коммутатора, который доступен в операционной системе администрирования, выполняемой в родительском разделе Hyper-V. Каждый расширяемый коммутатор поддерживает только одно подключение к внешнему сетевому адаптеру.
Внешний сетевой адаптер предоставляет подключение к физическому сетевому интерфейсу, доступному на узле. Доступ к внешнему сетевому адаптеру может быть осуществлён через родительский раздел Hyper-V и все дочерние разделы.
Дополнительные сведения об этом типе сетевого адаптера см. в разделе Внешние сетевые адаптеры.
внутренние сетевые адаптеры
Это расширяемый сетевой адаптер коммутатора, который предоставляется в операционной системе управления, работающей в родительском разделе Hyper-V. Каждый расширяемый коммутатор поддерживает только одно внутреннее подключение сетевого адаптера.
Внутренний сетевой адаптер предоставляет доступ к расширяемым коммутаторам для процессов, выполняемых в операционной системе управления. Это позволяет этим процессам отправлять или получать пакеты через расширяемый коммутатор.
Дополнительные сведения об этом типе сетевого адаптера см. в разделе "Внутренние сетевые адаптеры".
сетевые адаптеры виртуальных машин
Это расширяемый сетевой адаптер коммутатора, который доступен в гостевой операционной системе, работающей в дочернем разделе Hyper-V.
примечание в Hyper-V дочерний раздел также называется виртуальной машиной.
Сетевой адаптер виртуальной машины поддерживает следующие типы виртуализации:
Сетевой адаптер виртуальной машины может быть искусственной виртуализацией сетевого адаптера (искусственный сетевой адаптер). В этом случае клиент виртуальной сети (NetVSC), работающий на виртуальной машине, предоставляет этот виртуальный сетевой адаптер. NetVSC перенаправляет пакеты в порт расширяемого коммутатора через шину виртуальной машины (VMBus).
Сетевой адаптер виртуальной машины может быть эмулированной версией физического сетевого адаптера (эмулированный сетевой адаптер). В этом случае сетевой адаптер виртуальной машины имитирует сетевой адаптер Intel и использует аппаратную эмуляцию для пересылки пакетов в и из порта расширяемого коммутатора.
Дополнительные сведения об этом типе сетевого адаптера см. в сетевых адаптеров виртуальных машин.
Расширяемые подключения сетевого адаптера коммутатора создаются, обновляются и удаляются с помощью следующих расширяемых запросов OID коммутатора:
OID_SWITCH_NIC_CREATE
Краевой протокол расширяемого коммутатора выдает OID-запрос установки OID_SWITCH_NIC_CREATE для уведомления расширений расширяемого коммутатора об установлении соединения сетевого адаптера с расширяемым портом коммутатора. Порт должен быть создан ранее с помощью запроса набора OID OID_SWITCH_PORT_CREATE.
Запрос OID_SWITCH_NIC_CREATE лишь уведомляет расширение о том, что устанавливается новое подключение сетевого адаптера к расширяемому коммутатору, и вскоре через указанный порт может начаться передача пакетов.
Расширение может наложить вето на уведомление о создании, возвращая STATUS_DATA_NOT_ACCEPTED для запроса OID. Например, если расширение не может удовлетворить настроенные политики на порте, используемом для подключения сетевого адаптера, расширение должно ветоировать уведомление о создании.
Если расширение принимает уведомление о создании, оно должно пересылать запрос OID вниз по стеку драйвера расширяемого коммутатора. Расширение отслеживает состояние завершения этого запроса OID, чтобы определить, наложили ли базовые расширения вето на уведомление о создании.
При создании подключения сетевого адаптера назначается значение NDIS_SWITCH_NIC_INDEX. Это значение индекса определяет подключение сетевого адаптера к порту расширяемого коммутатора. Подключения к внешним, внутренним и сетевым адаптерам виртуальной машины назначаются значением NDIS_SWITCH_NIC_INDEX NDIS_SWITCH_DEFAULT_NIC_INDEX. Каждому физическому или виртуальному сетевому адаптеру, который привязан к внешнему сетевому адаптеру, назначается значение NDIS_SWITCH_NIC_INDEX следующим образом:
Если физический или виртуальный сетевой адаптер напрямую привязан к внешнему сетевому адаптеру, ему назначается значение индекса NDIS_SWITCH_NIC_INDEX, равное единице.
Если физический сетевой адаптер является частью команды расширяемого коммутатора, ему назначается значение NDIS_SWITCH_NIC_INDEX, которое больше или равно одному. Расширяемая команда коммутаторов — это конфигурация, в которой команда одного или нескольких физических сетевых адаптеров привязана к расширяемому коммутатору внешнего сетевого адаптера.
Дополнительные сведения о различных конфигурациях, в которых физические сетевые адаптеры могут быть привязаны к внешнему сетевому адаптеру, см. в типах конфигураций физических сетевых адаптеров.
Дополнительные сведения о значениях NDIS_SWITCH_NIC_INDEX см. в значения индекса сетевого адаптера.
Примечание Расширение не может создавать или пересылать пакеты через подключение сетевого адаптера, пока пограничный протокол расширяемого коммутатора не выдает запрос набора идентификаторов OID_SWITCH_NIC_CONNECT.
OID_SWITCH_NIC_CONNECT
Конец протокола расширяемого коммутатора выдает запрос на установку OID с кодом OID_SWITCH_NIC_CONNECT для уведомления расширений расширяемого коммутатора о полной готовности подключения сетевого адаптера расширяемого коммутатора.
Расширение всегда должно пересылать этот запрос на установку OID вниз по стеку расширяемого драйвера коммутатора. Расширение не должно приводить к ошибке запроса.
После завершения запроса OID с NDIS_STATUS_SUCCESS подключение сетевого адаптера и расширяемый порт коммутатора полностью работают. Если подключение сетевого адаптера находится в этом состоянии, расширение может выполнить следующее:
Создайте или перенаправите трафик пакетов к сетевому адаптеру порта.
Выдайте расширяемые коммутаторные OID или индикаторы состояния, которые используют порт в качестве исходного порта.
Вызовите ReferenceSwitchNic, чтобы увеличить счетчик ссылок для подключения сетевого адаптера. Расширяемый интерфейс коммутатора не разорвет соединение сетевого адаптера, пока счетчик ссылок имеет значение, отличное от нуля.
OID_SWITCH_NIC_UPDATED
Пограничный протокол расширяемого коммутатора выдает запрос набора OID OID_SWITCH_NIC_UPDATED для уведомления расширений расширяемого коммутатора о том, что были обновлены параметры сетевого адаптера расширяемого коммутатора. OID будет выдан только для сетевых адаптеров, которые уже подключены, и еще не начали процесс отключения. Эти изменения конфигурации, выполняемые во время выполнения, могут включать NicFriendlyName, MTU, NetCfgInstanceId, PermanentMacAddress, VMMacAddress, CurrentMacAddressи VFAssigned.
Расширение всегда должно пересылать этот запрос на установку OID вниз по стеку драйвера расширяемого коммутатора. Расширение не должно отказать в выполнении запроса.
OID_SWITCH_NIC_DISCONNECT
Край протокола расширяемого коммутатора выдает запрос набора OID OID_SWITCH_NIC_DISCONNECT для уведомления расширений расширяемого коммутатора о том, что подключение сетевого адаптера расширяемого коммутатора отменяется. После полного разрыва соединения краевой протокол расширяемого коммутатора отправляет запрос набора OID OID_SWITCH_NIC_DELETE.
Расширение всегда должно пересылать этот OID запрос вниз по стеку драйвера расширяемого коммутатора. Расширение не должно вызвать отказ запроса.
После перенаправления этого запроса OID расширение больше не может создавать или пересылать пакеты на порт, на который удаляется подключение сетевого адаптера. Кроме того, расширение больше не может вызывать ReferenceSwitchNic для подключения сетевого адаптера.
OID_SWITCH_NIC_DELETE
Край протокола расширяемого коммутатора выдает запрос набора OID OID_SWITCH_NIC_DELETE для уведомления расширений расширяемого коммутатора о том, что подключение сетевого адаптера расширяемого коммутатора было удалено и удалено. Этот запрос OID выдан только для тех сетевых подключений, для которых ранее был выдан запрос установки OID OID_SWITCH_NIC_DISCONNECT.
Примечание. Расширение должно обязательно пересылать этот запрос установки OID по стеку расширяемого драйвера коммутатора. Расширение не должно приводить к отказу запроса.
После завершения этого запроса OID, протокол на границе расширяемого коммутатора инициирует запрос на установку OID OID_SWITCH_PORT_TEARDOWN для запуска процесса удаления порта, который был использован для подключения сетевого адаптера.
Расширение должно всегда пересылать этот запрос на установку OID в стек драйверов расширяемого коммутатора. Расширение не должно приводить к сбою запроса.
Расширяемый интерфейс коммутатора поддерживает счетчик ссылок для каждого созданного подключения сетевого адаптера. Подключение сетевого адаптера не будет удалено, если его счетчик ссылок имеет ненулевое значение. Интерфейс предоставляет следующие функции обработчика для увеличения или уменьшения референсного счетчика сетевого подключения адаптера коммутатора с возможностью расширения.
ReferenceSwitchNic
Расширение расширяемого коммутатора вызывает эту функцию для увеличения эталонного счетчика подключения к сетевому адаптеру. Хотя счетчик ссылок имеет ненулевое значение, расширяемый интерфейс коммутатора не удаляет подключение сетевого адаптера.
Расширение должно вызывать ReferenceSwitchNic перед выполнением следующих операций:
Перенаправляет запрос OID_SWITCH_NIC_REQUEST вниз по стеку драйверов расширяемого коммутатора к базовому внешнему адаптеру.
Пересылает индикацию статуса NDIS_STATUS_SWITCH_NIC_STATUS вверх по стеку драйверов расширяемого коммутатора от базового внешнего адаптера.
Примечание Расширение не должно вызывать ReferenceSwitchNic для подключения сетевого адаптера после получения запроса установки OID OID_SWITCH_NIC_DISCONNECT для этого подключения.
DereferenceSwitchNic
Расширение расширяемого коммутатора вызывает эту функцию для уменьшения счетчика ссылок порта.
Если расширение вызывает ReferenceSwitchNic, оно должно вызывать DereferenceSwitchNic после завершения OID_SWITCH_NIC_REQUEST или NDIS_STATUS_SWITCH_NIC_STATUS указания.