Udostępnij za pośrednictwem


Niestandardowe porty wirtualne i VMQ

Domyślny przełącznik karty sieciowej jest składnikiem adaptera sieciowego obsługującego interfejs wirtualizacji we/wy z pojedynczym rdzeniem (SR-IOV). Przełącznik zawsze dołącza domyślny port wirtualny (VPort) do fizycznej funkcji PCI Express (PF). Przełącznik może dołączyć jeden lub więcej niestandardowych VPorts do PF. Aby uzyskać więcej informacji, zobacz Tworzenie portu wirtualnego.

Stos wirtualizacji działa w systemie operacyjnym zarządzającym partycją nadrzędną Hyper-V. Ten stos tworzy VPorts przez wysyłanie żądań metody identyfikatora obiektu (OID) OID_NIC_SWITCH_CREATE_VPORT. Jednak stos może utworzyć więcej wirtualnych portów niż liczba aktywnych funkcji wirtualnych PCIe, dla których zasoby zostały przydzielone za pomocą żądań metody OID OID_NIC_SWITCH_ALLOCATE_VF.

Jeśli SR-IOV jest włączona na karcie sieciowej, należy wyłączyć pełną funkcjonalność VMQ. Jednak niestandardowe VPorty, które są dołączone do PF i nie są dołączone do VF, mogą zapewnić takie same funkcje jak interfejs kolejki maszyn wirtualnych (VMQ). W poniższych punktach omówiono, w jaki sposób VPorts może zapewnić przyspieszone sprzętowo ścieżki danych na potrzeby transferu pakietów, które są podobne do maszyny wirtualnej VMQ:

  • VmQ określa docelową maszynę wirtualną przez filtrowanie kontroli dostępu do multimediów (MAC) na sprzęcie. Pozwala to uniknąć kosztów związanych z określeniem docelowej maszyny wirtualnej w stosie wirtualizacji.

    Począwszy od systemu Windows Server 2012, stos wirtualizacji konfiguruje filtry odbierania na VPort, wydając żądania metody OID OID_RECEIVE_FILTER_SET_FILTER. W przypadku tego żądania identyfikatora OID stos wirtualizacji przekazuje strukturę NDIS_RECEIVE_FILTER_PARAMETERS określającą adres MAC i identyfikator wirtualnej sieci LAN (VLAN) skojarzony z wirtualną kartą sieciową. Podobnie jak w przypadku vmQ, może skonfigurować wiele par adresów MAC i identyfikatorów sieci VLAN w sieci VPort. Stos wirtualizacji określa również docelowy port VPort, do którego zostanie ustawiony filtr odbierania.

    Karta sieciowa SR-IOV wykonuje podobne filtrowanie sprzętowe na podstawie kryteriów filtrowania określonych za pośrednictwem żądania OID_RECEIVE_FILTER_SET_FILTER. Gdy pakiet jest odbierany w sprzętowej kolejce odbiorczej VPort, sterownik miniportu określa źródłowy identyfikator VPort w danych poza pasmem (OOB) struktury NET_BUFFER_LIST dla pakietu. Na podstawie identyfikatora VPort stos wirtualizacji określa docelową maszynę wirtualną i wskazuje pakiety do stosu sieciowego uruchomionego na maszynie wirtualnej.

    Podobnie stos wirtualizacji określa docelowy identyfikator VPort w danych OOB struktury NET_BUFFER_LIST dla pakietu wysyłanego. Gdy sterownik obsługuje żądanie wysyłania pakietu, umieszcza pakiet w kolejce transmisji sprzętowej określonego VPortu.

    Identyfikator VPort można uzyskać z danych OOB pakietu przy użyciu makra NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID.

    Aby uzyskać więcej informacji na temat tego procesu, zobacz przepływ pakietów za pośrednictwem portu wirtualnego.

    Aby uzyskać więcej informacji na temat wymagań dotyczących filtrowania odbierania dla karty sieciowej SR-IOV, zobacz Określanie możliwości filtrowania odbierania.

  • Usługa VMQ zapewnia przerwania i współbieżność obsługi DPC.

    Począwszy od NDIS 6.30 i Windows Server 2012, można skonfigurować wirtualny port dołączony do PF, aby mieć określone przypisanie do konkretnego procesora. Stos wirtualizacji konfiguruje koligację procesora CPU i parametry moderowania przerwań dla usługi VPort przy użyciu żądań metody OID OID_NIC_SWITCH_CREATE_VPORT lub OID_NIC_SWITCH_VPORT_PARAMETERS. Dzięki temu stos wirtualizacji konfiguruje parametry oparte na przerwaniach podobne do vmQ w celu przerwania i współbieżności DPC.

    Na przykład, gdy karta sieciowa SR-IOV odbiera pakiety na VPort skonfigurowanym do określonego przypisania procesora, karta generuje przerwania dla tego procesora. Sterownik miniportu wskazuje odebrane pakiety do NDIS i stosu wirtualizacji dla tego procesora.

