Porte virtuali (VPorts)
Una porta virtuale (VPort) è un oggetto dati che rappresenta una porta interna sul commutatore NIC di una scheda di rete che supporta la virtualizzazione I/O a radice singola (SR-IOV). Ogni commutatore di scheda di interfaccia di rete ha le porte seguenti per la connettività di rete:
Una porta fisica esterna per la connettività alla rete fisica esterna.
Uno o più VPort interni connessi alla funzione fisica PCI Express (PF) o alle funzioni virtuali (VFS).
- Il PF è collegato alla partizione padre Hyper-V ed è esposto come scheda di rete virtuale nel sistema operativo di gestione eseguito in tale partizione.
- Un VF è collegato alla partizione figlia Hyper-V ed è esposto come scheda di rete virtuale nel sistema operativo guest che gira in tale partizione.
Lo switch NIC instrada il traffico di rete dalla porta fisica a uno o più VPort. In questo modo viene fornito l'accesso virtualizzato all'interfaccia di rete fisica sottostante.
Ogni VPort ha un identificatore univoco (VPortId) per il commutatore NIC sull'adattatore di rete. Nel commutatore predefinito della scheda di interfaccia di rete esiste sempre un VPort predefinito e non può mai essere eliminato. Il VPort predefinito ha come VPortId NDIS_DEFAULT_VPORT_ID
.
Quando il driver miniport PF gestisce una richiesta di metodo OID (Object Identifier) di OID_NIC_SWITCH_CREATE_SWITCH, crea il commutatore NIC e il VPort predefinito per tale commutatore. Il VPort predefinito è sempre collegato al PF ed è sempre in uno stato operativo.
Le VPort non predefinite vengono create tramite richieste di metodo OID di OID_NIC_SWITCH_CREATE_VPORT. Un solo VPort non predefinito può essere collegato a un VF. Una volta collegato, lo stato predefinito è operativo. È anche possibile creare e collegare uno o più VPort non predefiniti al file PF. Questi VPort sono non operativi quando vengono creati e possono diventare operativi tramite una richiesta di impostazione OID di OID_NIC_SWITCH_VPORT_PARAMETERS.
Nota
Dopo essere diventato operativo, un VPort può diventare non-operativo solo quando viene eliminato tramite una richiesta OID di OID_NIC_SWITCH_DELETE_VPORT.
A ogni VPort sono associate una o più coppie di code hardware per la ricezione e la trasmissione di pacchetti. La coppia di code predefinita nella scheda di rete è riservata per l'uso da parte del VPort predefinito. Le coppie di code per VPort non predefiniti (non di default) vengono allocate e assegnate quando il VPort viene creato con la richiesta OID_NIC_SWITCH_CREATE_VPORT.
Le porte virtuali non predefinite vengono create e configurate tramite richieste di metodo OID di OID_NIC_SWITCH_CREATE_VPORT. Le VPort predefinite e le VPort non predefinite vengono riconfigurate tramite richieste di set OID di OID_NIC_SWITCH_VPORT_PARAMETERS. Ogni richiesta OID contiene una struttura NDIS_NIC_SWITCH_VPORT_PARAMETERS che specifica i parametri di configurazione seguenti:
Funzione PCIe a cui è collegato il VPort.
Ogni VPort può essere collegato al PF o a un VF in qualsiasi momento. Dopo aver creato e collegato il VPort a una funzione PCIe, l'allegato non può essere modificato dinamicamente in un'altra funzione PCIe.
Nota
Il VPort predefinito è sempre collegato al PF sulla scheda di rete.
A partire da NDIS 6.30 in Windows Server 2012, è possibile collegare un solo VPort non predefinito a un VF. Tuttavia, al PF possono essere collegati più VPort non predefiniti insieme al VPort predefinito.
Numero di coppie di code hardware assegnate a un VPort.
Ogni VPort ha un set di coppie di code hardware ad esso disponibili. Ogni coppia di code è costituita da una coda di trasmissione e una di ricezione distinte sulla scheda di rete.
Le coppie di code sono risorse limitate nella scheda di rete. Il numero totale di coppie di code riservate per l'uso dai VPort predefiniti e non predefiniti viene specificato quando viene creato il switch NIC. In questo modo il numero di coppie di code assegnate al VPort predefinito può differire dai VPort non predefiniti.
Ogni VPort non predefinito può essere configurato per avere un numero diverso di coppie di code. Questa operazione è nota come allocazione asimmetrica di coppie di code. Se la scheda di interfaccia di rete non consente un'allocazione asimmetrica di questo tipo, ogni VPort non predefinito è configurato per avere un numero uguale di coppie di code. Questa operazione è nota come allocazione simmetrica di coppie di code. Per ulteriori informazioni, consultare Assegnazione simmetrica e asimmetrica delle coppie di code.
Nota
Il driver miniport PF segnala se supporta l'allocazione asimmetrica delle coppie di code durante MiniportInitializeEx. Per ulteriori informazioni, vedere Inizializzazione di un driver PF Miniport.
Il numero di coppie di code assegnate a ogni VPort non viene modificato in modo dinamico. Il numero di coppie di code assegnate a un VPort non può essere modificato dopo che il VPort è stato creato.
Nota
Una o più coppie di code assegnate alle VPort non predefinite possono essere usate per ricevere il ridimensionamento laterale (RSS) dal driver miniport VF eseguito nel sistema operativo guest.
Parametri di moderazione degli interrupt per il VPort.
È possibile specificare tipi di moderazione di interrupt diversi per vPort diversi. In questo modo lo stack di virtualizzazione può controllare il numero di interrupt generati da un particolare VPort.
Oltre ai parametri di configurazione, gli overlying driver possono configurare filtri di ricezione per ogni VPort inviando richieste di metodo OID di OID_RECEIVE_FILTER_SET_FILTER. L'interruttore NIC esegue il filtro di ricezione specificato su base VPort.
I parametri di filtro di ricezione per VPort includono condizioni di filtro dei pacchetti, ad esempio un elenco di indirizzi MAC (Media Access Control) e gli identificatori VLAN (Virtual LAN). I filtri per gli indirizzi MAC e gli identificatori VLAN vengono sempre specificati insieme nella NDIS_RECEIVE_FILTER_PARAMETERS associata alla richiesta di OID_RECEIVE_FILTER_SET_FILTER. Lo switch NIC deve filtrare i pacchetti in ingresso verso lo switch il cui indirizzo MAC di destinazione e l'identificatore VLAN corrispondono a qualsiasi condizione di filtro di ricezione impostata sul VPort. L'opzione NIC filtra i pacchetti ricevuti da un altro VPort o dalla porta fisica esterna. Se il pacchetto corrisponde a un filtro, lo switch NIC deve inoltrarlo al VPort.
È possibile impostare più coppie di indirizzi MAC e identificatori VLAN nel VPort. Se è impostato solo un indirizzo MAC, il filtro di ricezione specifica che il VPort deve ricevere pacchetti che soddisfano le condizioni seguenti:
L'indirizzo MAC di destinazione del pacchetto corrisponde all'indirizzo MAC del filtro.
Il pacchetto ha un tag VLAN o (se è presente un tag VLAN) un identificatore VLAN pari a zero.
Le VPort non predefinite vengono eliminate tramite richieste di set OID di OID_NIC_SWITCH_DELETE_VPORT. Il VPort predefinito viene eliminato solo quando il switch NIC viene eliminato tramite una richiesta di set OID di OID_NIC_SWITCH_DELETE_SWITCH.