Поделиться через


Типы данных контекста переадресации расширяемого коммутатора Hyper-V

Структура NET_BUFFER_LIST для каждого пакета, который проходит по пути данных расширяемого коммутатора Hyper-V, содержит данные вне диапазона (OOB). Эти данные указывают исходный порт, из которого поступил пакет, а также один или несколько портов назначения для доставки пакетов. Эти данные OOB называются контекстом переадресации расширяемого коммутатора.

Для доступа к контексту переадресации расширяемого коммутатора в структуре NET_BUFFER_LIST пакета объявлены следующие типы данных:

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO
Это 64-разрядное объединение, содержащее характеристики пересылки пакета. Эти данные включают идентификаторы исходного порта и подключения к сетевому адаптеру, из которого исходит пакет. Эти данные также включают количество неиспользуемых элементов, доступных в массиве портов назначения.

Расширение расширяемого коммутатора может получить доступ к этим данным с помощью макроса NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
Эта структура определяет массив портов назначения для пакета. Каждый элемент в этом массиве имеет формат структуры NDIS_SWITCH_PORT_DESTINATION .

Структура NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY содержит элементы, определяющие текущее количество элементов, а также количество используемых элементов в массиве.

Расширение расширяемого коммутатора может получить этот массив, вызвав функцию GetNetBufferListDestinations . Если драйвер добавляет или изменяет элементы в массиве для пакета с несколькими портами назначения, он должен вызвать функцию UpdateNetBufferListDestinations . Эта функция фиксирует эти изменения в массиве портов назначения в контексте пересылки пакета.

Примечание Чтобы зафиксировать изменения в пакете только с одним портом назначения, драйверу эффективнее вызвать функцию AddNetBufferListDestination .

NDIS_SWITCH_PORT_DESTINATION
Эта структура определяет порт назначения для пакета. Для пакетов с одним портом назначения в массиве портов назначения существует только один элемент NDIS_SWITCH_PORT_DESTINATION . Для пакетов с несколькими портами назначения в массиве есть один или несколько таких элементов.

После того как расширение расширяемого коммутатора вызовет Метод GetNetBufferListDestinations для получения массива портов назначения пакета, оно может получить доступ к отдельным элементам в массиве с помощью макроса NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX .