Condividi tramite


Panoramica del coalescing dei pacchetti

Alcuni protocolli di rete IP versione 4 (IPv4) e IP versione 6 (IPv6) comportano la trasmissione di pacchetti a indirizzi broadcast o multicast. Questi pacchetti vengono ricevuti da più host nella subnet IPv4/IPv6. Nella maggior parte dei casi, l'host che riceve questi pacchetti non esegue alcuna operazione con questi pacchetti. Pertanto, la ricezione di questi pacchetti multicast o trasmissione indesiderati causa l'elaborazione e il consumo di energia non necessari all'interno dell'host ricevente.

Ad esempio, host A invia una richiesta multicast Link-local Multicast Name Resolution (LLMNR) in una subnet IPv6 per risolvere il nome di B dell'host. Ad eccezione dell'host A, questa richiesta LLMNR viene ricevuta da tutti gli host nella subnet. Ad eccezione dell'host B, lo stack di protocollo TCP/IP in esecuzione negli altri host controlla il pacchetto e determina che il pacchetto non è destinato. Pertanto, lo stack di protocolli rifiuta il pacchetto e chiama NdisReturnNetBufferLists per restituire il pacchetto al driver miniport.

A partire da NDIS 6.30, le schede di rete possono supportare l'unione dei pacchetti NDIS. Riducendo il numero di interruzioni di ricezione attraverso l'unione di pacchetti casuali o multicast, il sovraccarico di elaborazione e il consumo di energia sono notevolmente ridotti nel sistema.

Il raggruppamento dei pacchetti prevede la procedura seguente:

  1. I driver overlying, ad esempio lo stack di protocolli TCP/IP, definiscono i filtri di ricezione NDIS usati per la trasmissione dello schermo e i pacchetti multicast. I driver overlying scaricano questi filtri nel driver miniport sottostante che supporta il raggruppamento dei pacchetti. Una volta scaricato, il driver miniport configura la scheda di rete con i filtri di ricezione del pacchetto di unione dei pacchetti.

    Per altre informazioni su questi filtri, vedere Filtri di ricezione del raggruppamento dei pacchetti.

  2. I pacchetti ricevuti che corrispondono ai filtri di ricezione vengono memorizzati nella cache o uniti nella scheda di rete. L'adattatore non genera un interruzione di ricezione per i pacchetti coalizzati. L'adattatore interrompe invece l'host quando si verifica un altro evento hardware.

    Quando viene generato questo interruzione, l'adapter deve indicare un evento di ricezione con l'interruzione. Ciò consente alla scheda di rete di elaborare pacchetti di unione ricevuti dalla scheda di rete.

    Ad esempio, la scheda di rete che supporta il raggruppamento dei pacchetti può generare un interruzione di ricezione quando si verifica uno degli eventi seguenti:

    • Scadenza di un timer hardware la cui ora di scadenza è impostata su un valore massimo di ritardo di carbone del filtro di ricezione corrispondente.

    • Lo spazio disponibile all'interno del buffer di coalescing hardware raggiunge un segno di bassa acqua specificato dall'adattatore.

    • Viene ricevuto un pacchetto che non corrisponde a un filtro di unione.

    • Si è verificato un altro evento di interruzione, ad esempio un evento di completamento dell'invio.

    Per altre informazioni su questo processo, vedere Gestione dei filtri di ricezione del carbone dei pacchetti.

I punti seguenti si applicano al supporto del raggruppamento dei pacchetti da parte di NDIS:

  • NDIS supporta il raggruppamento dei pacchetti per i pacchetti ricevuti sulla porta NDIS predefinita (porta 0) assegnata alla scheda di rete fisica. NDIS non supporta il raggruppamento dei pacchetti sulle porte NDIS assegnate alle schede di rete virtuali. Per altre informazioni, vedere Porte NDIS.

  • NDIS supporta l'unione dei pacchetti per i pacchetti ricevuti nella coda di ricezione predefinita della scheda di rete. Questa coda di ricezione ha un identificatore di NDIS_DEFAULT_RECEIVE_QUEUE_ID.