Bagikan melalui


Membuat Port Virtual

Port virtual (VPort) adalah objek data yang mewakili port internal pada sakelar NIC adaptor jaringan yang mendukung virtualisasi I/O root tunggal (SR-IOV). Setiap sakelar NIC memiliki port berikut untuk konektivitas jaringan:

  • Satu port fisik eksternal untuk konektivitas ke jaringan fisik eksternal.

  • Satu atau beberapa VPort internal yang terhubung ke Fungsi Fisik (PF) PCI Express (PCIe) atau Fungsi Virtual (VF).

    PF dilampirkan ke partisi induk Hyper-V dan diekspos sebagai adaptor jaringan virtual dalam sistem operasi manajemen yang berjalan di partisi tersebut.

    VF dilampirkan ke partisi anak Hyper-V dan diekspos sebagai adaptor jaringan virtual dalam sistem operasi tamu yang berjalan di partisi tersebut.

Ada dua jenis VPort:

Default VPort
VPort default menyediakan konektivitas jaringan ke komponen jaringan yang berjalan dalam sistem operasi manajemen. VPort default memiliki pengidentifikasi NDIS_DEFAULT_VPORT_ID.

Ketika driver miniport PF membuat dan mengonfigurasi sakelar NIC default, driver secara implisit membuat VPort default dan melampirkannya ke PF. VPort default tidak dapat dilampirkan ke VF.

VPort default selalu dalam status diaktifkan dan tidak dapat dihapus secara eksplisit. Driver miniport PF secara implisit menghapus VPort default hanya ketika menghapus sakelar NIC default.

Untuk informasi selengkapnya tentang cara membuat sakelar NIC dan VPort default pada sakelar, lihat Membuat Sakelar NIC.

Nondefault VPort
VPort nondefault tidak dibuat secara otomatis ketika sakelar NIC dibuat. Driver lapisan atas, seperti tumpukan virtualisasi, secara eksplisit membuat port ini dengan mengeluarkan permintaan metode OID dari OID_NIC_SWITCH_CREATE_VPORT. VPort nondefault dapat dilampirkan ke PF atau ke VF, dan hanya dapat dibuat setelah sakelar NIC dibuat.

VPort nondefault yang dilampirkan ke VF menyediakan konektivitas jaringan ke komponen jaringan yang berjalan di sistem operasi tamu. Setelah dibuat dan dilampirkan ke VF, VPort bukan bawaan berada dalam keadaan aktif.

VPort nondefault yang melekat pada PF menyediakan kemampuan offload jaringan tambahan ke komponen jaringan yang berjalan dalam sistem operasi manajemen. Misalnya, VPort nondefault pada PF dapat digunakan untuk menyediakan fitur offload yang serupa dengan virtual machine queue (VMQ).

Catatan VPort yang bukan bawaan hanya dapat dibuat setelah sakelar NIC dibuat.

Driver lapisan atas mengajukan permintaan metode pengidentifikasi objek (OID) OID_NIC_SWITCH_CREATE_VPORT untuk membuat VPort bukan default pada sakelar NIC yang ditentukan. Permintaan OID ini juga melampirkan VPort yang dibuat ke PF pada adaptor jaringan atau pada VF yang telah dialokasikan sebelumnya.

Anggota InformationBuffer dari struktur NDIS_OID_REQUEST berisi penunjuk ke strukturNDIS_NIC_SWITCH_VPORT_PARAMETERS . Setelah berhasil kembali dari permintaan OID_NIC_SWITCH_CREATE_VPORT, anggota VPortId dari struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS memiliki pengidentifikasi VPort yang unik di antara VPort pada sakelar NIC.

Driver yang berada di atas menginisialisasi struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS dengan informasi konfigurasi mengenai VPort nondefault yang akan dibuat. Informasi konfigurasi mencakup fungsi PCIe tempat VPort nondefault terpasang dan jumlah pasangan antrean untuk VPort nondefault.

Ketika menginisialisasi struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS, driver di lapisan atas harus melakukan hal berikut:

  • Anggota SwitchId harus disetel ke pengidentifikasi sakelar NIC yang sebelumnya dibuat di adaptor jaringan melalui permintaan metode OID dari OID_NIC_SWITCH_CREATE_SWITCH.

    Catatan Dimulai dengan Windows Server 2012, antarmuka SR-IOV hanya mendukung satu sakelar NIC pada adaptor jaringan. Sakelar ini dikenal sebagai sakelar NIC default . Saat membuat VPort yang bukan default, driver penutup harus mengatur anggota SwitchId ke pengidentifikasi NDIS_DEFAULT_SWITCH_ID.

  • Anggota VPortId harus diatur ke NDIS_DEFAULT_VPORT_ID.

  • Anggota AttachedFunctionId harus diatur ke pengidentifikasi VF atau PF tempat VPort nondefault dilampirkan.

    Nilai NDIS_PF_FUNCTION_ID menentukan PF. Jika tidak, nilai harus disetel ke pengidentifikasi VF yang sumber dayanya sebelumnya dialokasikan melalui permintaan metode OID OID_NIC_SWITCH_ALLOCATE_VF.

    Nota Lampiran VPort nondefault ke VF atau PF tidak dapat diubah setelah VPort nondefault dibuat.

