Tipi di hash RSS

Panoramica

Il tipo hash RSS specifica la parte dei dati di rete ricevuti che deve essere usata da una scheda di interfaccia di rete per calcolare un valore hash RSS.

I driver overlying impostano il tipo hash, la funzione e la tabella indiretta. Il tipo hash che i set di driver overlying possono essere un subset del tipo che il driver miniport può supportare. Per altre informazioni, vedere Configurazione RSS.

Il tipo hash è un OR di combinazioni valide dei flag seguenti:

  • 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

Questi sono i set di combinazioni di flag validi:

  • IPv4 (combinazioni di NDIS_HASH_IPV4, NDIS_HASH_TCP_IPV4 e NDIS_HASH_UDP_IPV4)
  • IPv6 (combinazioni di NDIS_HASH_IPV6, NDIS_HASH_TCP_IPV6 e NDIS_HASH_UDP_IPV6)
  • IPv6 con intestazioni di estensione (combinazioni di NDIS_HASH_IPV6_EX, NDIS_HASH_TCP_IPV6_EX e NDIS_HASH_UDP_IPV6_EX)

Una scheda di interfaccia di rete deve supportare una delle combinazioni del set IPv4. Gli altri set e combinazioni sono facoltativi. Una scheda di interfaccia di rete può supportare più di un set alla volta. In questo caso, il tipo di dati ricevuti determina quale tipo hash usa la scheda di interfaccia di rete.

In generale, se la scheda di interfaccia di rete non può interpretare correttamente i dati ricevuti, non deve calcolare il valore hash. Ad esempio, se la scheda di interfaccia di rete supporta solo IPv4 e riceve un pacchetto IPv6, che non può interpretare correttamente, non deve calcolare il valore hash. Se la scheda di interfaccia di rete riceve un pacchetto per un tipo di trasporto che non supporta, non deve calcolare il valore hash. Ad esempio, se la scheda di interfaccia di rete riceve un pacchetto UDP quando si prevede di calcolare i valori hash per i pacchetti TCP, non deve calcolare il valore hash. In questo caso, il pacchetto viene elaborato come nel caso non RSS. Per altre informazioni sull'elaborazione di ricezione non RSS, vedere Elaborazione di ricezione non RSS.

Combinazioni di tipi hash IPv4

Le combinazioni di tipi hash validi nel set IPv4 sono:

NDIS_HASH_IPV4

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve calcolare il valore hash nei campi di intestazione IPv4 seguenti:

  • Source-IPv4-Address
  • Destinazione-IPv4-Address

Nota

Se una scheda di interfaccia di rete riceve un pacchetto con intestazioni IP e TCP, NDIS_HASH_TCP_IPV4 non deve essere sempre usato. Nel caso di un pacchetto IP frammentato, è necessario usare NDIS_HASH_IPV4. Include il primo frammento che contiene intestazioni IP e TCP.

NDIS_HASH_TCP_IPV4

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve analizzare i dati ricevuti per identificare un pacchetto IPv4 contenente un segmento TCP.

La scheda di interfaccia di rete deve identificare e ignorare tutte le opzioni IP presenti. Se la scheda di interfaccia di rete non può ignorare le opzioni IP, non deve calcolare un valore hash.

La scheda di interfaccia di rete deve calcolare il valore hash nei campi seguenti:

  • Source-IPv4-Address
  • Destinazione-IPv4-Address
  • Porta TCP di origine
  • Porta TCP di destinazione

NDIS_HASH_UDP_IPV4

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve analizzare i dati ricevuti per identificare un pacchetto IPv4 contenente un datagrammi UDP.

La scheda di interfaccia di rete deve identificare e ignorare tutte le opzioni IP presenti. Se la scheda di interfaccia di rete non può ignorare le opzioni IP, non deve calcolare un valore hash.

