Partager via


Types de hachage RSS

Aperçu

Le type de hachage RSS spécifie la partie des données réseau reçues qu’une carte réseau doit utiliser pour calculer une valeur de hachage RSS.

Les pilotes superposés définissent le type de hachage, la fonction et la table d'indirection. Le type de hachage que les ensembles de pilotes superposés peuvent définir peut être un sous-ensemble du type que le pilote miniport peut prendre en charge. Pour plus d’informations, consultez Configuration RSS.

Le type de hachage est une OR de combinaisons valides des indicateurs suivants :

  • 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

Voici les ensembles de combinaisons d’indicateurs valides :

  • IPv4 (combinaisons de NDIS_HASH_IPV4, de NDIS_HASH_TCP_IPV4 et de NDIS_HASH_UDP_IPV4)
  • IPv6 (combinaisons de NDIS_HASH_IPV6, de NDIS_HASH_TCP_IPV6 et de NDIS_HASH_UDP_IPV6)
  • IPv6 avec des en-têtes d’extension (combinaisons de NDIS_HASH_IPV6_EX, de NDIS_HASH_TCP_IPV6_EX et de NDIS_HASH_UDP_IPV6_EX)

Une carte réseau doit prendre en charge l’une des combinaisons de l’ensemble IPv4. Les autres jeux et combinaisons sont facultatifs. Une carte réseau peut prendre en charge plusieurs ensembles à la fois. Dans ce cas, le type de données reçues détermine le type de hachage utilisé par la carte réseau.

En général, si la carte réseau ne peut pas interpréter correctement les données reçues, elle ne doit pas calculer la valeur de hachage. Par exemple, si la carte réseau prend uniquement en charge IPv4 et qu’elle reçoit un paquet IPv6, qu’elle ne peut pas interpréter correctement, elle ne doit pas calculer la valeur de hachage. Si la carte réseau reçoit un paquet pour un type de transport qu’il ne prend pas en charge, il ne doit pas calculer la valeur de hachage. Par exemple, si la carte réseau reçoit un paquet UDP lorsqu’elle est censée calculer des valeurs de hachage pour les paquets TCP, elle ne doit pas calculer la valeur de hachage. Dans ce cas, le paquet est traité comme dans le cas non RSS. Pour plus d’informations sur le traitement de réception non RSS, consultez Traitement de réception non RSS.

Combinaisons de types de hachage IPv4

Les combinaisons de types de hachage valides dans l’ensemble IPv4 sont les suivantes :

NDIS_HASH_IPV4

Si cet indicateur seul est défini, la carte réseau doit calculer la valeur de hachage sur les champs d’en-tête IPv4 suivants :

  • Source -IPv4-Address
  • Destination -IPv4-Address

Remarque

Si une carte réseau reçoit un paquet comportant à la fois des en-têtes IP et TCP, NDIS_HASH_TCP_IPV4 ne doit pas toujours être utilisé. Dans le cas d’un paquet IP fragmenté, NDIS_HASH_IPV4 devez être utilisé. Cela inclut le premier fragment qui contient les en-têtes IP et TCP.

NDIS_HASH_TCP_IPV4

Si cet indicateur seul est défini, la carte réseau doit analyser les données reçues pour identifier un paquet IPv4 qui contient un segment TCP.

La NIC doit identifier et ignorer toute option IP présente. Si la carte réseau ne peut pas ignorer les options IP, elle ne doit pas calculer de valeur de hachage.

La carte réseau doit calculer la valeur de hachage sur les champs suivants :

  • Source -IPv4-Address
  • Destination -IPv4-Address
  • Source TCP Port
  • Port TCP de destination

NDIS_HASH_UDP_IPV4

Si cet indicateur seul est défini, la carte réseau doit analyser les données reçues pour identifier un paquet IPv4 qui contient un datagramme UDP.

La NIC doit identifier et ignorer toute option IP présente. Si la carte réseau ne peut pas ignorer les options IP, elle ne doit pas calculer de valeur de hachage.

La NIC doit calculer la valeur de hachage sur les champs suivants :

  • Source -IPv4-Address
  • Destination -IPv4-Address
  • Source UDP Port
  • Port UDP de destination

NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV4

Si cette combinaison d’indicateurs est définie, la carte réseau doit effectuer les calculs de hachage comme spécifié pour le cas NDIS_HASH_TCP_IPV4. Toutefois, si le paquet ne contient pas d’en-tête TCP, la carte réseau doit calculer la valeur de hachage spécifiée pour le cas NDIS_HASH_IPV4.

NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

Si cette combinaison d’indicateurs est définie, l'adaptateur réseau doit effectuer les calculs de hachage comme spécifié pour le cas NDIS_HASH_UDP_IPV4. Toutefois, si le paquet ne contient pas d’en-tête UDP, la carte réseau doit calculer la valeur de hachage spécifiée pour le cas NDIS_HASH_IPV4.

NDIS_HASH_TCP_IPV4 | NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

Si cette combinaison d’indicateurs est définie, la carte réseau doit effectuer le calcul de hachage tel que spécifié par le protocole de transport dans le paquet. Toutefois, si le paquet ne contient pas d’en-tête TCP ou UDP, la carte réseau doit calculer la valeur de hachage spécifiée pour le cas NDIS_HASH_IPV4.

Combinaisons de types de hachage IPv6

Les combinaisons de types de hachage valides dans l’ensemble IPv6 sont les suivantes :

NDIS_HASH_IPV6

Si cet indicateur seul est défini, la carte réseau doit calculer le hachage sur les champs suivants :

  • Source -IPv6-Address
  • Destination -IPv6-Address

NDIS_HASH_TCP_IPV6

Si cet indicateur seul est défini, la carte réseau doit analyser les données reçues pour identifier un paquet IPv6 qui contient un segment TCP. La carte réseau doit identifier et ignorer les en-têtes d’extension IPv6 présents dans le paquet. Si la carte réseau ne peut pas ignorer les en-têtes d’extension IPv6, elle ne doit pas calculer de valeur de hachage.

La carte réseau (NIC) doit calculer la valeur de hachage sur les champs suivants :

  • Source-IPv6 -Address
  • Destination-IPv6 -Address
  • Source TCP Port
  • Port TCP de destination

NDIS_HASH_UDP_IPV6

Si cet indicateur seul est défini, la carte réseau doit analyser les données reçues pour identifier un paquet IPv6 qui contient un datagramme UDP. La carte réseau doit identifier et ignorer les en-têtes d’extension IPv6 présents dans le paquet. Si la carte réseau ne peut pas ignorer les en-têtes d’extension IPv6, elle ne doit pas calculer de valeur de hachage.

La carte réseau doit calculer la valeur de hachage sur les champs suivants :

  • Source -IPv6-Address
  • Destination -IPv6-Address
  • Source UDP Port
  • Port UDP de Destination

NDIS_HASH_TCP_IPV6 | NDIS_HASH_IPV6

Si cette combinaison d’indicateurs est définie, la carte réseau doit effectuer les calculs de hachage comme spécifié pour le cas NDIS_HASH_TCP_IPV6. Toutefois, si le paquet ne contient pas d’en-tête TCP, la carte réseau doit calculer le hachage tel que spécifié pour le cas NDIS_HASH_IPV6.

Par exemple, si le paquet est fragmenté, il peut ne pas contenir l’en-tête TCP. Dans ce cas, la carte réseau doit calculer le hachage uniquement sur l’en-tête IP.

NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Si cette combinaison d’indicateurs est définie, la carte réseau doit effectuer les calculs de hachage comme spécifié pour le cas NDIS_HASH_UDP_IPV6. Toutefois, si le paquet ne contient pas d’en-tête UDP, la carte réseau doit calculer le hachage tel que spécifié pour le cas NDIS_HASH_IPV6.

Par exemple, si le paquet est fragmenté, il peut ne pas contenir l’en-tête UDP. Dans ce cas, la carte réseau doit calculer le hachage uniquement sur l’en-tête IP.