Driver overlay juga dapat menentukan jumlah pasangan antrian yang ditetapkan ke VPort. Pasangan antrean adalah antrean pengiriman dan penerimaan pada adaptor jaringan yang dialokasikan untuk VPort. Jika adaptor jaringan mendukung pasangan antrean asimetris untuk VPort nondefault, driver lapisan atas dapat menentukan jumlah pasangan antrean yang berbeda untuk setiap VPort yang dibuat oleh driver. Untuk informasi selengkapnya, lihat Penetapan Pasangan Antrean simetris dan Asimetris.

Pengemudi lapis atas memanggil NdisOidRequest untuk mengajukan permintaan OID_NIC_SWITCH_CREATE_VPORT ke driver miniport PF dasar. Sebelum NDIS meneruskan permintaan metode OID ke driver miniport, NDIS melakukan hal berikut:

  1. NDIS memvalidasi parameter dalam struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS . Jika parameter mengalami kesalahan, NDIS gagal dalam permintaan metode OID dan tidak meneruskan permintaan ke driver miniport PF.

  2. NDIS menetapkan pengidentifikasi untuk VPort nondefault dalam rentang dari satu hingga (NumVPorts– 1), di mana NumVPorts adalah jumlah VPort yang telah dikonfigurasi driver miniport pada adaptor jaringan. Driver menentukan nomor ini dalam anggota NumVPorts dari struktur NDIS_NIC_SWITCH_INFO . Driver mengembalikan struktur ini melalui permintaan kueri OID OID_NIC_SWITCH_ENUM_SWITCHES.

    Nota Pengidentifikasi VPort NDIS_DEFAULT_VPORT_ID dicadangkan untuk VPort bawaan yang dilampirkan pada PF pada saklar NIC bawaan.

Pengidentifikasi VPort yang ditetapkan secara unik mengidentifikasi VPort nondefault pada sakelar NIC adaptor jaringan.

  1. NDIS mengatur anggota VPortId dari struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS dengan pengidentifikasi VPort yang ditetapkan.

Ketika driver miniport PF diberikan permintaan OID, driver tersebut mengalokasikan sumber daya perangkat keras dan perangkat lunak yang terkait dengan VPort nondefault yang ditentukan. Setelah semua sumber daya berhasil dialokasikan, driver miniport PF berhasil menyelesaikan OID dengan mengembalikan NDIS_STATUS_SUCCESS dari MiniportOidRequest.

Jika permintaan OID_NIC_SWITCH_CREATE_VPORT berhasil diselesaikan, driver miniport PF dan driver yang bersangkutan harus mempertahankan nilai VPortId dari VPort nondefault untuk operasi berikutnya. Nilai VPortId digunakan selama operasi ini:

Poin-poin berikut berlaku untuk pembuatan VPorts nondefault:

  • Filter untuk menerima pengidentifikasi kontrol akses media (MAC) dan LAN virtual (VLAN) dikonfigurasi setelah VPort dibuat. Driver lapisan atas mengatur filter penerima ini secara dinamis dengan mengeluarkan permintaan metode OID untuk OID_RECEIVE_FILTER_SET_FILTER. Filter terima juga dapat dipindahkan dari satu VPort ke VPort lainnya melalui permintaan set OID_RECEIVE_FILTER_MOVE_FILTER OID.

  • VPort nondefault yang dilampirkan ke VF berada dalam keadaan aktif saat dibuat. VPort tidak dapat dinonaktifkan jika dilampirkan ke VF.

    VPort nondefault yang dilampirkan ke PF dalam status dinonaktifkan saat dibuat. Driver yang melingkupi, seperti modul sakelar yang dapat diperluas Hyper-V, mengaktifkan VPort yang bukan default secara eksplisit setelah VPort berhasil dibuat dan terpasang pada PF. Ini dilakukan dengan mengeluarkan permintaan metode OID OID_NIC_SWITCH_VPORT_PARAMETERS ke driver miniport PF.

    Ketika driver yang mengendalikan lainnya mengeluarkan permintaan OID ini, itu mengirimkan struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS dengan anggota VPortState yang diatur ke NdisNicSwitchVPortStateActivated.

    Setelah VPort nondefault dalam keadaan diaktifkan, driver miniport PF dapat mengalokasikan memori bersama untuk VPort dengan memanggil NdisAllocateSharedMemory. Driver harus mengatur anggota VPortId dalam struktur NDIS_SHARED_MEMORY_PARAMETERS ke nilai pengidentifikasi VPort.

Catatan Ketika VPort nondefault berada dalam status aktif, status tersebut hanya diubah menjadi nonaktif jika dihapus melalui permintaan set OID OID_NIC_SWITCH_DELETE_VPORT.