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 implisit ketika sakelar NIC dibuat. Driver yang terlalu berlebihan, 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 nondefault dalam keadaan diaktifkan.

VPort nondefault yang dilampirkan ke PF menyediakan kemampuan offload jaringan tambahan ke komponen jaringan yang berjalan dalam sistem operasi manajemen. Misalnya, VPort nondefault pada PF dapat digunakan untuk memberikan kemampuan offload yang mirip dengan antarmuka antrean komputer virtual (VMQ).

Catatan VPort nondefault hanya dapat dibuat setelah sakelar NIC dibuat.

Driver yang terlalu berlebihan mengeluarkan permintaan metode pengidentifikasi objek (OID) OID_NIC_SWITCH_CREATE_VPORT untuk membuat VPort nondefault pada sakelar NIC tertentu. Permintaan OID ini juga melampirkan VPort yang dibuat ke PF adaptor jaringan atau VF yang dialokasikan sebelumnya.

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

Driver yang terlalu berlebihan menginisialisasi struktur NDIS_NIC_SWITCH_VPORT_PARAMETERS dengan informasi konfigurasi tentang 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 yang terlalu berlebihan harus melakukan hal berikut:

  • Anggota SwitchId harus diatur ke pengidentifikasi sakelar NIC yang sebelumnya dibuat pada adaptor jaringan melalui permintaan metode OID 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 nondefault, driver yang terlalu berlebihan 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 diatur ke pengidentifikasi VF yang sumber dayanya sebelumnya dialokasikan melalui permintaan metode OID OID_NIC_SWITCH_ALLOCATE_VF.

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

Driver yang terlalu berlebihan juga dapat menentukan jumlah pasangan antrean yang ditetapkan ke VPort. Pasangan antrean adalah antrean transmisi dan terima pada adaptor jaringan yang ditetapkan ke VPort. Jika adaptor jaringan mendukung pasangan antrean asimetris untuk VPort nondefault, driver yang terlalu berlebihan dapat menentukan jumlah pasangan antrean yang berbeda untuk setiap VPort yang dibuat driver. Untuk informasi selengkapnya, lihat Penetapan Pasangan Antrean Simetris dan Asimetris.

Driver yang terlalu berlebihan memanggil NdisOidRequest untuk mengeluarkan permintaan OID_NIC_SWITCH_CREATE_VPORT ke driver miniport PF yang mendasar. 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 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.

    Catatan Pengidentifikasi VPort NDIS_DEFAULT_VPORT_ID disediakan untuk VPort default yang dilampirkan ke PF pada sakelar NIC default.

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

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

Ketika driver miniport PF mengeluarkan permintaan OID, driver 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 terlalu berlebihan harus mempertahankan nilai VPortId dari VPort nondefault untuk operasi berturut-turut. Nilai VPortId digunakan selama operasi ini:

Poin-poin berikut berlaku untuk pembuatan VPort nondefault:

  • Menerima filter untuk pengidentifikasi kontrol akses media (MAC) dan LAN virtual (VLAN) dikonfigurasi pada VPort setelah dibuat. Driver yang terlalu berlebihan secara dinamis mengatur filter terima ini dengan mengeluarkan permintaan metode OID dari 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 dalam keadaan diaktifkan saat dibuat. VPort tidak dapat dinonaktifkan jika dilampirkan ke VF.

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

    Ketika driver yang terlalu berlebihan mengeluarkan permintaan OID ini, ia melewati 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 dalam status diaktifkan, VPort hanya diatur ke status dinonaktifkan ketika dihapus melalui permintaan set OID OID_NIC_SWITCH_DELETE_VPORT.