Bagikan melalui


Menunjukkan Segmen Coalesced

Satu unit coalesced (SCU) adalah urutan segmen TCP yang digabungkan menjadi satu segmen TCP sesuai dengan aturan yang ditentukan dalam Aturan untuk Coalescing Segmen TCP/IP. Bagian ini menjelaskan cara menunjukkan segmen batubara yang dihasilkan.

SCU harus:

  • Ditunjukkan dengan memanggil NdisMIndicateReceiveNetBufferLists.

  • Terlihat seperti segmen TCP normal yang diterima melalui kabel.

  • Tidak lebih besar dari panjang datagram IP hukum maksimum, seperti yang didefinisikan dalam bagian 3.1 RFC 791.

    Catatan Karena segmen dengan header ekstensi IPv6 tidak dapat digabungkan (lihat Kondisi Pengecualian yang Menghentikan Coalescing), ukuran SCU untuk datagram IPv6 juga dibatasi oleh panjang datagram hukum maksimum.

NIC atau driver miniport harus mengolah ulang checksum TCP dan IPv4, jika berlaku, sebelum menunjukkan segmen yang dikoalesced. Jika NIC atau driver miniport memvalidasi checksum TCP dan IPv4 tetapi tidak mengolah ulang untuk segmen yang dikoalesced, itu harus mengatur bendera TcpChecksumValueInvalid dan IpChecksumValueInvalid dalam struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO . Selain itu, dalam hal ini NIC atau driver miniport dapat secara opsional nol nilai checksum header TCP dan IPv4 di segmen.

Driver NIC dan miniport harus selalu mengatur bendera IpChecksumSucceeded dan TcpChecksumSucceeded dalam struktur NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO sebelum menunjukkan segmen coalesced.

Untuk informasi selengkapnya tentang aturan coalescing, lihat Aturan untuk Coalescing TCP/IP Segments.

Untuk informasi selengkapnya tentang pengecualian, lihat Kondisi Pengecualian yang Menghentikan Coalescing.

Coalescing diharapkan dilakukan dengan upaya terbaik. Perangkat keras mungkin tidak dapat bersaing dalam beberapa kasus, misalnya karena kurangnya sumber daya. Persyaratan yang dinyatakan di sini terutama untuk menentukan kapan tidak bersatu dan cara bersatu.

Pada tingkat tinggi, driver NIC dan miniport harus menangani penerimaan segmen TCP di atas kawat sebagai berikut:

  • Periksa segmen masuk untuk pengecualian sebagai berikut:

    1. Jika tidak ada pengecualian yang ditemui, periksa apakah segmen dapat digabungkan dengan segmen terakhir yang diterima untuk koneksi TCP yang sama sesuai aturan.

    2. Jika segmen memicu pengecualian, atau jika menyatukannya dengan segmen yang diterima sebelumnya tidak dimungkinkan, maka tunjukkan segmen satu per satu.

  • Driver NIC dan miniport tidak boleh menunjukkan segmen yang digabungkan sampai driver protokol mengaktifkan RSC seperti yang dijelaskan dalam Mengkueri dan Mengubah Status RSC.

  • Untuk koneksi TCP tertentu, indikasi data dari adaptor miniport ke tumpukan TCP/IP host dapat terdiri dari satu atau beberapa segmen yang digabungkan, dipisahkan oleh satu atau beberapa segmen individu yang tidak dapat digabungkan.

  • Driver NIC dan miniport tidak boleh menunda indikasi segmen TCP, baik digabungkan atau tidak. Secara khusus, NIC dan driver miniport tidak boleh menunda indikasi segmen dari satu panggilan prosedur yang ditangguhkan (DPC) ke panggilan berikutnya untuk mencoba menggabungkan segmen.

  • Driver NIC dan miniport dapat menggunakan timer untuk menentukan akhir coalescing. Namun, penanganan beban kerja sensitif latensi harus seefektif persyaratan batas DPC.