Bagikan melalui


Mendukung NVGRE dalam Large Send Offload (LSO)

NDIS 6.30 (Windows Server 2012) memperkenalkan Virtualisasi Jaringan menggunakan Enkapulasi Perutean Generik (NVGRE). NDIS miniport, protokol, dan driver filter dan NIC yang melakukan offload pengiriman besar (LSO) versi 2 (LSOV2) harus melakukannya dengan cara yang mendukung NVGRE.

Catatan Halaman ini mengasumsikan bahwa Anda terbiasa dengan informasi dalam Membongkar Segmentasi Paket TCP Besar.

Jika NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket adalah TRUE dan informasi TcpIpChecksumNetBufferListInfo out-of-band (OOB) valid, ini menunjukkan bahwa dukungan NVGRE diperlukan dan NIC harus melakukan offload LSOV2 pada paket berformat NVGRE, dengan kondisi berikut:

Untuk mendukung NVGRE di LSOV2, driver protokol dan filter harus membuat perubahan berikut:

NIC dan driver miniport dapat menggunakan nilai InnerFrameOffset, TransportIpHeaderRelativeOffset, dan TcpHeaderRelativeOffset yang disediakan dalam struktur NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO . Driver NIC atau miniport dapat melakukan pemeriksaan header yang diperlukan pada header IP terowongan (luar) atau header berikutnya untuk memvalidasi offset ini.

Driver miniport harus menangani kasus di mana NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. InnerFrameOffset mungkin berada dalam daftar pengumpulan sebar yang berbeda dari awal paket. Driver protokol akan menjamin bahwa semua header enkapulasi yang telah ditentukan sebelumnya (ETH, IP, GRE) akan berdekatan secara fisik dan akan berada di MDL pertama paket.

Driver protokol dan filter tidak memastikan bahwa total panjang payload TCP adalah kelipatan yang tepat dari nilai MSS yang dikurangi. Untuk alasan ini, driver miniport dan NIC harus memperbarui header IP tunnel (luar). NIC harus menghasilkan segmen berukuran penuh sebanyak mungkin berdasarkan berkurangnya nilai MSS dalam NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO. LsoV2Transmit Informasi OOB. Hanya satu segmen sub-MSS yang dapat dihasilkan per pengiriman LSOv2.

Driver miniport harus melakukan hal berikut:

  • Komputasi checksum untuk header IP terowongan (luar).
  • Tingkatkan nilai identifikasi IP (ID IP) dari header IP terowongan (luar) untuk setiap paket. Paket pertama harus menggunakan ID IP di header IP terowongan asli (luar).
  • Tambahkan ID IP header IP transportasi (dalam) untuk setiap paket. Paket pertama harus menggunakan ID IP di header IP transportasi asli (dalam).
  • Komputasi checksum untuk header TCP dan header IP transport (dalam).
  • Pastikan header lengkap, termasuk header terowongan enkapulasi (luar) ditambahkan ke setiap paket yang dihasilkan.

Membongkar Segmentasi Paket TCP Besar