Séquence d’initialisation de fonction virtuelle
Une carte réseau qui prend en charge la virtualisation d’E/S racine unique (SR-IOV) doit être en mesure de prendre en charge les composants matériels suivants :
Une fonction physique (PF) PCI Express (PCIe). Le pf existe toujours sur la carte réseau et est attaché à la partition parente Hyper-V.
Pour plus d’informations sur ce composant matériel, consultez Fonction physique (PF) SR-IOV.
Une ou plusieurs fonctions virtuelles (VF) PCIe. Chaque VF doit être initialisé et attaché à une partition enfant Hyper-V avant que les composants réseau du système d’exploitation invité puissent envoyer ou recevoir des paquets sur le VF.
Pour plus d’informations sur ce composant matériel, consultez Fonctions virtuelles SR-IOV.
Le pilote pf miniport, qui s’exécute dans le système d’exploitation de gestion de la partition parente Hyper-V, initialise et alloue des ressources pour une VF sur la carte réseau SR-IOV. Après que NDIS a appelé la fonction MiniportInitializeEx du pilote PF miniport, NDIS et la pile de virtualisation peuvent émettre des demandes d’identificateur d’objet (OID) au pilote pf miniport pour effectuer les opérations suivantes :
Créez un commutateur de carte réseau sur la carte réseau. Le commutateur de carte réseau ponte le trafic réseau entre les machines virtuelles, pf et le port réseau physique.
Pour plus d’informations, consultez Commutateurs de carte réseau.
Note À compter de Windows Server 2012, l’interface SR-IOV ne prend en charge qu’un seul commutateur de carte réseau sur la carte réseau. Ce commutateur est appelé commutateur de carte réseau par défaut et est référencé par l’identificateur de NDIS_DEFAULT_SWITCH_ID.
Demandez au pilote PF miniport d’initialiser et d’allouer des ressources pour une VF sur la carte réseau.
Pour plus d’informations, consultez Fonctions virtuelles SR-IOV.
Créez un port virtuel (VPort) sur le commutateur de carte réseau et attachez-le à la VF.
Pour plus d’informations, consultez Ports virtuels (VPorts).
Le diagramme suivant montre les étapes impliquées dans l’initialisation VF.
NDIS, la pile de virtualisation et le pilote pf miniport suivent ces étapes pendant la séquence d’initialisation VF :
NDIS lit la configuration du commutateur par défaut à partir du Registre et émet une demande de méthode OID de OID_NIC_SWITCH_CREATE_SWITCH pour provisionner le commutateur dans la carte réseau. Les paramètres transmis dans cette demande OID incluent des informations sur la façon de configurer des ressources matérielles importantes telles que les machines virtuelles et les ports virtuels. Il inclut également des informations sur la façon de distribuer les ressources entre les VPorts non définis par défaut et les VPort par défaut qui sont attachés au pf.
Une fois que l’OID a été correctement effectué par le pilote pf miniport, le commutateur de carte réseau est prêt à être utilisé pour créer des VPorts et y allouer des machines virtuelles.
Pour plus d’informations sur la création d’un commutateur de carte réseau, consultez Création d’un commutateur de carte réseau.
Une machine virtuelle virtuelle est traitée comme un mécanisme de déchargement pour la carte réseau de machine virtuelle. Cet adaptateur est exposé dans le système d’exploitation invité qui s’exécute dans la partition enfant Hyper-V. Par défaut, les composants réseau du système d’exploitation invité envoient et reçoivent des paquets sur le chemin des données synthétiques basées sur le logiciel. Toutefois, si une partition enfant est activée pour le déchargement VF, la pile de virtualisation émet des requêtes OID au pilote miniport PF pour l’allocation de ressources et l’initialisation d’une VF. Une fois que le VF est attaché à la partition enfant et à un VPort sur le commutateur de carte réseau, les composants réseau envoient et reçoivent des paquets via le chemin des données VF. Pour plus d’informations sur ces chemins de données, consultez Chemins de données SR-IOV.
Si une partition enfant Hyper-V a été activée pour le déchargement VF, la pile de virtualisation émet une demande de méthode OID de OID_NIC_SWITCH_ALLOCATE_VF au pilote pf miniport. Les paramètres passés dans cette requête OID incluent l’identificateur du commutateur de carte réseau sur lequel la VF est allouée. D’autres paramètres incluent les identificateurs de la partition enfant à laquelle la VF sera attachée.
Le pilote pf miniport alloue les ressources matérielles et logicielles nécessaires pour la VF. Le pilote pf miniport détermine également l’identificateur de demandeur (RID) PCIe pour la VF en appelant NdisMGetVirtualFunctionLocation. Le RID est utilisé pour le remapping DMA et les interruptions d’interruption lorsque les demandes et les interruptions DMA sont générées par le VF.
Le RID et l’identificateur VF sont retournés par le pilote pf miniport lorsqu’il termine correctement la demande de OID_NIC_SWITCH_ALLOCATE_VF .
Pour plus d’informations sur l’allocation de ressources pour un VF, consultez Allocation de ressources pour une fonction virtuelle.
La pile de virtualisation crée un VPort sur le commutateur de carte réseau en émettant une demande de méthode OID de OID_NIC_SWITCH_CREATE_VPORT au pilote pf miniport. Les paramètres passés dans cette demande OID incluent l’identificateur du commutateur de carte réseau sur lequel le VPort doit être créé. D’autres paramètres incluent l’identificateur de la VF à laquelle le VPort sera attaché.
Note Le VPort par défaut sur le commutateur de carte réseau existe toujours et est attaché au pf. Un seul VPort non défini par défaut peut être créé et attaché à une VF.
Avant que NDIS transfère la requête OID au pilote pf miniport, il alloue un identificateur VPort valide unique sur la carte réseau.
Lorsque le pilote pf miniport gère la requête OID, il alloue les ressources matérielles requises pour le VPort et conserve l’identificateur du VPort. Cet identificateur est utilisé dans les requêtes OID et les appels de fonction SR-IOV ultérieurs.
Pour plus d’informations sur la création d’un port virtuel, consultez Création d’un port virtuel.
La partition enfant Hyper-V peut être démarrée bien avant l’allocation d’un VF et d’un VPort. Pendant ce temps, les composants réseau du système d’exploitation invité envoient et reçoivent des paquets sur le chemin des données synthétiques. Cela implique le trafic de paquets sur le VPort par défaut qui est attaché au pf. Pour relier le trafic à la partition enfant, la pile de virtualisation configure le VPort par défaut avec les filtres MAC (Media Access Control) et VLAN (Virtual LAN) pour la carte réseau de machine virtuelle de la partition enfant.
Une fois les ressources pour la VF et le VPort allouées, la pile de virtualisation émet une demande de méthode OID de OID_RECEIVE_FILTER_MOVE_FILTER au pilote pf miniport. Cette requête OID déplace les filtres MAC et VLAN pour la carte réseau de machine virtuelle du VPort par défaut vers le VPort qui est attaché à la VF. Cela entraîne le transfert des paquets qui correspondent à ces filtres vers le VF VPort via le chemin des données VF.
Note Les filtres de réception existants peuvent être déplacés du VPort par défaut vers le VF VPort à l’aide de OID_RECEIVE_FILTER_MOVE_FILTER. En outre, de nouveaux filtres peuvent être définis sur le VF VPort à l’aide de OID_RECEIVE_FILTER_SET_FILTER.
Une fois que le VF et le VPort ont été créés avec succès et que les filtres MAC ont été définis sur le VPort, la pile de virtualisation notifie le fournisseur de services virtuels (VSP) PCI virtuel (VPCI). Ce VSP s’exécute dans le système d’exploitation de gestion de la partition parente Hyper-V. La notification informe le VSP VPCI que le VF qui a été correctement alloué et attaché à une partition enfant. Le VSP VPCI envoie des messages via le bus de machine virtuelle (VMBus) au client de service virtuel VPCI qui s’exécute dans le système d’exploitation invité de la partition enfant. Le VSC VPCI est un pilote de bus qui expose un périphérique PCI pour la carte réseau VF.
Une fois la carte réseau VF exposée, le sous-système PnP qui s’exécute dans le système d’exploitation invité détecte la carte et charge le pilote miniport VF. Ce pilote s’inscrit auprès de NDIS. Une fois que le pilote VF miniport a été initialisé et que les filtres de paquets appropriés sont configurés sur la carte réseau VF, le chemin des données VF est entièrement opérationnel. Par conséquent, le trafic de paquets dans le système d’exploitation invité a basculé vers ce chemin de données à partir du chemin des données synthétiques.