Partager via


Types de hachage RSS

Vue d’ensemble

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 sur-ment définissent le type de hachage, la fonction et la table d’indirection. Le type de hachage que le pilote de superposition 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 un 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, NDIS_HASH_TCP_IPV4 et NDIS_HASH_UDP_IPV4)
  • IPv6 (combinaisons de NDIS_HASH_IPV6, NDIS_HASH_TCP_IPV6 et NDIS_HASH_UDP_IPV6)
  • IPv6 avec en-têtes d’extension (combinaisons de NDIS_HASH_IPV6_EX, NDIS_HASH_TCP_IPV6_EX et NDIS_HASH_UDP_IPV6_EX)

Une carte réseau doit prendre en charge l’une des combinaisons du jeu 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’elle ne prend pas en charge, elle ne doit pas calculer la valeur de hachage. Par exemple, si la carte réseau reçoit un paquet UDP alors qu’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 des réceptions non RSS, consultez Traitement de réception non RSS.

Combinaisons de types de hachage IPv4

Les combinaisons de types de hachage valides dans le jeu 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
  • Adresse IPv4 de destination

Notes

Si une carte réseau reçoit un paquet qui a à 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 doit être utilisé. Cela inclut le premier fragment qui contient à la fois des 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 carte réseau doit identifier et ignorer toutes les options IP présentes. Si la carte réseau ne peut pas ignorer d’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
  • Adresse IPv4 de destination
  • Source TCP Port
  • Destination TCP Port

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 carte réseau doit identifier et ignorer toutes les options IP présentes. Si la carte réseau ne peut pas ignorer d’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
  • Adresse IPv4 de destination
  • Source UDP Port
  • Destination UDP Port

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 spécifiés 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, la carte réseau doit effectuer les calculs de hachage spécifiés 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 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
  • Adresse IPv6 de destination

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 tous 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 TCP Port
  • Destination TCP Port

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 tous 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
  • Adresse IPv6 de destination
  • Source UDP Port
  • Destination UDP Port

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 spécifiés 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 comme 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 spécifiés 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 comme 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 carte réseau doit effectuer le calcul de hachage tel que spécifié par le 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 carte réseau doit calculer le hachage uniquement sur l’en-tête IP.

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

Les combinaisons valides dans IPv6 avec des 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 principale de l’option d’adresse d’origine 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 Routing-Header-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 principale de l’option d’adresse d’origine 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 Routing-Header-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.
  • Source TCP Port
  • Destination TCP Port

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 principale de l’option d’adresse d’origine 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 Routing-Header-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.
  • Source UDP Port
  • Destination UDP Port

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 spécifiés 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 spécifié pour le cas 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 spécifiés 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 comme 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 spécifiés par le transport de paquets. Toutefois, si le paquet ne contient pas d’en-tête TCP ou UDP, la carte réseau doit calculer le hachage comme spécifié pour le cas NDIS_HASH_IPV6_EX.

Notes

Si un pilote miniport signale NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX et/ou NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX fonctionnalité pour une carte réseau, la carte réseau doit calculer les valeurs de hachage (sur les champs dans les en-têtes d’extension IPv6) conformément aux types de hachage d’extension IPv6 définis par le pilote de protocole. 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.