Leggere in inglese

Condividi tramite


Tipi di hash RSS

Panoramica

Il tipo di hashing RSS specifica la porzione dei dati di rete ricevuti che una scheda di rete (NIC) deve utilizzare per calcolare un valore hash RSS.

I driver sovraordinati impostano il tipo di hash, la funzione e la tabella di indirizzamento. Il tipo di hash che il driver sovrastante può impostare può essere un sottoinsieme 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 valide:

  • 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ù set alla volta. In questo caso, il tipo di dati ricevuti determina il tipo hash usato dalla 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 dovrebbe 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 ulteriori informazioni sull'elaborazione della ricezione non RSS, vedere Non-RSS Receive Processing.

Combinazioni di tipi hash IPv4

Le combinazioni valide del tipo hash 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:

  • Origine-IPv4-Address
  • Destinazione-IPv4-Address

Nota

Se una scheda di interfaccia di rete riceve un pacchetto con intestazioni IP e TCP, non è consigliabile usare sempre NDIS_HASH_TCP_IPV4. Nel caso di un pacchetto IP frammentato, è necessario usare NDIS_HASH_IPV4. Include il primo frammento che contiene sia intestazioni IP che 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 che contiene 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:

  • Origine-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 che contiene un datagramma 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:

  • Origine-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 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 NDIS_HASH_IPV4.

Combinazioni di tipi hash IPv6

Le combinazioni valide del tipo hash 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:

  • Origine-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 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 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:

  • Origine-IPv6-Address
  • Destinazione-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'header IP.

NDIS_HASH_TCP_IPV6 | NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Se questa combinazione di flag è impostata, la NIC 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 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 combinazioni di tipi hash dei header 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 dall'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'header di estensione associato. 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 di casa dall'opzione indirizzo di casa 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 dall'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 che è contenuto nell'intestazione Routing-Header-Type-2, proveniente dall'intestazione di 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 la capacità NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX e/o NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX per una scheda di interfaccia di rete, la NIC deve calcolare i valori hash (sui campi nelle intestazioni dell'estensione IPv6) secondo i tipi di hash dell'estensione IPv6 stabiliti dal driver del protocollo. La scheda di interfaccia di rete può archiviare il tipo hash di 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 Che indica i dati di ricezione RSS.