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


объединение 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 перенаправит этот пакет. Дополнительные сведения см. в разделе Гибридная пересылка.

Этот флаг не должен быть записан каким-либо расширением.

Примечание Этот флаг доступен только в NDIS 6.40 и более поздних версиях.

Reserved1

Этот элемент зарезервирован для дальнейшего использования NDIS.

Этот элемент зарезервирован для дальнейшего использования NDIS.

IsPacketDataSafe

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

SafePacketDataSize

Значение типа , указывающее количество последовательных байтов в пакетных данных, расположенных в доверенной памяти узла. Это значение в единицах байтов от начала данных пакета. Остальная часть данных пакета (если таковые имеются) после значения SafePacketDataSize находится в недоверенной общей памяти, к которой обращаются дочерние и родительские секции Hyper-V.

Дополнительные сведения см. в разделе «Примечания».

Примечание Этот член действителен, только если для элемента IsPacketDataSafe задано значение FALSE.

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. Эта память недоступна дочерней секции. Таким образом, гостевая операционная система, работающая в этом разделе, считается "безопасной" от несинхронизированных обновлений.

Если расширению расширяемого коммутатора требуется больше доверенного пространства для проверки данных пакетов, необходимо выполнить следующие действия:

  1. Расширение должно дублировать структуру NET_BUFFER_LIST пакета путем выделения структуры NET_BUFFER_LIST и NET_BUFFER . Затем расширение вызывает NdisCopyFromNetBufferToNetBuffer для дублирования структуры NET_BUFFER пакета. Если эта функция успешно выполняется, данные пакета копируются в доверенную память.
  2. Расширение должно вызвать CopyNetBufferListInfo , чтобы скопировать данные OOB пакета в повторяющийся пакет.
  3. После дублирования исходного пакета расширение должно получить 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

Переадресация пакетов в физические сетевые адаптеры

GetNetBufferListDestinations

Гибридная пересылка

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL

Обзор расширяемого коммутатора Hyper-V