Типы хэширования RSS

Общие сведения

Тип хэширования RSS указывает часть полученных сетевых данных, которую сетевая карта должна использовать для вычисления значения хэша RSS.

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

Тип хэша — это ИЛИ допустимых сочетаний следующих флагов:

  • NDIS_HASH_IPV4
  • NDIS_HASH_TCP_IPV4
  • NDIS_HASH_UDP_IPV4
  • NDIS_HASH_IPV6
  • NDIS_HASH_TCP_IPV6
  • NDIS_HASH_UDP_IPV6
  • NDIS_HASH_IPV6_EX
  • NDIS_HASH_TCP_IPV6_EX
  • NDIS_HASH_UDP_IPV6_EX

Ниже приведены наборы допустимых сочетаний флагов:

  • IPv4 (комбинации NDIS_HASH_IPV4, NDIS_HASH_TCP_IPV4 и NDIS_HASH_UDP_IPV4)
  • IPv6 (сочетания NDIS_HASH_IPV6, NDIS_HASH_TCP_IPV6 и NDIS_HASH_UDP_IPV6)
  • IPv6 с заголовками расширений (сочетания NDIS_HASH_IPV6_EX, NDIS_HASH_TCP_IPV6_EX и NDIS_HASH_UDP_IPV6_EX)

Сетевой адаптер должен поддерживать одно из сочетаний из набора IPv4. Другие наборы и сочетания являются необязательными. Сетевой адаптер может поддерживать несколько наборов одновременно. В этом случае тип полученных данных определяет, какой хэш-тип использует сетевой адаптер.

Как правило, если сетевой адаптер не может правильно интерпретировать полученные данные, он не должен вычислять хэш-значение. Например, если сетевой адаптер поддерживает только протокол IPv4 и получает пакет IPv6, который не может интерпретировать правильно, он не должен вычислять хэш-значение. Если сетевой адаптер получает пакет для не поддерживаемого типа транспорта, он не должен вычислять хэш-значение. Например, если сетевой адаптер получает UDP-пакет при вычислении значений хэша для TCP-пакетов, он не должен вычислять хэш-значение. В этом случае пакет обрабатывается как в случае, отличном от RSS. Дополнительные сведения об обработке получения, отличной от RSS, см. в разделе Обработка получения без RSS.

Сочетания хэш-типов IPv4

Допустимые сочетания хэш-типов в наборе IPv4:

NDIS_HASH_IPV4

Если установлен только этот флаг, сетевой адаптер должен вычислить хэш-значение по следующим полям заголовка IPv4:

  • Исходный IPv4-адрес
  • IPv4-адрес назначения

Примечание

Если сетевой адаптер получает пакет с заголовками IP и TCP, NDIS_HASH_TCP_IPV4 не всегда следует использовать. В случае фрагментированного IP-пакета необходимо использовать NDIS_HASH_IPV4. Сюда входит первый фрагмент, содержащий заголовки IP и TCP.

NDIS_HASH_TCP_IPV4

Если установлен только этот флаг, сетевой адаптер должен проанализировать полученные данные, чтобы определить пакет IPv4, содержащий сегмент TCP.

Сетевой адаптер должен определять и пропускать все имеющиеся параметры IP-адресов. Если сетевой адаптер не может пропустить какие-либо ip-параметры, он не должен вычислять хэш-значение.

Сетевой адаптер должен вычислить хэш-значение по следующим полям:

  • Исходный IPv4-адрес
  • IPv4-адрес назначения
  • Исходный TCP-порт
  • TCP-порт назначения

NDIS_HASH_UDP_IPV4

Если установлен только этот флаг, сетевой адаптер должен проанализировать полученные данные, чтобы определить пакет IPv4, содержащий датаграмму UDP.

Сетевой адаптер должен определять и пропускать все имеющиеся параметры IP-адресов. Если сетевой адаптер не может пропустить какие-либо ip-параметры, он не должен вычислять хэш-значение.

Сетевой адаптер должен вычислить хэш-значение по следующим полям:

  • Исходный IPv4-адрес
  • IPv4-адрес назначения
  • Исходный UDP-порт
  • UDP-порт назначения

NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV4

Если задано это сочетание флагов, сетевой адаптер должен выполнить хэш-вычисления, как указано для NDIS_HASH_TCP_IPV4 случае. Однако если пакет не содержит заголовка TCP, сетевой адаптер должен вычислить хэш-значение, указанное для NDIS_HASH_IPV4 случае.

NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

Если задано это сочетание флагов, сетевой адаптер должен выполнить хэш-вычисления, указанные для NDIS_HASH_UDP_IPV4 случае. Однако если пакет не содержит заголовок UDP, сетевой адаптер должен вычислить хэш-значение, указанное для NDIS_HASH_IPV4 случае.

NDIS_HASH_TCP_IPV4 | NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

Если задано это сочетание флагов, сетевой адаптер должен выполнить хэш-вычисление в соответствии с транспортом в пакете. Однако если пакет не содержит заголовка TCP или UDP, сетевой адаптер должен вычислить хэш-значение, указанное для NDIS_HASH_IPV4 случае.

Сочетания хэш-типов IPv6

Допустимые сочетания хэш-типов в наборе IPv6:

NDIS_HASH_IPV6

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

  • Исходный IPv6-адрес
  • IPv6-адрес назначения

NDIS_HASH_TCP_IPV6

Если установлен только этот флаг, сетевой адаптер должен проанализировать полученные данные, чтобы определить пакет IPv6, содержащий сегмент TCP. Сетевой адаптер должен определять и пропускать все заголовки расширений IPv6, которые присутствуют в пакете. Если сетевой адаптер не может пропустить заголовки расширения IPv6, он не должен вычислять хэш-значение.

