объединение NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO (ndis.h)
Объединение NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO указывает сведения для переадресации пакета на один или несколько портов расширяемого коммутатора Hyper-V.
Эти сведения содержатся в данных о внеполосном подключении (OOB) структуры NET_BUFFER_LIST пакета.
Синтаксис
typedef union _NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO {
UINT64 AsUINT64;
struct {
UINT32 NumAvailableDestinations : 16;
UINT32 SourcePortId : 16;
UINT32 SourceNicIndex : 8;
UINT32 NativeForwardingRequired : 1;
#if ...
UINT32 Reserved1 : 1;
#else
UINT32 Reserved1 : 2;
#endif
UINT32 IsPacketDataSafe : 1;
UINT32 SafePacketDataSize : 12;
UINT32 IsPacketDataUncached : 1;
UINT32 IsSafePacketDataUncached : 1;
UINT32 Reserved2 : 7;
};
} NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO, *PNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO;
Члены
AsUINT64
Полное 64-разрядное значение NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO .
NumAvailableDestinations
Значение типа , указывающее количество неиспользуемых элементов портов назначения расширяемого коммутатора в структуре NET_BUFFER_LIST . Дополнительные сведения см. в разделе «Примечания».
SourcePortId
Идентификатор порта расширяемого коммутатора источника, из которого исходит NET_BUFFER_LIST .
SourceNicIndex
Значение UINT32, указывающее индекс исходного сетевого адаптера, подключенного к порту расширяемого коммутатора, заданному членом SourcePortId .
Дополнительные сведения об этом значении индекса см. в разделе Значения индекса сетевого адаптера.
NativeForwardingRequired
Если для этого элемента задано значение TRUE, пакет является пакетом NVGRE, а компонент виртуализации сети Hyper-V (HNV) расширяемого коммутатора Hyper-V перенаправит этот пакет. Дополнительные сведения см. в разделе Гибридная пересылка.
Этот флаг не должен быть записан каким-либо расширением.
Reserved1
Этот элемент зарезервирован для дальнейшего использования NDIS.
Этот элемент зарезервирован для дальнейшего использования NDIS.
IsPacketDataSafe
Если для этого элемента задано значение TRUE, все данные пакетов поступают из доверенной памяти узла.
SafePacketDataSize
Значение типа , указывающее количество последовательных байтов в пакетных данных, расположенных в доверенной памяти узла. Это значение в единицах байтов от начала данных пакета. Остальная часть данных пакета (если таковые имеются) после значения SafePacketDataSize находится в недоверенной общей памяти, к которой обращаются дочерние и родительские секции Hyper-V.
Дополнительные сведения см. в разделе «Примечания».
IsPacketDataUncached
Если этот флаг не установлен, все данные пакета кэшируются. Если он задан, часть или все данные не кэшируются. Если этот параметр задан, проверка поле IsSafePacketDataUncached, чтобы узнать, кэшируется ли хотя бы часть SafePacketData.
IsSafePacketDataUncached
Если установлен флаг IsPacketDataUncached , это поле указывает, кэшируется ли часть пакета SafePacketData. Если это так, см. поле SafePacketDataSize, чтобы узнать , сколько байтов кэшировано.
Reserved2
Этот элемент зарезервирован для дальнейшего использования NDIS.
Комментарии
Расширения расширяемого коммутатора могут использовать макрос NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL для доступа к NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO объединению в NET_BUFFER_LIST структуре.
Элемент NumAvailableDestinationsNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO объединения указывает количество неиспользуемых элементов порта назначения расширяемого коммутатора в структуре NET_BUFFER_LIST . Каждый порт назначения расширяемого коммутатора определяется элементом NDIS_SWITCH_PORT_DESTINATION в структуре NDIS_SWITCH_FORWARDING_DESTINATION_ARRAYструктуры NET_BUFFER_LIST . Расширение расширяемого коммутатора вызывает Метод GetNetBufferListDestinations для получения текущего NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY в структуре NET_BUFFER_LIST .
Член NativeForwardingRequired указывает, является ли пакет пакетом NVGRE. Если задано значение TRUE, пакет является пакетом NVGRE, а расширение переадресации не определяет массив портов назначения перенаправления пакета, хотя может добавлять или исключать порты назначения в массиве. Дополнительные сведения см. в разделе Гибридная пересылка.
Флаг IsPacketDataUncached позволяет расширяемым расширениям коммутатора определить, кэшируются ли часть или все данные пакета. Если этот флаг установлен, часть или все данные не кэшируются, а флаг IsSafePacketDataUncached сообщает расширению, кэшируется ли часть данных безопасного пакета. Если данные безопасного пакета кэшируются, то член SafePacketDataSize указывает, сколько байтов кэшируется.
SafePacketDataSize указывает размер данных пакета, расположенных в локальной или доверенной памяти в родительской операционной системе родительского раздела Hyper-V. Эта память недоступна дочерней секции. Таким образом, гостевая операционная система, работающая в этом разделе, считается "безопасной" от несинхронизированных обновлений.
Если расширению расширяемого коммутатора требуется больше доверенного пространства для проверки данных пакетов, необходимо выполнить следующие действия:
- Расширение должно дублировать структуру NET_BUFFER_LIST пакета путем выделения структуры NET_BUFFER_LIST и NET_BUFFER . Затем расширение вызывает NdisCopyFromNetBufferToNetBuffer для дублирования структуры NET_BUFFER пакета. Если эта функция успешно выполняется, данные пакета копируются в доверенную память.
- Расширение должно вызвать CopyNetBufferListInfo , чтобы скопировать данные OOB пакета в повторяющийся пакет.
- После дублирования исходного пакета расширение должно получить NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO объединение в повторяемом пакете с помощью макроса NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL . Расширение должно задать для члена IsPacketDataSafeзначение TRUE.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.30 и более поздних версиях. |
Верхняя часть | ndis.h (включая Ndis.h) |
См. также раздел
Переадресация пакетов на порты расширяемого коммутатора Hyper-V
Переадресация пакетов в физические сетевые адаптеры
NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по