RSS 雜湊類型
概觀
RSS 雜湊類型會指定 NIC 必須用來計算 RSS 雜湊值的接收網路資料部分。
過度處理驅動程式會設定雜湊類型、函式和間接取值資料表。 超載驅動程式所設定的雜湊類型可以是迷你埠驅動程式可支援的類型子集。 如需詳細資訊,請參閱 RSS 組態。
雜湊類型是下列旗標有效組合的 OR:
- 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
以下是有效的旗標組合集合:
- NDIS_HASH_IPV4、NDIS_HASH_TCP_IPV4和NDIS_HASH_UDP_IPV4) 的 IPv4 (組合
- NDIS_HASH_IPV6、NDIS_HASH_TCP_IPV6和NDIS_HASH_UDP_IPV6) 的 IPv6 (組合
- 具有延伸模組標頭的 IPv6 (NDIS_HASH_IPV6_EX、NDIS_HASH_TCP_IPV6_EX和NDIS_HASH_UDP_IPV6_EX)
NIC 必須支援來自 IPv4 集合的其中一個組合。 其他集合和組合是選擇性的。 NIC 可以一次支援多個集合。 在此情況下,收到的資料類型會決定 NIC 使用的雜湊類型。
一般而言,如果 NIC 無法正確解譯收到的資料,則不得計算雜湊值。 例如,如果 NIC 只支援 IPv4,而且收到無法正確解譯的 IPv6 封包,則它不得計算雜湊值。 如果 NIC 收到不支援之傳輸類型的封包,則不得計算雜湊值。 例如,如果 NIC 在應該計算 TCP 封包的雜湊值時收到 UDP 封包,則不得計算雜湊值。 在此情況下,封包會以非 RSS 案例中的處理方式。 如需非 RSS 接收處理的詳細資訊,請參閱 非 RSS 接收處理。
IPv4 雜湊類型組合
IPv4 集合中的有效雜湊類型組合如下:
- 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
如果單獨設定此旗標,NIC 應該計算下列 IPv4 標頭欄位的雜湊值:
- Source-IPv4-Address
- Destination-IPv4-Address
注意
如果 NIC 收到同時具有 IP 和 TCP 標頭的封包,則不應該一律使用NDIS_HASH_TCP_IPV4。 如果是分散的 IP 封包,則必須使用NDIS_HASH_IPV4。 這包括包含 IP 和 TCP 標頭的第一個片段。
NDIS_HASH_TCP_IPV4
如果單獨設定此旗標,NIC 應該剖析收到的資料,以識別包含 TCP 區段的 IPv4 封包。
NIC 必須識別並略過存在的任何 IP 選項。 如果 NIC 無法略過任何 IP 選項,則不應該計算雜湊值。
NIC 應計算下欄欄位的雜湊值:
- Source-IPv4-Address
- Destination-IPv4-Address
- 來源 TCP 埠
- 目的地 TCP 埠
NDIS_HASH_UDP_IPV4
如果單獨設定此旗標,NIC 應該剖析收到的資料,以識別包含 UDP 資料包的 IPv4 封包。
NIC 必須識別並略過存在的任何 IP 選項。 如果 NIC 無法略過任何 IP 選項,則不應該計算雜湊值。
NIC 應計算下欄欄位的雜湊值:
- Source-IPv4-Address
- Destination-IPv4-Address
- 來源 UDP 埠
- 目的地 UDP 埠
NDIS_HASH_TCP_IPV4 |NDIS_HASH_IPV4
如果設定此旗標組合,NIC 應該執行針對NDIS_HASH_TCP_IPV4案例所指定的雜湊計算。 不過,如果封包不包含 TCP 標頭,NIC 應該計算為NDIS_HASH_IPV4案例所指定的雜湊值。
NDIS_HASH_UDP_IPV4 |NDIS_HASH_IPV4
如果設定此旗標組合,NIC 應該執行針對NDIS_HASH_UDP_IPV4案例所指定的雜湊計算。 不過,如果封包不包含 UDP 標頭,NIC 應該計算為NDIS_HASH_IPV4案例所指定的雜湊值。
NDIS_HASH_TCP_IPV4 |NDIS_HASH_UDP_IPV4 |NDIS_HASH_IPV4
如果已設定此旗標組合,NIC 應該執行封包中傳輸所指定的雜湊計算。 不過,如果封包不包含 TCP 或 UDP 標頭,NIC 應該計算為NDIS_HASH_IPV4案例所指定的雜湊值。
IPv6 雜湊類型組合
IPv6 集合中有效的雜湊類型組合如下:
- 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
如果單獨設定此旗標,NIC 應該計算下欄欄位的雜湊:
- Source-IPv6-Address
- Destination-IPv6-Address
NDIS_HASH_TCP_IPV6
如果單獨設定此旗標,NIC 應該剖析收到的資料,以識別包含 TCP 區段的 IPv6 封包。 NIC 必須識別並略過封包中存在的任何 IPv6 延伸模組標頭。 如果 NIC 無法略過任何 IPv6 擴充標頭,則不應該計算雜湊值。
NIC 應計算下欄欄位的雜湊值:
- Source-IPv6 -Address
- Destination-IPv6 -Address
- 來源 TCP 埠
- 目的地 TCP 埠
NDIS_HASH_UDP_IPV6
如果單獨設定此旗標,NIC 應該剖析收到的資料,以識別包含 UDP 資料包的 IPv6 封包。 NIC 必須識別並略過封包中存在的任何 IPv6 擴充功能標頭。 如果 NIC 無法略過任何 IPv6 擴充功能標頭,則不應該計算雜湊值。
NIC 應計算下欄欄位的雜湊值:
- Source-IPv6-Address
- Destination-IPv6-Address
- 來源 UDP 埠
- 目的地 UDP 埠
NDIS_HASH_TCP_IPV6 |NDIS_HASH_IPV6
如果已設定此旗標組合,NIC 應該執行針對NDIS_HASH_TCP_IPV6案例指定的雜湊計算。 不過,如果封包不包含 TCP 標頭,NIC 應該計算為NDIS_HASH_IPV6案例指定的雜湊。
例如,如果封包已分散,則它可能不會包含 TCP 標頭。 在此情況下,NIC 應該只會在 IP 標頭上計算雜湊。
NDIS_HASH_UDP_IPV6 |NDIS_HASH_IPV6
如果已設定此旗標組合,NIC 應該執行針對NDIS_HASH_UDP_IPV6案例指定的雜湊計算。 不過,如果封包不包含 UDP 標頭,NIC 應該計算為NDIS_HASH_IPV6案例指定的雜湊。
例如,如果封包已分散,則它可能不會包含 UDP 標頭。 在此情況下,NIC 應該只會在 IP 標頭上計算雜湊。
NDIS_HASH_TCP_IPV6 |NDIS_HASH_UDP_IPV6 |NDIS_HASH_IPV6
如果設定此旗標組合,NIC 應該執行封包中傳輸所指定的雜湊計算。 不過,如果封包不包含 TCP 或 UDP 標頭,NIC 應該計算NDIS_HASH_IPV6案例中指定的雜湊值。
例如,如果封包已分散,則它可能不會包含 TCP 或 UDP 標頭。 在此情況下,NIC 應該只會在 IP 標頭上計算雜湊。
具有延伸模組標頭雜湊類型組合的 IPv6
IPv6 中已設定擴充標頭的有效組合如下:
- 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
如果單獨設定此旗標,NIC 應該計算下欄欄位的雜湊:
- IPv6 目的地選項標頭中 [住家位址] 選項的 [住家位址]。 如果延伸模組標頭不存在,請使用來源 IPv6 位址。
- 從相關聯的擴充功能標頭包含在 Routing-Header-Type-2 中的 IPv6 位址。 如果延伸模組標頭不存在,請使用目的地 IPv6 位址。
NDIS_HASH_TCP_IPV6_EX
如果單獨設定此旗標,NIC 應該計算下欄欄位的雜湊:
- IPv6 目的地選項標頭中 [住家位址] 選項的 [住家位址]。 如果延伸模組標頭不存在,請使用來源 IPv6 位址。
- 從相關聯的擴充功能標頭包含在 Routing-Header-Type-2 中的 IPv6 位址。 如果延伸模組標頭不存在,請使用目的地 IPv6 位址。
- 來源 TCP 埠
- 目的地 TCP 埠
NDIS_HASH_UDP_IPV6_EX
如果單獨設定此旗標,NIC 應該計算下欄欄位的雜湊:
- IPv6 目的地選項標頭中 [住家位址] 選項的 [住家位址]。 如果延伸模組標頭不存在,請使用來源 IPv6 位址。
- 從相關聯的擴充功能標頭包含在 Routing-Header-Type-2 中的 IPv6 位址。 如果延伸模組標頭不存在,請使用目的地 IPv6 位址。
- 來源 UDP 埠
- 目的地 UDP 埠
NDIS_HASH_TCP_IPV6_EX |NDIS_HASH_IPV6_EX
如果已設定此旗標組合,NIC 應該依照NDIS_HASH_TCP_IPV6_EX案例所指定的執行雜湊計算。 不過,如果封包不包含 TCP 標頭,NIC 應該計算為NDIS_HASH_IPV6_EX案例指定的雜湊。
NDIS_HASH_UDP_IPV6_EX |NDIS_HASH_IPV6_EX
如果已設定此旗標組合,NIC 應該執行針對NDIS_HASH_UDP_IPV6_EX案例指定的雜湊計算。 不過,如果封包不包含 UDP 標頭,NIC 應該計算為NDIS_HASH_IPV6_EX案例指定的雜湊。
NDIS_HASH_TCP_IPV6_EX |NDIS_HASH_UDP_IPV6_EX |NDIS_HASH_IPV6_EX
如果設定此旗標組合,NIC 應該執行封包傳輸所指定的雜湊計算。 不過,如果封包不包含 TCP 或 UDP 標頭,NIC 應該計算為NDIS_HASH_IPV6_EX案例所指定的雜湊。
注意
如果迷你埠驅動程式報告 NIC 的NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX和/或NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX功能,NIC 必須根據通訊協定驅動程式所設定的 IPv6 擴充功能雜湊類型,計算 IPv6 擴充) 標頭中欄位 (的雜湊值。 NIC 可以將延伸模組雜湊類型或一般雜湊類型儲存在計算雜湊值的 IPv6 封包NET_BUFFER_LIST結構中。
迷你埠驅動程式會先在 NET_BUFFER_LIST 結構中設定雜湊類型,再指出收到的資料。 如需詳細資訊,請參閱 指出 RSS 接收資料。