Сетевой адаптер должен вычислить хэш-значение по следующим полям:

  • Source-IPv6 -Адрес
  • Destination-IPv6 -Адрес
  • Исходный TCP-порт
  • TCP-порт назначения

NDIS_HASH_UDP_IPV6

Если установлен только этот флаг, сетевой адаптер должен проанализировать полученные данные, чтобы определить пакет IPv6, содержащий датаграмму UDP. Сетевой адаптер должен определять и пропускать все заголовки расширений IPv6, которые присутствуют в пакете. Если сетевой адаптер не может пропустить заголовки расширения IPv6, он не должен вычислять хэш-значение.

Сетевой адаптер должен вычислить хэш-значение по следующим полям:

  • Исходный IPv6-адрес
  • IPv6-адрес назначения
  • Исходный UDP-порт
  • UDP-порт назначения

NDIS_HASH_TCP_IPV6 | NDIS_HASH_IPV6

Если задано это сочетание флагов, сетевой адаптер должен выполнять хэш-вычисления, как указано для NDIS_HASH_TCP_IPV6 случае. Однако если пакет не содержит заголовка TCP, сетевой адаптер должен вычислить хэш, как указано для NDIS_HASH_IPV6 случае.

Например, если пакет фрагментирован, он может не содержать заголовок TCP. В этом случае сетевой адаптер должен вычислять хэш только по ip-заголовку.

NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Если эта комбинация флагов задана, сетевой адаптер должен выполнять хэш-вычисления, как указано для NDIS_HASH_UDP_IPV6 случае. Однако если пакет не содержит заголовок UDP, сетевой адаптер должен вычислить хэш, как указано для NDIS_HASH_IPV6 случае.

Например, если пакет фрагментирован, он может не содержать заголовок UDP. В этом случае сетевой адаптер должен вычислять хэш только по ip-заголовку.

NDIS_HASH_TCP_IPV6 | NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Если задано это сочетание флагов, сетевой адаптер должен выполнить хэш-вычисление в соответствии с транспортом в пакете. Однако если пакет не содержит заголовка TCP или UDP, сетевой адаптер должен вычислить хэш-значение, указанное в NDIS_HASH_IPV6 случае.

Например, если пакет фрагментирован, он может не содержать заголовок TCP или UDP. В этом случае сетевой адаптер должен вычислять хэш только по ip-заголовку.

IPv6 с сочетаниями хэш-типов заголовков расширений

Допустимые сочетания в IPv6 с набором заголовков расширений:

NDIS_HASH_IPV6_EX

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

  • Домашний адрес из параметра "Домашний адрес" в заголовке параметров назначения IPv6. Если заголовок расширения отсутствует, используйте исходный IPv6-адрес.
  • IPv6-адрес, содержащийся в routing-Header-Type-2 из связанного заголовка расширения. Если заголовок расширения отсутствует, используйте IPv6-адрес назначения.

NDIS_HASH_TCP_IPV6_EX

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

  • Домашний адрес из параметра "Домашний адрес" в заголовке параметров назначения IPv6. Если заголовок расширения отсутствует, используйте исходный IPv6-адрес.
  • IPv6-адрес, содержащийся в routing-Header-Type-2 из связанного заголовка расширения. Если заголовок расширения отсутствует, используйте IPv6-адрес назначения.
  • Исходный TCP-порт
  • TCP-порт назначения

NDIS_HASH_UDP_IPV6_EX

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

  • Домашний адрес из параметра "Домашний адрес" в заголовке параметров назначения IPv6. Если заголовок расширения отсутствует, используйте исходный IPv6-адрес.
  • IPv6-адрес, содержащийся в routing-Header-Type-2 из связанного заголовка расширения. Если заголовок расширения отсутствует, используйте IPv6-адрес назначения.
  • Исходный UDP-порт
  • UDP-порт назначения

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_IPV6_EX

Если задано это сочетание флагов, сетевой адаптер должен выполнить хэш-вычисления, как указано для NDIS_HASH_TCP_IPV6_EX случае. Однако если пакет не содержит заголовка TCP, сетевой адаптер должен вычислить хэш, указанный для NDIS_HASH_IPV6_EX случае.

NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

Если задано это сочетание флагов, сетевой адаптер должен выполнить хэш-вычисления, как указано для NDIS_HASH_UDP_IPV6_EX случае. Однако если пакет не содержит заголовок UDP, сетевой адаптер должен вычислить хэш, указанный для NDIS_HASH_IPV6_EX случае.

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

Если эта комбинация флагов задана, сетевой адаптер должен выполнять хэш-вычисления в соответствии с транспортом пакетов. Однако если пакет не содержит заголовка TCP или UDP, сетевой адаптер должен вычислить хэш, указанный для NDIS_HASH_IPV6_EX случае.

Примечание

Если драйвер мини-порта сообщает о NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX и (или) NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX возможности для сетевого адаптера, сетевой адаптер должен вычислять хэш-значения (по полям в заголовках расширения IPv6) в соответствии с типами хэша расширения IPv6, заданными драйвером протокола. Сетевой адаптер может хранить тип хэша расширения или обычный хэш-тип в NET_BUFFER_LIST структуре пакета IPv6, для которого вычисляется хэш-значение.

Драйвер мини-порта задает тип хэша в структуре NET_BUFFER_LIST перед указанием полученных данных. Дополнительные сведения см. в разделе Указание данных получения RSS.