NDIS_HASH_TCP_IPV6 | NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Si cette combinaison d’indicateurs est définie, la NIC devrait effectuer le calcul de hachage tel que spécifié par le protocole de transport dans le paquet. Toutefois, si le paquet ne contient pas d’en-tête TCP ou UDP, la carte réseau doit calculer la valeur de hachage spécifiée dans le cas NDIS_HASH_IPV6.

Par exemple, si le paquet est fragmenté, il peut ne pas contenir l’en-tête TCP ou UDP. Dans ce cas, la NIC doit calculer le hachage uniquement sur l’en-tête IP.

Combinaisons de types de hachage IPv6 avec en-têtes d’extension

Les combinaisons valides dans l’IPv6 avec les en-têtes d’extension définis sont les suivantes :

NDIS_HASH_IPV6_EX

Si cet indicateur seul est défini, la carte réseau doit calculer le hachage sur les champs suivants :

  • Adresse de domicile de l'option d'adresse de domicile dans l'en-tête des options de destination IPv6. Si l’en-tête d’extension n’est pas présent, utilisez l’adresse IPv6 source.
  • Adresse IPv6 contenue dans l'en-tête de routage de type 2 à partir de l'en-tête d'extension associé. Si l’en-tête d’extension n’est pas présent, utilisez l’adresse IPv6 de destination.

NDIS_HASH_TCP_IPV6_EX

Si cet indicateur seul est défini, la carte réseau doit calculer le hachage sur les champs suivants :

  • Adresse de domicile de l'option d'adresse de domicile dans l'en-tête des options de destination IPv6. Si l’en-tête d’extension n’est pas présent, utilisez l’adresse IPv6 source.
  • Adresse IPv6 contenue dans l’en-tête de routage de type 2 provenant de l’en-tête d’extension associé. Si l’en-tête d’extension n’est pas présent, utilisez l’adresse IPv6 de destination.
  • Source TCP Port
  • Port TCP de destination

NDIS_HASH_UDP_IPV6_EX

Si cet indicateur seul est défini, la carte réseau doit calculer le hachage sur les champs suivants :

  • Adresse de domicile de l'option d'adresse de domicile dans l'en-tête des options de destination IPv6. Si l’en-tête d’extension n’est pas présent, utilisez l’adresse IPv6 source.
  • Adresse IPv6 contenue dans l'en-tête de routage de type 2 de l'en-tête d'extension associé. Si l’en-tête d’extension n’est pas présent, utilisez l’adresse IPv6 de destination.
  • Source UDP Port
  • Port UDP de Destination

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_IPV6_EX

Si cette combinaison d’indicateurs est définie, la carte réseau doit effectuer les calculs de hachage comme spécifié pour le cas NDIS_HASH_TCP_IPV6_EX. Toutefois, si le paquet ne contient pas d’en-tête TCP, la carte réseau doit calculer le hachage tel que spécifié pour le cas de NDIS_HASH_IPV6_EX.

NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

Si cette combinaison d’indicateurs est définie, la carte réseau doit effectuer les calculs de hachage comme spécifié pour le cas NDIS_HASH_UDP_IPV6_EX. Toutefois, si le paquet ne contient pas d’en-tête UDP, la carte réseau doit calculer le hachage tel que spécifié pour le cas NDIS_HASH_IPV6_EX.

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

Si cette combinaison d’indicateurs est définie, la carte réseau doit effectuer les calculs de hachage tel que spécifié par le transport des paquets. Toutefois, si le paquet ne contient pas d’en-tête TCP ou UDP, la carte réseau doit calculer le hachage tel que spécifié pour le cas NDIS_HASH_IPV6_EX.

Remarque

Si un pilote miniport signale la capacité de NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX et/ou NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX d'une carte réseau, cette carte doit calculer les valeurs de hachage (sur les champs des en-têtes d’extension IPv6) conformément aux types de hachage d’extension IPv6 que le pilote de protocole a définis. La carte réseau peut stocker le type de hachage d’extension ou le type de hachage standard dans la structure NET_BUFFER_LIST du paquet IPv6 pour lequel une valeur de hachage est calculée.

Un pilote miniport définit le type de hachage dans une structure NET_BUFFER_LIST avant d’indiquer les données reçues. Pour plus d’informations, consultez Indication des données de réception RSS.