Bagikan melalui


Jenis Hashing RSS

Gambaran Umum

Jenis hashing RSS menentukan bagian data jaringan yang diterima yang harus digunakan NIC untuk menghitung nilai hash RSS.

Driver yang terlalu mengandalkan mengatur jenis hash, fungsi, dan tabel tidak langsung. Jenis hash yang ditetapkan driver yang terlalu berlebihan dapat menjadi subset dari jenis yang dapat didukung driver miniport. Untuk informasi selengkapnya, lihat Konfigurasi RSS.

Jenis hash adalah OR dari kombinasi bendera berikut yang valid:

  • 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

Ini adalah set kombinasi bendera yang valid:

  • IPv4 (kombinasi NDIS_HASH_IPV4, NDIS_HASH_TCP_IPV4, dan NDIS_HASH_UDP_IPV4)
  • IPv6 (kombinasi NDIS_HASH_IPV6, NDIS_HASH_TCP_IPV6, dan NDIS_HASH_UDP_IPV6)
  • IPv6 dengan header ekstensi (kombinasi NDIS_HASH_IPV6_EX, NDIS_HASH_TCP_IPV6_EX, dan NDIS_HASH_UDP_IPV6_EX)

NIC harus mendukung salah satu kombinasi dari set IPv4. Set dan kombinasi lainnya bersifat opsional. NIC dapat mendukung lebih dari satu set pada satu waktu. Dalam hal ini, jenis data yang diterima menentukan jenis hash mana yang digunakan NIC.

Secara umum, jika NIC tidak dapat menginterpretasikan data yang diterima dengan benar, NIC tidak boleh menghitung nilai hash. Misalnya, jika NIC hanya mendukung IPv4 dan menerima paket IPv6, yang tidak dapat ditafsirkan dengan benar, NIC tidak boleh menghitung nilai hash. Jika NIC menerima paket untuk jenis transportasi yang tidak didukungnya, NIC tidak boleh menghitung nilai hash. Misalnya, jika NIC menerima paket UDP ketika seharusnya menghitung nilai hash untuk paket TCP, NIC tidak boleh menghitung nilai hash. Dalam hal ini, paket diproses seperti dalam kasus non-RSS. Untuk informasi selengkapnya tentang pemrosesan penerimaan non-RSS, lihat Pemrosesan Penerimaan Non-RSS.

Kombinasi jenis hash IPv4

Kombinasi jenis hash yang valid dalam set IPv4 adalah:

NDIS_HASH_IPV4

Jika bendera ini saja diatur, NIC harus menghitung nilai hash di atas bidang header IPv4 berikut:

  • Alamat Sumber-IPv4
  • Alamat-IPv4 Tujuan

Catatan

Jika NIC menerima paket yang memiliki header IP dan TCP, NDIS_HASH_TCP_IPV4 tidak boleh selalu digunakan. Dalam kasus paket IP terfragmentasi, NDIS_HASH_IPV4 harus digunakan. Ini termasuk fragmen pertama yang berisi header IP dan TCP.

NDIS_HASH_TCP_IPV4

Jika bendera ini saja diatur, NIC harus mengurai data yang diterima untuk mengidentifikasi paket IPv4 yang berisi segmen TCP.

NIC harus mengidentifikasi dan melewati opsi IP apa pun yang ada. Jika NIC tidak dapat melewati opsi IP apa pun, NIC seharusnya tidak menghitung nilai hash.

NIC harus menghitung nilai hash di atas bidang berikut:

  • Alamat Sumber-IPv4
  • Alamat-IPv4 Tujuan
  • Port TCP Sumber
  • Port TCP Tujuan

NDIS_HASH_UDP_IPV4

Jika bendera ini saja diatur, NIC harus mengurai data yang diterima untuk mengidentifikasi paket IPv4 yang berisi datagram UDP.

NIC harus mengidentifikasi dan melewati opsi IP apa pun yang ada. Jika NIC tidak dapat melewati opsi IP apa pun, NIC seharusnya tidak menghitung nilai hash.

NIC harus menghitung nilai hash di atas bidang berikut:

  • Alamat Sumber-IPv4
  • Alamat-IPv4 Tujuan
  • Port UDP Sumber
  • Port UDP Tujuan

NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV4

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan untuk kasus NDIS_HASH_TCP_IPV4. Namun, jika paket tidak berisi header TCP, NIC harus menghitung nilai hash seperti yang ditentukan untuk kasus NDIS_HASH_IPV4.

NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan untuk kasus NDIS_HASH_UDP_IPV4. Namun, jika paket tidak berisi header UDP, NIC harus menghitung nilai hash seperti yang ditentukan untuk kasus NDIS_HASH_IPV4.

NDIS_HASH_TCP_IPV4 | NDIS_HASH_UDP_IPV4 | NDIS_HASH_IPV4

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan oleh transportasi dalam paket. Namun, jika paket tidak berisi header TCP atau UDP, NIC harus menghitung nilai hash seperti yang ditentukan untuk kasus NDIS_HASH_IPV4.

Kombinasi jenis hash IPv6

Kombinasi jenis hash yang valid dalam set IPv6 adalah:

NDIS_HASH_IPV6

Jika bendera ini saja diatur, NIC harus menghitung hash di atas bidang berikut:

  • Alamat Sumber-IPv6
  • Alamat-IPv6 Tujuan

NDIS_HASH_TCP_IPV6

Jika bendera ini saja diatur, NIC harus mengurai data yang diterima untuk mengidentifikasi paket IPv6 yang berisi segmen TCP. NIC harus mengidentifikasi dan melewati header ekstensi IPv6 apa pun yang ada dalam paket. Jika NIC tidak dapat melewati header ekstensi IPv6 apa pun, NIC tidak boleh menghitung nilai hash.

