Обзор сетевых адаптеров расширяемого коммутатора 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 значение 1.
Если физический сетевой адаптер входит в группу расширяемых коммутаторов, ему назначается значение NDIS_SWITCH_NIC_INDEX, которое больше единицы или равно ему. Команда расширяемых коммутаторов — это конфигурация, в которой команда из одного или нескольких физических сетевых адаптеров привязана к внешнему сетевому адаптеру расширяемого коммутатора.
Дополнительные сведения о различных конфигурациях, в которых физические сетевые адаптеры могут быть привязаны к внешнему сетевому адаптеру, см. в разделе Типы конфигураций физического сетевого адаптера.
Дополнительные сведения о NDIS_SWITCH_NIC_INDEX значениях см. в разделе Значения индекса сетевого адаптера.
Примечание Расширение не может создавать или пересылать пакеты через подключение сетевого адаптера до тех пор, пока ребро протокола расширяемого коммутатора не вызовет запрос набора OID OID_SWITCH_NIC_CONNECT.
OID_SWITCH_NIC_CONNECT
Граница протокола расширяемого коммутатора выдает запрос на набор OID OID_SWITCH_NIC_CONNECT для уведомления расширений расширяемого коммутатора о том, что подключение сетевого адаптера расширяемого коммутатора полностью работает.
Расширение всегда должно пересылать этот запрос набора OID в стек драйверов расширяемого коммутатора. Расширение не должно завершить запрос.
После завершения запроса OID с NDIS_STATUS_SUCCESS подключение сетевого адаптера и порт расширяемого коммутатора полностью работают. Если подключение к сетевому адаптеру находится в этом состоянии, расширение может выполнять следующие действия:
Создайте или перенаправите пакетный трафик в подключение сетевого адаптера порта.
Проблемы с расширяемыми идентификаторами или индикаторами состояния коммутатора, которые используют порт в качестве исходного порта.
Вызовите 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 указания.