Mengatur Filter Terima pada Port Virtual

Setelah port virtual (VPort) dibuat pada sakelar NIC adaptor jaringan, driver yang terlalu mengandalkan dapat mengatur filter terima pada VPort. Hanya driver yang membuat VPort yang dapat mengatur filter terima pada VPort tersebut

Topik ini berisi informasi berikut:

Mengatur Filter Terima pada VPort

Menggunakan Bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO

Menggunakan Pengidentifikasi Filter

Menangani Filter Penerimaan di VPort

Untuk informasi selengkapnya tentang cara membuat VPort, lihat Membuat Port Virtual.

Catatan Karena VPort default selalu ada dan tidak pernah dibuat secara eksplisit, driver yang terlalu berlebihan dapat mengatur filter terima pada VPort default. Driver yang terlalu berlebih tidak memiliki VPort default. Oleh karena itu, semua driver protokol yang terikat ke adaptor jaringan dapat menggunakan VPort default. VPort default memiliki nilai pengidentifikasi NDIS_DEFAULT_VPORT_ID.

Mengatur Filter Terima pada VPort

Untuk mengatur dan mengonfigurasi filter pada VPort, driver yang terlalu berlebihan mengeluarkan permintaan metode pengidentifikasi objek (OID) OID_RECEIVE_FILTER_SET_FILTER. Anggota InformationBuffer dari struktur NDIS_OID_REQUEST awalnya berisi penunjuk ke struktur NDIS_RECEIVE_FILTER_PARAMETERS .

Sebelum driver yang terlalu berlebihan mengeluarkan permintaan metode OID ini, driver harus menginisialisasi struktur NDIS_RECEIVE_FILTER_PARAMETERS . Driver harus mengatur anggota struktur ini dengan cara berikut:

  • Anggota FilterType harus diatur ke nilai enumerasi NDIS_RECEIVE_FILTER_TYPE .

    Catatan Dimulai dengan NDIS 6.30, hanya jenis filter NdisReceiveFilterTypeVMQueue yang didukung untuk antarmuka virtualisasi I/O root tunggal (SR-IOV).

  • Anggota QueueId harus diatur ke NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • Anggota VPortId harus diatur ke pengidentifikasi yang terkait dengan VPort. Driver yang terlalu berlebihan mendapatkan pengidentifikasi VPort melalui salah satu cara berikut:

  • Anggota FilterId harus diatur ke NDIS_DEFAULT_RECEIVE_FILTER_ID.

    Catatan NDIS menetapkan pengidentifikasi filter unik dalam anggota ini sebelum meneruskan permintaan OID ke driver miniport untuk diproses.

  • FieldParametersArrayOffset, FieldParametersArrayNumElements, dan FieldParametersArrayElementSize anggota struktur NDIS_RECEIVE_FILTER_PARAMETERS harus diatur dengan tepat untuk menentukan array struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS. Setiap struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS dalam array menetapkan kriteria pengujian filter untuk satu bidang di header jaringan.

    Untuk antarmuka SR-IOV, parameter pengujian bidang berikut didefinisikan:

    • Alamat kontrol akses media tujuan (MAC) dalam paket sama dengan alamat MAC yang ditentukan.

    • Pengidentifikasi LAN virtual (VLAN) dalam paket sama dengan pengidentifikasi VLAN yang ditentukan.

Setelah berhasil mengembalikan dari permintaan metode OID, anggota InformationBuffer dari struktur NDIS_OID_REQUEST berisi penunjuk ke struktur NDIS_RECEIVE_FILTER_PARAMETERS dengan pengidentifikasi filter baru.

Menggunakan Bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO

