Pengantar cincin bersih

ringkasan NET_RING

NET_RING adalah buffer melingkar data jaringan yang dibagikan antara NetAdapterCx dan driver klien. Setiap antrean paket dalam driver klien memiliki dua cincin: cincin paket untuk deskriptor paket inti, dan cincin fragmen untuk setiap deskriptor fragmen paket.

Untuk informasi selengkapnya tentang deskriptor paket, lihat Deskriptor paket dan ekstensi.

Setiap deskriptor inti dalam cincin paket memiliki indeks ke dalam cincin fragmen untuk menemukan deskriptor fragmen paket tersebut. Struktur data lain, NET_RING_COLLECTION, mengelompokkan cincin paket dan cincin fragmen bersama-sama untuk antrean paket tertentu seperti yang ditunjukkan dalam diagram berikut.

Diagram yang memperlihatkan tata letak multi-cincin dari struktur NET_RING_COLLECTION, termasuk cincin paket dan cincin fragmen.

Setiap antrean paket memiliki struktur NET_RING_COLLECTION sendiri, dan, akibatnya, cincin paket, cincin fragmen, dan deskriptornya sendiri di cincin tersebut. Oleh karena itu, operasi transfer data jaringan dari setiap antrean paket benar-benar independen. Untuk mempelajari selengkapnya tentang antrean paket, lihat Mengirimkan dan menerima antrean.

NET_RING kepemilikan elemen

Setiap elemen dalam NET_RING dimiliki oleh driver klien atau NetAdapterCx. Kepemilikan dikendalikan oleh tiga indeks, yang menandai bagian NET_RING. Indeks ini dijelaskan dalam tabel berikut. Tindakan memindahkan indeks ini dijelaskan oleh semantik pasca dan pengurasan .

nama indeks NET_RING Deskripsi Diperlukan untuk mentransfer data jaringan Dimodifikasi oleh
BeginIndex Awal rentang elemen dalam NET_RING yang dimiliki driver klien NIC. BeginIndex juga merupakan awal dari sub bagian pengurasanNET_RING. Ketika BeginIndex bertahap, driver menguras elemen dari cincin dan mentransfer kepemilikannya ke OS. Ya Driver klien NIC
NextIndex Awal sub bagian dariNET_RING. NextIndex membagi bagian cincin yang dimiliki driver klien ke dalam subbagian pos dan pengurasan. Ketika NextIndex bertahap, driver memposting buffer ke perangkat keras dan mentransfer buffer ke bagian pengurasan cincin. Tidak Driver klien NIC
EndIndex Akhir rentang elemen dalam NET_RING yang dimiliki driver klien NIC. Driver klien memiliki elemen hingga EndIndex - 1 inklusif. Ya NetAdapterCx

Memanipulasi indeks ini selama panggilan balik EvtPacketQueueAdvance antrean paket adalah cara driver klien mentransfer data jaringan antara sistem dan perangkat keras kartu antarmuka jaringan (NIC).

Driver klien memiliki setiap elemen dari BeginIndex ke EndIndex - 1 inklusif. Misalnya, jika BeginIndex adalah 2 dan EndIndex adalah 5, driver klien memiliki tiga elemen: elemen dengan nilai indeks 2, 3, dan 4.

Jika BeginIndex sama dengan EndIndex, driver klien tidak memiliki elemen apa pun.

NetAdapterCx memposting elemen ke buffer cincin dengan menambahkan EndIndex. Driver klien menguras buffer dan mengembalikan kepemilikan elemen dengan memajukan BeginIndex.

NextIndex bersifat opsional untuk digunakan oleh driver klien, dan disediakan untuk kenyamanan dalam memisahkan subbagian pos dan pengurasan bagian driver klien dari cincin.

Elemen dengan nilai indeks antara NextIndex dan EndIndex - 1 inklusif dimiliki oleh klien tetapi belum diposting ke perangkat keras. Jika NextIndex sama dengan BeginIndex, driver klien tidak memiliki buffer yang telah selesai untuk ditransfer ke OS. Jika NextIndex sama dengan EndIndex, driver klien tidak memiliki buffer untuk diposting ke perangkat keras.

Karena cincin bersih melingkar, akhirnya nilai indeks membungkus di sekitar akhir buffer dan kembali ke awal. NetAdapterCx secara otomatis menangani pembungkusan nilai indeks di sekitar cincin ketika driver klien memanggil metode yang sesuai.

Untuk informasi spesifik tentang mengelola elemen dalam cincin bersih, lihat Manajemen elemen net ring.

Mengirim dan menerima data jaringan dengan cincin bersih

Lihat topik berikut untuk informasi selengkapnya dan sampel kode tentang mengirim dan mengembangkan data jaringan dalam cincin bersih.

Mengirim data jaringan dengan cincin bersih

Menerima data jaringan dengan cincin bersih