La scheda di interfaccia di rete deve calcolare il valore hash nei campi seguenti:

  • Source-IPv4-Address
  • Destinazione-IPv4-Address
  • Porta UDP di origine
  • Porta UDP di destinazione

NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV4

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire i calcoli hash come specificato per il caso NDIS_HASH_TCP_IPV4. Tuttavia, se il pacchetto non contiene un'intestazione TCP, la scheda di interfaccia di rete deve calcolare il valore hash come specificato per il caso NDIS_HASH_IPV4.

NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire i calcoli hash come specificato per il caso di NDIS_HASH_UDP_IPV4. Tuttavia, se il pacchetto non contiene un'intestazione UDP, la scheda di interfaccia di rete deve calcolare il valore hash come specificato per il caso NDIS_HASH_IPV4.

NDIS_HASH_TCP_IPV4 | NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire il calcolo hash come specificato dal trasporto nel pacchetto. Tuttavia, se il pacchetto non contiene un'intestazione TCP o UDP, la scheda di interfaccia di rete deve calcolare il valore hash come specificato per il caso di NDIS_HASH_IPV4.

Combinazioni di tipi hash IPv6

Le combinazioni di tipi hash validi nel set IPv6 sono:

NDIS_HASH_IPV6

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve calcolare l'hash nei campi seguenti:

  • Source-IPv6-Address
  • Destinazione-IPv6-Address

NDIS_HASH_TCP_IPV6

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve analizzare i dati ricevuti per identificare un pacchetto IPv6 contenente un segmento TCP. La scheda di interfaccia di rete deve identificare e ignorare eventuali intestazioni di estensione IPv6 presenti nel pacchetto. Se la scheda di interfaccia di rete non può ignorare le intestazioni di estensione IPv6, non deve calcolare un valore hash.

La scheda di interfaccia di rete deve calcolare il valore hash nei campi seguenti:

  • Source-IPv6 -Indirizzo
  • Destination-IPv6 -Indirizzo
  • Porta TCP di origine
  • Porta TCP di destinazione

NDIS_HASH_UDP_IPV6

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve analizzare i dati ricevuti per identificare un pacchetto IPv6 che contiene un datagramma UDP. La scheda di interfaccia di rete deve identificare e ignorare tutte le intestazioni di estensione IPv6 presenti nel pacchetto. Se la scheda di interfaccia di rete non può ignorare le intestazioni di estensione IPv6, non deve calcolare un valore hash.

La scheda di interfaccia di rete deve calcolare il valore hash nei campi seguenti:

  • Source-IPv6-Address
  • Destination-IPv6-Address
  • Porta UDP di origine
  • Porta UDP di destinazione

NDIS_HASH_TCP_IPV6 | NDIS_HASH_IPV6

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire i calcoli hash come specificato per il caso NDIS_HASH_TCP_IPV6. Tuttavia, se il pacchetto non contiene un'intestazione TCP, la scheda di interfaccia di rete deve calcolare l'hash come specificato per il caso NDIS_HASH_IPV6.

Ad esempio, se il pacchetto è frammentato, potrebbe non contenere l'intestazione TCP. In tal caso, la scheda di interfaccia di rete deve calcolare l'hash solo sull'intestazione IP.

NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire i calcoli hash come specificato per il caso NDIS_HASH_UDP_IPV6. Tuttavia, se il pacchetto non contiene un'intestazione UDP, la scheda di interfaccia di rete deve calcolare l'hash come specificato per il caso NDIS_HASH_IPV6.

Ad esempio, se il pacchetto è frammentato, potrebbe non contenere l'intestazione UDP. In tal caso, la scheda di interfaccia di rete deve calcolare l'hash solo sull'intestazione IP.

NDIS_HASH_TCP_IPV6 | NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire il calcolo hash come specificato dal trasporto nel pacchetto. Tuttavia, se il pacchetto non contiene un'intestazione TCP o UDP, la scheda di interfaccia di rete deve calcolare il valore hash come specificato nel caso NDIS_HASH_IPV6.