Anggota Bendera dari struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS menentukan tindakan yang akan dilakukan untuk filter terima. Poin-poin berikut berlaku untuk bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO :

  • Jika bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO diatur di anggota Bendera , adaptor jaringan harus menunjukkan hanya paket yang diterima yang cocok dengan semua kriteria pengujian berikut:

    • Paket dengan alamat MAC yang cocok.

    • Paket yang tidak memiliki tag VLAN atau memiliki pengidentifikasi VLAN nol.

    Jika bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO diatur, adaptor jaringan tidak boleh menunjukkan paket yang memiliki alamat MAC yang cocok dan pengidentifikasi VLAN bukan nol.

    Catatan Jika tumpukan virtualisasi mengatur filter alamat MAC dan tidak ada filter pengidentifikasi VLAN yang dikonfigurasi oleh permintaan set OID_RECEIVE_FILTER_SET_FILTER , sakelar juga mengatur bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO .

  • Dimulai dengan NDIS 6.30, jika bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO tidak diatur dan tidak ada filter pengidentifikasi VLAN yang dikonfigurasi oleh permintaan metode OID_RECEIVE_FILTER_SET_FILTER , driver miniport harus melakukan salah satu hal berikut:

    • Driver miniport harus mengembalikan status gagal untuk permintaan metode OID_RECEIVE_FILTER_SET_FILTER .

    • Driver miniport harus mengonfigurasi adaptor jaringan untuk memeriksa dan memfilter bidang alamat MAC yang ditentukan. Jika tag VLAN ada dalam paket yang diterima, adaptor jaringan harus menghapusnya dari data paket. Driver miniport harus meletakkan tag VLAN dalam NDIS_NET_BUFFER_LIST_8021Q_INFO yang terkait dengan struktur NET_BUFFER_LIST paket.

  • Jika driver protokol mengatur filter alamat MAC dan filter pengidentifikasi VLAN dengan permintaan metode OID_RECEIVE_FILTER_SET_FILTER , driver protokol tidak mengatur bendera NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO di salah satu bidang filter. Dalam hal ini, driver miniport harus menunjukkan paket yang cocok dengan alamat MAC yang ditentukan dan pengidentifikasi VLAN. Artinya, driver miniport tidak boleh menunjukkan paket dengan alamat MAC yang cocok yang memiliki pengidentifikasi VLAN nol atau paket yang tidak diberi tag.

Menggunakan Pengidentifikasi Filter

NDIS menetapkan pengidentifikasi filter di anggota FilterId dari struktur NDIS_RECEIVE_FILTER_PARAMETERS dan meneruskan permintaan metode OID OID_RECEIVE_FILTER_SET_FILTER ke driver miniport yang mendasar. Setiap filter yang diatur pada VPort memiliki pengidentifikasi filter unik untuk adaptor jaringan. Artinya, pengidentifikasi filter tidak diduplikasi pada antrean yang berbeda yang dikelola adaptor jaringan.

Driver yang terlalu berlebihan harus menggunakan pengidentifikasi filter yang disediakan NDIS di permintaan OID nanti untuk mengubah parameter filter atau untuk membebaskan filter.

Ketika NDIS menerima permintaan OID untuk mengatur filter pada VPort, NDIS memverifikasi parameter filter. Setelah NDIS mengalokasikan sumber daya yang diperlukan dan pengidentifikasi filter, NDIS mengirimkan permintaan OID ke adaptor jaringan yang mendasar. Jika adaptor jaringan berhasil mengalokasikan sumber daya perangkat lunak dan perangkat keras yang diperlukan untuk filter, adaptor jaringan akan menyelesaikan permintaan OID dengan NDIS_STATUS_SUCCESS.

Driver miniport harus mempertahankan pengidentifikasi filter untuk filter penerima yang dialokasikan. NDIS menggunakan pengidentifikasi filter filter dengan permintaan OID nanti untuk mengubah parameter filter penerima atau menghapus filter terima. Untuk informasi selengkapnya tentang cara mengubah parameter dan menghapus filter, lihat Mendapatkan dan Memperbarui Parameter Antrean VM dan Menghapus Filter VMQ.

Menangani Filter Penerimaan di VPort

Driver miniport memprogram adaptor jaringan berdasarkan filter dengan cara berikut:

  • Semua parameter pengujian bidang untuk filter tertentu harus cocok untuk menetapkan paket ke VPort.

  • Beberapa filter dapat diatur pada VPort.

  • Paket harus ditetapkan ke VPort jika salah satu filter lolos.

Adaptor jaringan menggabungkan hasil dari semua pengujian bidang dengan operasi AND logis. Artinya, jika ada pengujian bidang yang disertakan dalam array struktur NDIS_RECEIVE_FILTER_FIELD_PARAMETERS gagal, paket jaringan tidak memenuhi kriteria filter yang ditentukan.

Ketika adaptor jaringan menguji paket yang diterima terhadap kriteria filter ini, adaptor jaringan harus mengabaikan semua bidang dalam paket yang tidak memiliki kriteria pengujian yang ditentukan.