Sterownik miniportu PF ogłasza swoje możliwości SR-IOV w kontekście wywołania MiniportInitializeEx. Sterownik inicjuje strukturę NDIS_SRIOV_CAPABILITIES ze swoimi możliwościami i wywołuje NdisMSetMiniportAttributes, aby zarejestrować swoje możliwości. Aby uzyskać więcej informacji, zobacz Określanie możliwości SR-IOV.

Następujące składowe struktury NDIS_NIC_SWITCH_CAPABILITIES wpływają na sposób przydzielania VPortów:

  • MaxNumVPorts, która określa maksymalną liczbę wirtualnych portów, które można utworzyć na karcie sieciowej.

  • MaxNumVFs, który określa maksymalną liczbę VFs, które można przydzielić na karcie sieciowej.

Począwszy od NDIS 6.30, gdy sterownik miniportu inicjuje strukturę NDIS_NIC_SWITCH_CAPABILITIES, może ustawić flagę NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL w elemencie NicSwitchCapabilities. Ta flaga określa, że niestandardowe wirtualne porty (VPorts) można utworzyć w niezastrzeżony sposób z puli VPort na karcie sieciowej. Umożliwia to tworzenie i przypisywanie dostępnych niezdefiniowanych wirtualnychportów zgodnie z potrzebami do pf i przydzielonych plików VFs. Jeśli karta sieciowa obsługuje interfejs VMQ, niedomyślne VPorty przypisane do PF mogą być również używane dla kolejek odbiorczych maszyn wirtualnych.

Jeśli ustawiono flagę NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL, dostępne nie-domyślne VPorty są tworzone i przypisywane do PF i przydzielonych VF-ów. Maksymalna liczba wirtualnych portów, które można utworzyć i przypisać do PF, jest taka sama jak wartość, którą sterownik zgłasza w elementu członkowskiego MaxNumVPorts. Sterownik miniportu musi zarezerwować jeden VPort do użycia jako domyślny VPort przypisany do PF. W związku z tym maksymalna liczba niestandardowych VPortów, które można przypisać do PF i używanych w kolejce odbierania dla maszyn wirtualnych, to (MaxNumVPorts– 1).

Notatka

 Jeśli ta flaga jest ustawiona, tworzenie i przypisywanie niestandardowych portów VPort nie są zarezerwowane dla alokacji VF. W związku z tym mogą wystąpić sytuacje, w których VF może nie zostać przypisany VPort, jeśli pula została wyczerpana z dostępnych VPortów. 

Jeśli flaga NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL nie jest ustawiona, tworzenie i przypisywanie niezdefinicyjnych portów VPorts jest zarezerwowane dla przypisania VF. Maksymalna liczba dodatkowych niestandardowych VPortów, które można utworzyć i przypisać do PF oraz używać do kolejek odbiorczych maszyn wirtualnych, to (MaxNumVPortsMaxNumVFs).

Aby uzyskać więcej informacji o VMQ, zobacz Kolejka maszyn wirtualnych (VMQ).