Bagikan melalui


Pengantar cincin jaring

gambaran umum 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 paketnya sendiri, cincin fragmen, dan deskriptor dalam cincin tersebut. Oleh karena itu, operasi transfer data jaringan dari setiap antrean paket sepenuhnya 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 pos dan drainase.

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 subbagian drainNET_RING. Ketika BeginIndex ditingkatkan, driver mengosongkan elemen dari cincin dan mentransfer kepemilikannya ke sistem operasi. Ya Penggerak klien NIC
Indeks Berikutnya Awal subbagian posdari NET_RING. NextIndex membagi bagian cincin yang dimiliki driver klien ke dalam subbagian pos dan pengurasan. Ketika NextIndex ditingkatkan, driver mengirimkan buffer ke perangkat keras dan mentransfer buffer ke bagian keluaran dari cincin. Tidak Driver klien NIC
IndeksAkhir Akhir dari rentang elemen dalam NET_RING yang dimiliki driver klien NIC. Driver klien memiliki elemen hingga EndIndex - 1 inklusif. Ya NetAdapterCx

Memanipulasi indeks ini selama callback 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 hingga 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 memudahkan dalam memisahkan bagian 'post' dan 'drain' dari bagian driver klien dalam lingkaran.

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 selesai untuk ditransfer ke OS. Jika NextIndex sama dengan EndIndex, driver klien tidak memiliki buffer untuk diposting ke perangkat keras.

Karena cincin net berbentuk melingkar, nilai indeks pada akhirnya akan membungkus dari ujung buffer 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 jaringan, lihat Manajemen elemen jaringan.

Mengirim dan menerima data jaringan dengan cincin jaringan

Lihat topik berikut untuk informasi selengkapnya dan contoh kode tentang mengirim dan menerima data jaringan dalam lingkaran jaringan.

Mengirim data jaringan dengan cincin jaringan

Menerima data jaringan dengan cincin jaringan