Прочитать на английском

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


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.