RSS-Hashingtypen
Übersicht
Der RSS-Hashtyp gibt den Teil der empfangenen Netzwerkdaten an, den eine NIC zum Berechnen eines RSS-Hashwerts verwenden muss.
Übersteigende Treiber legen den Hashtyp, die Funktion und die Dereferenzierungstabelle fest. Der Hashtyp, den der übersteigende Treiber festlegt, kann eine Teilmenge des Typs sein, den der Miniporttreiber unterstützen kann. Weitere Informationen finden Sie unter RSS-Konfiguration.
Der Hashtyp ist ein OR mit gültigen Kombinationen der folgenden Flags:
- 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
Dies sind die Sätze gültiger Flagkombinationen:
- IPv4 (Kombinationen aus NDIS_HASH_IPV4, NDIS_HASH_TCP_IPV4 und NDIS_HASH_UDP_IPV4)
- IPv6 (Kombinationen aus NDIS_HASH_IPV6, NDIS_HASH_TCP_IPV6 und NDIS_HASH_UDP_IPV6)
- IPv6 mit Erweiterungsheadern (Kombinationen aus NDIS_HASH_IPV6_EX, NDIS_HASH_TCP_IPV6_EX und NDIS_HASH_UDP_IPV6_EX)
Eine NIC muss eine der Kombinationen aus dem IPv4-Satz unterstützen. Die anderen Sätze und Kombinationen sind optional. Eine Netzwerkkarte kann mehrere Sätze gleichzeitig unterstützen. In diesem Fall bestimmt der Typ der empfangenen Daten, welchen Hashtyp die NIC verwendet.
Wenn die NIC die empfangenen Daten nicht richtig interpretieren kann, darf sie den Hashwert im Allgemeinen nicht berechnen. Wenn die Netzwerkkarte beispielsweise nur IPv4 unterstützt und ein IPv6-Paket empfängt, das sie nicht richtig interpretieren kann, darf sie den Hashwert nicht berechnen. Wenn die NIC ein Paket für einen Transporttyp empfängt, den sie nicht unterstützt, darf sie den Hashwert nicht berechnen. Wenn die Netzwerkkarte beispielsweise ein UDP-Paket empfängt, wenn sie Hashwerte für TCP-Pakete berechnen soll, darf sie den Hashwert nicht berechnen. In diesem Fall wird das Paket wie im Nicht-RSS-Fall verarbeitet. Weitere Informationen zur Nicht-RSS-Empfangsverarbeitung finden Sie unter Nicht-RSS-Empfangsverarbeitung.
IPv4-Hashtypkombinationen
Die gültigen Hashtypkombinationen im IPv4-Satz sind:
- NDIS_HASH_IPV4
- NDIS_HASH_TCP_IPV4
- NDIS_HASH_UDP_IPV4
- NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV4
- NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4
- NDIS_HASH_TCP_IPV4 | NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4
NDIS_HASH_IPV4
Wenn dieses Flag allein festgelegt ist, sollte die NIC den Hashwert über die folgenden IPv4-Headerfelder berechnen:
- Source-IPv4-Address
- Destination-IPv4-Address
Hinweis
Wenn eine Netzwerkkarte ein Paket empfängt, das sowohl IP- als auch TCP-Header enthält, sollte nicht immer NDIS_HASH_TCP_IPV4 verwendet werden. Bei einem fragmentierten IP-Paket muss NDIS_HASH_IPV4 verwendet werden. Dies schließt das erste Fragment ein, das sowohl IP- als auch TCP-Header enthält.
NDIS_HASH_TCP_IPV4
Wenn dieses Flag allein festgelegt ist, sollte die NIC die empfangenen Daten analysieren, um ein IPv4-Paket zu identifizieren, das ein TCP-Segment enthält.
Die NIC muss alle vorhandenen IP-Optionen identifizieren und überspringen. Wenn die NIC keine IP-Optionen überspringen kann, sollte sie keinen Hashwert berechnen.
Die NIC sollte den Hashwert über die folgenden Felder berechnen:
- Source-IPv4-Address
- Destination-IPv4-Address
- TCP-Quellport
- TCP-Zielport
NDIS_HASH_UDP_IPV4
Wenn dieses Flag allein festgelegt ist, sollte die NIC die empfangenen Daten analysieren, um ein IPv4-Paket zu identifizieren, das ein UDP-Datagramm enthält.
Die NIC muss alle vorhandenen IP-Optionen identifizieren und überspringen. Wenn die NIC keine IP-Optionen überspringen kann, sollte sie keinen Hashwert berechnen.
Die NIC sollte den Hashwert über die folgenden Felder berechnen:
- Source-IPv4-Address
- Destination-IPv4-Address
- UDP-Quellport
- UDP-Zielport
NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV4
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den NDIS_HASH_TCP_IPV4 Fall angegeben. Wenn das Paket jedoch keinen TCP-Header enthält, sollte die NIC den für den NDIS_HASH_IPV4 Fall angegebenen Hashwert berechnen.
NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den NDIS_HASH_UDP_IPV4 Fall angegeben. Wenn das Paket jedoch keinen UDP-Header enthält, sollte die NIC den Für den NDIS_HASH_IPV4 Fall angegebenen Hashwert berechnen.
NDIS_HASH_TCP_IPV4 | NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnung durchführen, wie durch den Transport im Paket angegeben. Wenn das Paket jedoch keinen TCP- oder UDP-Header enthält, sollte die NIC den Hashwert berechnen, der für den NDIS_HASH_IPV4 Fall angegeben ist.
IPv6-Hashtypkombinationen
Die gültigen Hashtypkombinationen im IPv6-Satz sind:
- NDIS_HASH_IPV6
- NDIS_HASH_TCP_IPV6
- NDIS_HASH_UDP_IPV6
- NDIS_HASH_TCP_IPV6 | NDIS_HASH_IPV6
- NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6
- NDIS_HASH_TCP_IPV6 | NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6
NDIS_HASH_IPV6
Wenn dieses Flag allein festgelegt ist, sollte die NIC den Hash über die folgenden Felder berechnen:
- Source-IPv6-Address
- Destination-IPv6-Address
NDIS_HASH_TCP_IPV6
Wenn dieses Flag allein festgelegt ist, sollte die NIC die empfangenen Daten analysieren, um ein IPv6-Paket zu identifizieren, das ein TCP-Segment enthält. Die NIC muss alle IPv6-Erweiterungsheader identifizieren und überspringen, die im Paket vorhanden sind. Wenn die NIC keine IPv6-Erweiterungsheader überspringen kann, sollte sie keinen Hashwert berechnen.
Die NIC sollte den Hashwert über die folgenden Felder berechnen:
- Source-IPv6 -Address
- Destination-IPv6 -Address
- TCP-Quellport
- TCP-Zielport
NDIS_HASH_UDP_IPV6
Wenn dieses Flag allein festgelegt ist, sollte die NIC die empfangenen Daten analysieren, um ein IPv6-Paket zu identifizieren, das ein UDP-Datagramm enthält. Die NIC muss alle IPv6-Erweiterungsheader identifizieren und überspringen, die im Paket vorhanden sind. Wenn die NIC keine IPv6-Erweiterungsheader überspringen kann, sollte sie keinen Hashwert berechnen.
Die NIC sollte den Hashwert über die folgenden Felder berechnen:
- Source-IPv6-Address
- Destination-IPv6-Address
- UDP-Quellport
- UDP-Zielport
NDIS_HASH_TCP_IPV6 | NDIS_HASH_IPV6
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den NDIS_HASH_TCP_IPV6 Fall angegeben. Wenn das Paket jedoch keinen TCP-Header enthält, sollte die NIC den Hash berechnen, wie für den NDIS_HASH_IPV6 Fall angegeben.
Wenn das Paket beispielsweise fragmentiert ist, enthält es möglicherweise nicht den TCP-Header. In diesem Fall sollte die NIC den Hash nur über den IP-Header berechnen.
NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den NDIS_HASH_UDP_IPV6 Fall angegeben. Wenn das Paket jedoch keinen UDP-Header enthält, sollte die NIC den Hash berechnen, wie für den NDIS_HASH_IPV6 Fall angegeben.
Wenn das Paket beispielsweise fragmentiert ist, enthält es möglicherweise nicht den UDP-Header. In diesem Fall sollte die NIC den Hash nur über den IP-Header berechnen.
NDIS_HASH_TCP_IPV6 | NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnung durchführen, wie durch den Transport im Paket angegeben. Wenn das Paket jedoch keinen TCP- oder UDP-Header enthält, sollte die NIC den Hashwert berechnen, wie im fall der NDIS_HASH_IPV6 angegeben.
Wenn das Paket beispielsweise fragmentiert ist, enthält es möglicherweise nicht den TCP- oder UDP-Header. In diesem Fall sollte die NIC den Hash nur über den IP-Header berechnen.
IPv6 mit Hashtypkombinationen für Erweiterungsheader
Die gültigen Kombinationen in IPv6 mit festgelegten Erweiterungsheadern sind:
- NDIS_HASH_IPV6_EX
- NDIS_HASH_TCP_IPV6_EX
- NDIS_HASH_UDP_IPV6_EX
- NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_IPV6_EX
- NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX
- NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX
NDIS_HASH_IPV6_EX
Wenn dieses Flag allein festgelegt ist, sollte die NIC den Hash über die folgenden Felder berechnen:
- Home address from the home address option in the IPv6 destination options header. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die IPv6-Quelladresse.
- IPv6-Adresse, die im Routing-Header-Type-2 des zugeordneten Erweiterungsheaders enthalten ist. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die IPv6-Zieladresse.
NDIS_HASH_TCP_IPV6_EX
Wenn dieses Flag allein festgelegt ist, sollte die NIC den Hash über die folgenden Felder berechnen:
- Home address from the home address option in the IPv6 destination options header. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die IPv6-Quelladresse.
- IPv6-Adresse, die im Routing-Header-Type-2 des zugeordneten Erweiterungsheaders enthalten ist. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die IPv6-Zieladresse.
- TCP-Quellport
- TCP-Zielport
NDIS_HASH_UDP_IPV6_EX
Wenn dieses Flag allein festgelegt ist, sollte die NIC den Hash über die folgenden Felder berechnen:
- Home address from the home address option in the IPv6 destination options header. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die IPv6-Quelladresse.
- IPv6-Adresse, die im Routing-Header-Type-2 des zugeordneten Erweiterungsheaders enthalten ist. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die IPv6-Zieladresse.
- UDP-Quellport
- UDP-Zielport
NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_IPV6_EX
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den NDIS_HASH_TCP_IPV6_EX Fall angegeben. Wenn das Paket jedoch keinen TCP-Header enthält, sollte die NIC den Hash berechnen, wie für den NDIS_HASH_IPV6_EX Fall angegeben.
NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den NDIS_HASH_UDP_IPV6_EX Fall angegeben. Wenn das Paket jedoch keinen UDP-Header enthält, sollte die NIC den Hash berechnen, wie für den NDIS_HASH_IPV6_EX Fall angegeben.
NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Vom Pakettransport angegebenen Hashberechnungen ausführen. Wenn das Paket jedoch keinen TCP- oder UDP-Header enthält, sollte die NIC den Hash berechnen, wie für den NDIS_HASH_IPV6_EX Fall angegeben.
Hinweis
Wenn ein Miniporttreiber NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX und/oder NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX-Funktion für eine NIC meldet, muss die NIC Hashwerte (über Feldern in den IPv6-Erweiterungsheadern) gemäß den vom Protokolltreiber festgelegten IPv6-Erweiterungstypen berechnen. Die NIC kann entweder den Erweiterungshashtyp oder den regulären Hashtyp in der NET_BUFFER_LIST-Struktur des IPv6-Pakets speichern, für das ein Hashwert berechnet wird.
Ein Miniporttreiber legt den Hashtyp in einer NET_BUFFER_LIST-Struktur fest, bevor die empfangenen Daten angegeben werden. Weitere Informationen finden Sie unter Angeben von RSS-Empfangsdaten.