Condividi tramite


Invio di dati di rete con offload IPsec versione 2

[La funzionalità Offload attività IPsec è deprecata e non deve essere usata.]

Il trasporto TCP/IP fornisce informazioni IPsec Offload versione 2 (IPsecOV2) per uno o più SA con l'OID OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA . Prima che il driver miniport restituisca un risultato positivo per OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA, il driver miniport inizializza un handle di offload. Il trasporto TCP/IP richiede al driver miniport di eseguire l'offload dell'elaborazione di una struttura di NET_BUFFER_LIST specificando le informazioni IPsecOV2 nelle strutture NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO e NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO , che fanno parte delle informazioni NET_BUFFER_LIST fuori banda (OOB).

Il trasporto TCP/IP fornisce un handle di offload nel membro OffloadHandle di NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO che specifica l'handle per l'associazione di sicurezza in uscita (SA) per la parte di trasporto (connessione end-to-end) del pacchetto di invio.

Il trasporto TCP/IP fornisce le informazioni di intestazione seguenti nella struttura NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO :

  • Offset di intestazione per un'intestazione AH, un'intestazione ESP o entrambi.

  • Valore del protocollo successivo (identico a quello contenuto nel trailer ESP).

  • Lunghezza del pad usata per un offload di invio di grandi dimensioni combinato (LSO) e offload IPsec.

Inoltre, se il pacchetto di invio verrà trasmesso tramite un tunnel, il trasporto TCP/IP fornisce una struttura di NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO . Questa struttura specifica l'handle di offload per l'sa in uscita per la parte del tunnel del pacchetto di invio. Per altre informazioni sull'accesso alle informazioni OOB, vedere Accesso alle informazioni di NET_BUFFER_LIST in Offload IPsec versione 2.

Il driver miniport ha fornito gli handle di offload in risposta a una richiesta di set OID di OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA. Per altre informazioni sulle autorità di sicurezza, vedere Gestione delle associazioni di sicurezza in Offload IPsec versione 2.

Quando un driver miniport gestisce una richiesta di invio nella funzione MiniportSendNetBufferLists , il driver miniport:

  • Verifica che l'hardware sia configurato per gestire i servizi di offload IPsec. Se l'hardware non è configurato per gestire i servizi di offload IPsec, il driver miniport deve gestire la richiesta di invio senza fornire i servizi di offload.

  • Verifica gli handle nelle strutture NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO e NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO per determinare se è necessaria l'elaborazione crittografica IPsec. Un valore di handle di offload pari a zero indica che non deve essere eseguito alcun offload di attività IPsec per il NET_BUFFER_LIST. Se il driver miniport non riesce a trovare l'sa offloaded che corrisponde all'handle di offload specificato, il pacchetto di invio deve avere esito negativo con un valore NDIS_STATUS_FAILURE .

  • Verifica gli handle nelle strutture di NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO per determinare se l'offload di segmentazione deve essere eseguito per il NET_BUFFER_LIST.

  • Completa l'elaborazione AH ed ESP necessaria per tutti i pacchetti di invio nel NET_BUFFER_LIST. Quando la scheda di interfaccia di rete esegue l'elaborazione IPsec su un pacchetto di invio, esegue le operazioni di crittografia sui dati del pacchetto. Il trasporto TCP/IP ha già incorniciato il pacchetto, lo ha riempito (se necessario) e gli è stato assegnato un numero di sequenza e un indice dei parametri di sicurezza (SPI). Per un offload LSO e IPsec combinato, il NET_BUFFER potrebbe avere spaziatura interna che verrà eliminata mentre la scheda di interfaccia di rete segmenta il pacchetto di grandi dimensioni. La quantità di spaziatura interna viene specificata nel membro PadLength della struttura NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO . I pacchetti segmentati potrebbero richiedere la spaziatura interna per supportare le operazioni IPsec.

Quando un driver di protocollo trasmette un pacchetto che richiede sia LSO che IPsecOV2, non incornicierà il trailer ESP. Ciò è dovuto al fatto che le informazioni contenute nel trailer ESP, ad esempio la lunghezza della spaziatura interna, non saranno accurate per l'ultimo segmento generato dalla scheda di interfaccia di rete.