Condividi tramite


Spostamento di un filtro di ricezione in una porta virtuale

Il driver overlying invia una richiesta di set di identificatori di oggetto (OID) di OID_RECEIVE_FILTER_MOVE_FILTER per spostare un filtro di ricezione da una porta virtuale (VPort) a un altro VPort sul commutatore della scheda di interfaccia di rete. In genere, il driver overlying, ad esempio lo stack di virtualizzazione, invia questa richiesta OID se una delle condizioni seguenti è vera:

  • Lo stack di virtualizzazione imposta un filtro di ricezione sul VPort predefinito. Questo filtro contiene i parametri di indirizzo MAC (Media Access Control) e VLAN (Virtual LAN) per la scheda di rete della macchina virtuale esposta nella partizione figlio Hyper-V. Ciò consente l'inoltro dei pacchetti tra la scheda di rete della macchina virtuale e la scheda di rete sottostante sul percorso dati sintetico basato su software.

    Dopo l'allocazione delle risorse per una funzione virtuale PCI Express (PCIe) e la funzione virtuale VF viene collegata a una partizione figlio, lo stack di virtualizzazione crea un VPort non predefinito nella VF. Lo stack di virtualizzazione sposta quindi il filtro di ricezione per la scheda di rete della macchina virtuale dal VPort predefinito al VPort non predefinito collegato alla VF. Ciò consente l'inoltro dei pacchetti tra la scheda di rete della macchina virtuale e la scheda di rete sottostante sul percorso dati VF basato su hardware.

    Per altre informazioni su questi percorsi dati, vedere Percorsi dati SR-IOV.

  • Un VF è stato scollegato da una partizione figlio Hyper-V in cui il sistema operativo guest è ancora in esecuzione. In questo caso, il driver overlying invia la richiesta del set OID per spostare il filtro di ricezione per la scheda di rete della macchina virtuale dal VPort non predefinito al VPort predefinito collegato al file PF. In questo caso, il traffico dei pacchetti viene ripristinato nel percorso dei dati sintetici.

Per spostare un filtro di ricezione da un VPort a un altro VPort, un driver che esegue eccessivamente una richiesta di set OID di OID_RECEIVE_FILTER_MOVE_FILTER. Il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS .

Prima che il driver overlying eseva la richiesta di OID_RECEIVE_FILTER_MOVE_FILTER , deve inizializzare una struttura NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS nel modo seguente:

  • Il driver imposta il membro FilterId sull'identificatore dell'identificatore del filtro di ricezione allocato in precedenza.

    Nota Il driver overlying ha ottenuto l'identificatore di filtro da una richiesta di metodo OID precedente di OID_RECEIVE_FILTER_SET_FILTER o OID_RECEIVE_FILTER_ENUM_FILTERS.

  • Il driver imposta il membro SourceQueueId su NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • Il driver imposta il membro SourceVPortId sull'identificatore del VPort in cui questo filtro è stato impostato in precedenza.

  • Il driver imposta il membro DestQueueId su NDIS_DEFAULT_RECEIVE_QUEUE_ID.

  • Il driver imposta il membro DestVPortId sull'identificatore del VPort in cui deve essere spostato questo filtro.

NDIS convalida i membri del NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS prima di inoltrare la richiesta del set OID al driver miniport PF.

Quando il driver miniport PF gestisce questa richiesta di set OID, deve spostare il filtro di ricezione in un'operazione atomica. Il driver deve essere in grado di configurare la scheda di rete per rimuovere simultaneamente il filtro da una coda di ricezione e da un VPort e impostarlo su una coda di ricezione e un VPort diversi.