NIC harus menghitung nilai hash di atas bidang berikut:

  • Source-IPv6 -Alamat
  • Destination-IPv6 -Alamat
  • Port TCP Sumber
  • Port TCP Tujuan

NDIS_HASH_UDP_IPV6

Jika bendera ini saja diatur, NIC harus mengurai data yang diterima untuk mengidentifikasi paket IPv6 yang berisi datagram UDP. NIC harus mengidentifikasi dan melewati header ekstensi IPv6 apa pun yang ada dalam paket. Jika NIC tidak dapat melewati header ekstensi IPv6 apa pun, NIC tidak boleh menghitung nilai hash.

NIC harus menghitung nilai hash di atas bidang berikut:

  • Alamat Sumber-IPv6
  • Alamat-IPv6 Tujuan
  • Port UDP Sumber
  • Port UDP Tujuan

NDIS_HASH_TCP_IPV6 | NDIS_HASH_IPV6

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan untuk kasus NDIS_HASH_TCP_IPV6. Namun, jika paket tidak berisi header TCP, NIC harus menghitung hash seperti yang ditentukan untuk kasus NDIS_HASH_IPV6.

Misalnya, jika paket terfragmentasi, maka mungkin tidak berisi header TCP. Dalam hal ini, NIC harus menghitung hash hanya melalui header IP.

NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan untuk kasus NDIS_HASH_UDP_IPV6. Namun, jika paket tidak berisi header UDP, NIC harus menghitung hash seperti yang ditentukan untuk kasus NDIS_HASH_IPV6.

Misalnya, jika paket terfragmentasi, maka mungkin tidak berisi header UDP. Dalam hal ini, NIC harus menghitung hash hanya melalui header IP.

NDIS_HASH_TCP_IPV6 | NDIS_HASH_UDP_IPV6 | NDIS_HASH_IPV6

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan oleh transportasi dalam paket. Namun, jika paket tidak berisi header TCP atau UDP, NIC harus menghitung nilai hash seperti yang ditentukan dalam kasus NDIS_HASH_IPV6.

Misalnya, jika paket terfragmentasi, maka mungkin tidak berisi header TCP atau UDP. Dalam hal ini, NIC harus menghitung hash hanya melalui header IP.

IPv6 dengan kombinasi jenis hash header ekstensi

Kombinasi yang valid di IPv6 dengan header ekstensi yang ditetapkan adalah:

NDIS_HASH_IPV6_EX

Jika bendera ini saja diatur, NIC harus menghitung hash di atas bidang berikut:

  • Alamat rumah dari opsi alamat rumah di header opsi tujuan IPv6. Jika header ekstensi tidak ada, gunakan Alamat IPv6 Sumber.
  • Alamat IPv6 yang terkandung dalam Routing-Header-Type-2 dari header ekstensi terkait. Jika header ekstensi tidak ada, gunakan Alamat IPv6 Tujuan.

NDIS_HASH_TCP_IPV6_EX

Jika bendera ini saja diatur, NIC harus menghitung hash di atas bidang berikut:

  • Alamat rumah dari opsi alamat rumah di header opsi tujuan IPv6. Jika header ekstensi tidak ada, gunakan Alamat IPv6 Sumber.
  • Alamat IPv6 yang terkandung dalam Routing-Header-Type-2 dari header ekstensi terkait. Jika header ekstensi tidak ada, gunakan Alamat IPv6 Tujuan.
  • Port TCP Sumber
  • Port TCP Tujuan

NDIS_HASH_UDP_IPV6_EX

Jika bendera ini saja diatur, NIC harus menghitung hash di atas bidang berikut:

  • Alamat rumah dari opsi alamat rumah di header opsi tujuan IPv6. Jika header ekstensi tidak ada, gunakan Alamat IPv6 Sumber.
  • Alamat IPv6 yang terkandung dalam Routing-Header-Type-2 dari header ekstensi terkait. Jika header ekstensi tidak ada, gunakan Alamat IPv6 Tujuan.
  • Port UDP Sumber
  • Port UDP Tujuan

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_IPV6_EX

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan untuk kasus NDIS_HASH_TCP_IPV6_EX. Namun, jika paket tidak berisi header TCP, NIC harus menghitung hash seperti yang ditentukan untuk kasus NDIS_HASH_IPV6_EX.

NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan untuk kasus NDIS_HASH_UDP_IPV6_EX. Namun, jika paket tidak berisi header UDP, NIC harus menghitung hash seperti yang ditentukan untuk kasus NDIS_HASH_IPV6_EX.

NDIS_HASH_TCP_IPV6_EX | NDIS_HASH_UDP_IPV6_EX | NDIS_HASH_IPV6_EX

Jika kombinasi bendera ini diatur, NIC harus melakukan perhitungan hash seperti yang ditentukan oleh transportasi paket. Namun, jika paket tidak berisi header TCP atau UDP, NIC harus menghitung hash seperti yang ditentukan untuk kasus NDIS_HASH_IPV6_EX.

Catatan

Jika driver miniport melaporkan kemampuan NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX dan/atau NDIS_RSS_CAPS_HASH_TYPE_UDP_IPV6_EX untuk NIC, NIC harus menghitung nilai hash (di atas bidang di header ekstensi IPv6) sesuai dengan jenis hash ekstensi IPv6 yang ditetapkan driver protokol. NIC dapat menyimpan jenis hash ekstensi atau jenis hash reguler dalam struktur NET_BUFFER_LIST paket IPv6 yang nilai hashnya dihitung.

Driver miniport mengatur jenis hash dalam struktur NET_BUFFER_LIST sebelum menunjukkan data yang diterima. Untuk informasi selengkapnya, lihat Menunjukkan RSS Menerima Data.