Supporto di NVGRE in offload di trasmissione di grandi dimensioni (LSO)

NDIS 6.30 (Windows Server 2012) introduce la virtualizzazione di rete usando l'incapsulamento di routing generico (NVGRE). Il miniport NDIS, il protocollo e i driver di filtro e le schede di interfaccia di rete che eseguono l'offload di trasmissione di grandi dimensioni (LSO) versione 2 (LSOV2) devono farlo in modo da supportare NVGRE.

Nota Questa pagina presuppone che si abbia familiarità con le informazioni in Offload della segmentazione di pacchetti TCP di grandi dimensioni.

Se NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. IsEncapsulatedPacket è TRUE e le informazioni tcpIpChecksumNetBufferListInfo fuori banda (OOB) sono valide, ciò indica che è necessario il supporto NVGRE e che la scheda di interfaccia di rete deve eseguire l'offload LSOV2 nel pacchetto formattato NVGRE, con le condizioni seguenti:

Per supportare NVGRE in LSOV2, i driver di protocollo e filtro devono apportare le modifiche seguenti:

Le schede di interfaccia di rete e i driver miniport possono usare i valori InnerFrameOffset, TransportIpHeaderRelativeOffset e TcpHeaderRelativeOffset forniti nella struttura NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO . Il driver della scheda di interfaccia di rete o miniport può eseguire eventuali controlli di intestazione necessari nell'intestazione IP del tunnel (esterno) o nelle intestazioni successive per convalidare questi offset.

I driver miniport devono gestire il caso in cui NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO. InnerFrameOffset può trovarsi in un elenco di raccolta a dispersione diverso rispetto all'inizio del pacchetto. Il driver di protocollo garantirà che tutte le intestazioni di incapsulamento anteporte (ETH, IP, GRE) saranno fisicamente contigue e saranno nel primo MDL del pacchetto.

I driver di protocollo e filtro non assicurano che la lunghezza totale del payload TCP sia un multiplo esatto del valore MSS ridotto. Per questo motivo, i driver miniport e le schede di interfaccia di rete devono aggiornare l'intestazione IP del tunnel (esterna). Le schede di interfaccia di rete devono generare il maggior numero possibile di segmenti di dimensioni intere in base al valore MSS ridotto nel NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO. LsoV2Transmit Informazioni OOB. È possibile generare un solo segmento secondario MSS per ogni invio LSOv2.

I driver Miniport devono eseguire le operazioni seguenti:

  • Calcolare il checksum per l'intestazione IP del tunnel (esterno).
  • Incrementare il valore di identificazione IP (ID IP) dell'intestazione IP del tunnel (esterno) per ogni pacchetto. Il primo pacchetto deve usare l'ID IP nell'intestazione IP del tunnel originale (esterno).
  • Incrementare l'ID IP dell'intestazione IP di trasporto (interno) per ogni pacchetto. Il primo pacchetto deve usare l'ID IP nell'intestazione IP del trasporto originale (interno).
  • Calcolare il checksum per l'intestazione TCP e l'intestazione IP di trasporto (interno).
  • Assicurarsi che le intestazioni complete, incluse le intestazioni del tunnel di incapsulamento (esterno) vengano aggiunte a ogni pacchetto generato.

Offload della segmentazione di pacchetti TCP di grandi dimensioni