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


Hyper-V расширяемый переключатель отправки и получения флагов

Примечание Эта страница предполагает, что вы знакомы с информацией и диаграммами в обзоре Hyper-V расширяемого переключателя, а также гибридной пересылки.

Трафик пакетов, который проходит через расширяемый коммутаторный путь данных Hyper-V, обрабатывается расширениями следующим образом:

  • Расширение получает пакет из входящего пути передачи данных при вызове функции FilterSendNetBufferLists. Расширение перенаправляет пакет в основные расширения по пути входящих данных путем вызова NdisFSendNetBufferLists. Фильтрация и расширения пересылки также могут удалять пакет из входящего пути данных, вызывая NdisFSendNetBufferListsComplete.

  • Расширение получает пакет из траектории исходящих данных, когда вызывается функция FilterReceiveNetBufferLists. Расширение перенаправит пакет на вышележащие расширения в пути исходящих данных, вызывая NdisFIndicateReceiveNetBufferLists. Фильтрация и перенаправление расширений также могут исключить пакет из маршрута данных исходящего трафика, вызвав NdisFReturnNetBufferLists.

Следующие флаги можно задать в параметре SendFlags параметра FilterSendNetBufferLists или NdisFSendNetBufferLists:

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
Если этот флаг задан, все пакеты в связанном списке структур NET_BUFFER_LIST были получены из одного и того же Hyper-V расширяемого исходного порта коммутатора.

При вызове NDIS FilterSendNetBufferListsэтот флаг будет установлен, если интерфейс расширяемого коммутатора сгруппировал несколько пакетов из одного исходного порта. Для оптимальной производительности расширения должны поддерживать эту группировку и задавать этот флаг при вызове NdisFSendNetBufferLists. Расширение также может добавлять любые исходные или клонированные пакеты в связанный список структур NET_BUFFER_LIST, если расширение использует тот же исходный порт, что и другие пакеты в списке.

Примечание Если каждый пакет в связанном списке структур NET_BUFFER_LIST использует тот же исходный порт, расширение должно задать флаг NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE в параметре SendCompleteFlags параметра NdisFSendNetBufferListsComplete при завершении запроса на отправку.

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
Если этот флаг задан, все пакеты в связанном списке структур NET_BUFFER_LIST перенаправляются в один и тот же расширяемый порт назначения коммутатора.

Расширение пересылки может использовать этот флаг для связанного списка структур NET_BUFFER_LIST, которые оно перенаправит на пути входящего трафика после определения портов назначения каждого пакета. Этот флаг используется и удаляется базовым краем минипорта расширяемого коммутатора перед пересылкой пакетов вверх по пути исходящих данных.

Расширения для записи и фильтрации не могут использовать этот флаг.

примечание Расширение пересылки определяет только порты назначения пакета для пакетов, отличных от NVGRE. Если пакет является пакетом NVGRE, компонент Hyper-V Network Virtualization (HNV) определяет порты назначения пакета и перенаправит пакет. Дополнительные сведения о гибридной пересылке см. в .

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

Примечание Расширение пересылки не должно задавать этот флаг для связанного списка пакетов с несколькими конечными портами.

Следующие флаги могут быть установлены в параметре ReceiveFlags функции FilterReceiveNetBufferLists или NdisFIndicateReceiveNetBufferLists:

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
Если этот флаг задан, все пакеты в связанном списке структур NET_BUFFER_LIST были получены из одного и того же Hyper-V расширяемого исходного порта коммутатора.

При вызове NDIS FilterReceiveNetBufferListsэтот флаг будет установлен, если расширяемый коммутатор сгруппировал несколько пакетов из одного исходного порта. Для оптимальной производительности расширения должны сохранять эту группировку и задавать этот флаг при вызове NdisMIndicateReceiveNetBufferLists. Расширения также должны добавлять все исходные или клонированные пакеты в связанный список структур NET_BUFFER_LIST, если пакет имеет тот же исходный порт, что и другие пакеты в списке.

Примечание Если каждый пакет в связанном списке структур NET_BUFFER_LIST использует одинаковый исходный порт, расширение должно задать флаг NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE в параметре ReturnFlags в фильтре FilterReturnNetBufferLists при завершении запроса на получение. Расширение должно задать этот флаг в параметре ReturnFlags, если оно вызывает NdisFReturnNetBufferLists, чтобы возвращать пакеты, которые оно не создало или не клонировало.

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
Если этот флаг задан, все пакеты в связанном списке структур NET_BUFFER_LIST перенаправляются в один и тот же расширяемый порт назначения коммутатора.

При вызове NDIS FilterReceiveNetBufferListsэтот флаг будет установлен, если расширяемый коммутатор сгруппировал несколько пакетов с одинаковыми конечными портами. Для обеспечения наилучшей производительности расширения должны удерживать эту группировку и устанавливать этот флаг при вызове NdisMIndicateReceiveNetBufferLists. Расширения также должны добавлять все исходные или клонированные пакеты в связанный список структур NET_BUFFER_LIST, если пакет имеет те же порты назначения, что и другие пакеты в списке.

Примечание Если расширение вызывает NdisFIndicateReceiveNetBufferLists, оно не должно задавать флаг NDIS_RECEIVE_FLAGS_RESOURCES в параметре ReceiveFlags. Расширяемый интерфейс коммутатора игнорирует этот флаг и завершит указание получения путем вызова FilterReturnNetBufferLists.