Fonctions virtuelles SR-IOV

Une fonction virtuelle PCI Express (PCIe) est une fonction PCIe légère sur une carte réseau qui prend en charge la virtualisation d’E/S racine unique (SR-IOV).

La VF est associée à la fonction physique PCIe (PF) sur la carte réseau et représente une instance virtualisée de la carte réseau. Chaque VF a son propre espace de configuration PCI. Chaque VF partage également une ou plusieurs ressources physiques sur la carte réseau, telles qu’un port réseau externe, avec le pf et d’autres machines virtuelles.

Un VF n’est pas un appareil PCIe à part entière. Toutefois, il fournit un mécanisme de base pour transférer directement des données entre une partition enfant Hyper-V et la carte réseau SR-IOV sous-jacente. Les ressources logicielles associées au transfert de données sont directement disponibles pour la VF et sont isolées de l’utilisation par les autres machines virtuelles ou par le pf. Toutefois, la configuration de la plupart de ces ressources est effectuée par le pilote pf miniport qui s’exécute dans le système d’exploitation de gestion de la partition parente Hyper-V.

Une VF est exposée en tant que carte réseau virtuelle (carte réseau VF) dans le système d’exploitation invité qui s’exécute dans une partition enfant Hyper-V. Une fois que la VF est associée à un port virtuel (VPort) sur le commutateur de carte réseau de la carte réseau SR-IOV, le pilote PCI virtuel (VPCI) qui s’exécute dans la machine virtuelle expose la carte réseau VF. Une fois exposé, le gestionnaire PnP dans le système d’exploitation invité charge le pilote VF miniport.

Notes

Une partition enfant Hyper-V est également appelée machine virtuelle.

Le pilote de miniport VF est un pilote miniport NDIS installé sur la machine virtuelle pour gérer la VF. Toute opération effectuée par le pilote miniport VF ne doit pas affecter d’autres VF ou pf sur la même carte réseau.

Le pilote miniport VF peut fonctionner comme n’importe quel pilote de périphérique PCI. Il peut lire et écrire dans l’espace de configuration PCI de la VF. Toutefois, l’accès au périphérique PCI virtuel est une opération privilégiée et est géré par le pilote pf miniport de la manière suivante :

  • Lorsque le pilote VF miniport appelle NdisMGetBusData pour lire des données à partir de l’espace de configuration PCI de la carte réseau VF, la pile de virtualisation est avertie. Cette pile s’exécute dans le système d’exploitation de gestion de la partition parente Hyper-V. Lorsque la pile est avertie de la demande de lecture, elle émet une demande de méthode d’identificateur d’objet (OID) de OID_SRIOV_READ_VF_CONFIG_SPACE au pilote pf miniport. Les données à lire sont spécifiées dans une structure NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS contenue dans la requête OID.

    Le pilote lit les données demandées à partir de l’espace de configuration PCI VF et retourne les données en effectuant la demande OID. Ces données sont ensuite retournées au pilote de miniport VF lorsque l’appel à NdisMGetBusData se termine.

  • Lorsque le pilote de miniport VF appelle NdisMSetBusData pour écrire des données dans l’espace de configuration PCI de la carte réseau VF, la pile de virtualisation est avertie de la demande d’écriture. Il émet une demande de méthode OID de OID_SRIOV_WRITE_VF_CONFIG_SPACE au pilote pf miniport. Les données à écrire sont spécifiées dans une structure NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS contenue dans la requête OID.

    Le pilote écrit les données dans l’espace de configuration PCI VF et retourne la status de la demande lorsqu’il termine la requête OID. Cette status est retournée au pilote de miniport VF une fois l’appel à NdisMSetBusData terminé.

Le pilote VF miniport peut également communiquer avec le pilote pf miniport. Ce chemin de communication se trouve sur une interface backchannel. Pour plus d’informations, consultez Communication backchannel SR-IOV PF/VF.

Note Le pilote miniport VF doit être conscient qu’il s’exécute dans un environnement virtualisé afin qu’il puisse communiquer avec le pilote miniport PF pour certaines opérations. Pour plus d’informations sur la façon dont le pilote effectue cette opération, consultez Initialisation d’un pilote VF Miniport.