Ad esempio, se il pacchetto è frammentato, potrebbe non contenere l'intestazione TCP o UDP. In tal caso, la scheda di interfaccia di rete deve calcolare l'hash solo sull'intestazione IP.

IPv6 con le combinazioni di tipi hash delle intestazioni di estensione

Le combinazioni valide nel set di intestazioni di estensione IPv6 sono:

NDIS_HASH_IPV6_EX

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve calcolare l'hash nei campi seguenti:

  • Indirizzo home dell'opzione indirizzo home nell'intestazione delle opzioni di destinazione IPv6. Se l'intestazione dell'estensione non è presente, usare l'indirizzo IPv6 di origine.
  • Indirizzo IPv6 contenuto nell'intestazione Routing-Header-Type-2 dall'intestazione dell'estensione associata. Se l'intestazione dell'estensione non è presente, usare l'indirizzo IPv6 di destinazione.

NDIS_HASH_TCP_IPV6_EX

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve calcolare l'hash nei campi seguenti:

  • Indirizzo home dell'opzione indirizzo home nell'intestazione delle opzioni di destinazione IPv6. Se l'intestazione dell'estensione non è presente, usare l'indirizzo IPv6 di origine.
  • Indirizzo IPv6 contenuto nell'intestazione Routing-Header-Type-2 dall'intestazione dell'estensione associata. Se l'intestazione dell'estensione non è presente, usare l'indirizzo IPv6 di destinazione.
  • Porta TCP di origine
  • Porta TCP di destinazione

NDIS_HASH_UDP_IPV6_EX

Se questo flag è impostato da solo, la scheda di interfaccia di rete deve calcolare l'hash nei campi seguenti:

  • Indirizzo home dell'opzione indirizzo home nell'intestazione delle opzioni di destinazione IPv6. Se l'intestazione dell'estensione non è presente, usare l'indirizzo IPv6 di origine.
  • Indirizzo IPv6 contenuto nell'intestazione Routing-Header-Type-2 dall'intestazione dell'estensione associata. Se l'intestazione dell'estensione non è presente, usare l'indirizzo IPv6 di destinazione.
  • Porta UDP di origine
  • Porta UDP di destinazione

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_IPV6_EX

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire i calcoli hash come specificato per il caso NDIS_HASH_TCP_IPV6_EX. Tuttavia, se il pacchetto non contiene un'intestazione TCP, la scheda di interfaccia di rete deve calcolare l'hash come specificato per il caso NDIS_HASH_IPV6_EX.

NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire i calcoli hash come specificato per il caso NDIS_HASH_UDP_IPV6_EX. Tuttavia, se il pacchetto non contiene un'intestazione UDP, la scheda di interfaccia di rete deve calcolare l'hash come specificato per il caso NDIS_HASH_IPV6_EX.

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

Se questa combinazione di flag è impostata, la scheda di interfaccia di rete deve eseguire i calcoli hash come specificato dal trasporto di pacchetti. Tuttavia, se il pacchetto non contiene un'intestazione TCP o UDP, la scheda di interfaccia di rete deve calcolare l'hash come specificato per il caso NDIS_HASH_IPV6_EX.

Nota

Se un driver miniport segnala NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX e/o NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX funzionalità per una scheda di interfaccia di rete, la scheda di interfaccia di rete deve calcolare i valori hash (sui campi nelle intestazioni dell'estensione IPv6) in base ai tipi hash di estensione IPv6 impostati dal driver del protocollo. La scheda di interfaccia di rete può archiviare il tipo hash dell'estensione o il tipo hash normale nella struttura NET_BUFFER_LIST del pacchetto IPv6 per cui viene calcolato un valore hash.

Un driver miniport imposta il tipo hash in una struttura NET_BUFFER_LIST prima di indicare i dati ricevuti. Per altre informazioni, vedere Indicazione dei dati di ricezione RSS.