Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Überblick
Der RSS-Hashingtyp gibt den Teil der empfangenen Netzwerkdaten an, den eine NIC zum Berechnen eines RSS-Hashwerts verwenden muss.
Übergeordnete Treiber legen den Hashtyp, die Funktion und die Indirektionstabelle fest. Der Hashtyp, den der überlastende Treiber festlegt, kann eine Teilmenge des Typs sein, den der Miniporttreiber unterstützen kann. Weitere Informationen finden Sie unter RSS-Konfiguration.
Der Hashtyp ist eine OR von 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 Gruppen gültiger Kennzeichenkombinationen:
- 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 NIC kann mehrere Sätze gleichzeitig unterstützen. In diesem Fall bestimmt der empfangene Datentyp, welchen Hashtyp die NIC verwendet.
Im Allgemeinen darf der NIC den Hashwert nicht berechnen, wenn die empfangenen Daten nicht richtig interpretiert werden können. Wenn die NIC beispielsweise nur IPv4 unterstützt und ein IPv6-Paket empfängt, das nicht richtig interpretiert werden kann, darf der Hashwert nicht berechnet werden. Wenn die NIC ein Paket für einen Transporttyp empfängt, der nicht unterstützt wird, darf der Hashwert nicht berechnet werden. Wenn die NIC beispielsweise ein UDP-Paket empfängt, wenn es Hashwerte für TCP-Pakete berechnen soll, darf der Hashwert nicht berechnet werden. In diesem Fall wird das Paket wie im Nicht-RSS-Fall verarbeitet. Weitere Informationen zur Nicht-RSS-Empfangenverarbeitung 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
- Ziel-IPv4-Address
Hinweis
Wenn eine NIC ein Paket empfängt, das sowohl IP- als auch TCP-Header enthält, sollte NDIS_HASH_TCP_IPV4 nicht immer verwendet werden. Bei einem fragmentierten IP-Paket muss NDIS_HASH_IPV4 verwendet werden. Dazu gehört das erste Fragment, 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 kein Hashwert berechnet werden.
Die NIC sollte den Hashwert über die folgenden Felder berechnen:
- Source-IPv4-Address
- Ziel-IPv4-Address
- TCP-Quellport
- Ziel-TCP-Port
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 kein Hashwert berechnet werden.
Die NIC sollte den Hashwert über die folgenden Felder berechnen:
- Source-IPv4-Address
- Ziel-IPv4-Address
- Udp-Quellport
- Ziel-UDP-Port
NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV4
Wenn diese Kennzeichnungskombination 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 Kennzeichenkombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den fall NDIS_HASH_UDP_IPV4 angegeben. Wenn das Paket jedoch keinen UDP-Header enthält, sollte die NIC den Hashwert gemäß der Angabe für den fall NDIS_HASH_IPV4 berechnen.
NDIS_HASH_TCP_IPV4 | NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4
Wenn diese Flagkombination festgelegt ist, sollte die NIC die Hashberechnung ausführen, wie vom Transport im Paket angegeben. Wenn das Paket jedoch keinen TCP- oder UDP-Header enthält, sollte die NIC den Für den NDIS_HASH_IPV4 Fall angegebenen Hashwert berechnen.
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
- Ziel-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 kein Hashwert berechnet werden.
Die NIC sollte den Hashwert über die folgenden Felder berechnen:
- Source-IPv6 -Address
- Destination-IPv6 -Address
- TCP-Quellport
- Ziel-TCP-Port
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 kein Hashwert berechnet werden.
Die NIC sollte den Hashwert über die folgenden Felder berechnen:
- Source-IPv6-Address
- Ziel-IPv6-Address
- Udp-Quellport
- Ziel-UDP-Port
NDIS_HASH_TCP_IPV6 | NDIS_HASH_IPV6
Wenn diese Kennzeichnungskombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den fall NDIS_HASH_TCP_IPV6 angegeben. Wenn das Paket jedoch keinen TCP-Header enthält, sollte die NIC den Hash wie für den fall NDIS_HASH_IPV6 angegeben berechnen.
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 Kennzeichenkombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den fall NDIS_HASH_UDP_IPV6 angegeben. Wenn das Paket jedoch keinen UDP-Header enthält, sollte die NIC den Hash wie für den NDIS_HASH_IPV6 Fall angegeben berechnen.
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 ausführen, wie vom Transport im Paket angegeben. Wenn das Paket jedoch keinen TCP- oder UDP-Header enthält, sollte die NIC den Im NDIS_HASH_IPV6 Fall angegebenen Hashwert berechnen.
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 für IPv6 mit festgelegtem Satz von 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:
- Hausadresse aus der Hausadressenoption im IPv6-Zieloptionen-Header. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die Quell-IPv6-Adresse.
- IPv6-Adresse, die im Routing-Kopf-Typ-2 des zugehörigen Erweiterungsheaders enthalten ist. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die Ziel-IPv6-Adresse.
NDIS_HASH_TCP_IPV6_EX
Wenn dieses Flag allein festgelegt ist, sollte die NIC den Hash über die folgenden Felder berechnen:
- Heimadresse aus der Heimadresse-Option im Optionen-Header des IPv6-Zielortes. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die Quell-IPv6-Adresse.
- IPv6-Adresse, die im Routing-Header-Typ-2 des zugehörigen Erweiterungs-Headers enthalten ist. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die Ziel-IPv6-Adresse.
- TCP-Quellport
- Ziel-TCP-Port
NDIS_HASH_UDP_IPV6_EX
Wenn dieses Flag allein festgelegt ist, sollte die NIC den Hash über die folgenden Felder berechnen:
- Heimadresse aus der Heimadresse-Option im IPv6-Zieloptionen-Header. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die Quell-IPv6-Adresse.
- IPv6-Adresse, die im Routing Header Typ 2 des zugehörigen Erweiterungsheaders enthalten ist. Wenn der Erweiterungsheader nicht vorhanden ist, verwenden Sie die Ziel-IPv6-Adresse.
- Udp-Quellport
- Ziel-UDP-Port
NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_IPV6_EX
Wenn diese Kennzeichnungskombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den fall NDIS_HASH_TCP_IPV6_EX angegeben. Wenn das Paket jedoch keinen TCP-Header enthält, sollte die NIC den Hash gemäß der Angabe für den NDIS_HASH_IPV6_EX Fall berechnen.
NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX
Wenn diese Kennzeichnungskombination festgelegt ist, sollte die NIC die Hashberechnungen ausführen, wie für den Fall NDIS_HASH_UDP_IPV6_EX angegeben. Wenn das Paket jedoch keinen UDP-Header enthält, sollte die NIC den Hash gemäß der Angabe für den NDIS_HASH_IPV6_EX Fall berechnen.
NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX
Wenn diese Kennzeichenkombination festgelegt ist, sollte die NIC die Hash-Berechnungen entsprechend den Angaben des Pakettransports ausführen. Wenn das Paket jedoch keinen TCP- oder UDP-Header enthält, sollte die NIC den Hash wie für den NDIS_HASH_IPV6_EX Fall angegeben berechnen.
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 Felder in den IPv6-Erweiterungsheadern) gemäß den IPv6-Erweiterungshashtypen berechnen, die der Protokolltreiber festgelegt hat. 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.