Senden von Netzwerkdaten mit IPsec Offload Version 2

[Das IPsec-Aufgabenauslagerungsfeature ist veraltet und sollte nicht verwendet werden.]

Der TCP/IP-Transport stellt IPsec Offload Version 2-Informationen (IPsecOV2) für eine oder mehrere SAs mit der OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID bereit. Bevor der Miniporttreiber ein erfolgreiches Ergebnis für OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA zurückgibt, initialisiert der Miniporttreiber ein Auslagerungshandle. Der TCP/IP-Transport fordert den Miniporttreiber an, die Verarbeitung einer NET_BUFFER_LIST-Struktur zu entladen, indem IPsecOV2-Informationen in den NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO - und NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO-Strukturen angegeben werden, die Teil der NET_BUFFER_LIST Out-of-Band-Informationen (OOB) sind.

Der TCP/IP-Transport stellt ein Auslagerungshandle im OffloadHandle-Member von NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO bereit, das das Handle für die ausgehende Sicherheitszuordnung (SA) für den Transportteil (End-to-End-Verbindung) des Sendepakets angibt.

Der TCP/IP-Transport stellt die folgenden Headerinformationen in der NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO-Struktur bereit:

  • Headeroffsets für einen AH-Header, einen ESP-Header oder beides.

  • Der nächste Protokollwert (identisch mit dem Wert, der im ESP-Trailer enthalten ist).

  • Die Padlänge, die für eine kombinierte große Sendeabladung (LSO) und IPsec-Auslagerung verwendet wird.

Wenn das Sendepaket über einen Tunnel übertragen wird, stellt der TCP/IP-Transport eine NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO-Struktur bereit. Diese Struktur gibt das Auslagerungshandle an die ausgehende SA für den Tunnelteil des Sendepakets an. Weitere Informationen zum Zugreifen auf OOB-Informationen finden Sie unter Zugreifen auf NET_BUFFER_LIST Informationen in IPsec-Auslagerung Version 2.

Der Miniporttreiber hat die Auslagerungshandles als Reaktion auf eine OID-Set-Anforderung von OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA bereitgestellt. Weitere Informationen zu SAs finden Sie unter Verwalten von Sicherheitszuordnungen in IPsec-Auslagerung version 2.

Wenn ein Miniporttreiber eine Sendeanforderung in der Funktion MiniportSendNetBufferLists verarbeitet, wird der Miniporttreiber:

  • Überprüft, ob die Hardware für die Verarbeitung von IPsec-Auslagerungsdiensten konfiguriert ist. Wenn die Hardware nicht für die Verarbeitung von IPsec-Auslagerungsdiensten konfiguriert ist, sollte der Miniporttreiber die Sendeanforderung verarbeiten, ohne die Auslagerungsdienste bereitzustellen.

  • Überprüft die Handles in den NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO - und NDIS_IPSEC_OFFLOAD_V2_TUNNEL_NET_BUFFER_LIST_INFO strukturen, um festzustellen, ob die kryptografische IPsec-Verarbeitung erforderlich ist. Der Wert des Auslagerungshandles von 0 gibt an, dass für die NET_BUFFER_LIST keine IPsec-Aufgabeauslagerung ausgeführt werden soll. Wenn der Miniporttreiber die ausgeladene SA nicht finden kann, die dem angegebenen Auslagerungshandle entspricht, sollte das Sendepaket mit einem NDIS_STATUS_FAILURE Wert fehlschlagen.

  • Überprüft die Handles in den NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO-Strukturen , um zu bestimmen, ob die Segmentierungsauslagerung für die NET_BUFFER_LIST ausgeführt werden soll.

  • Schließt die erforderliche AH- und ESP-Verarbeitung für alle Sendepakete im NET_BUFFER_LIST ab. Wenn die NIC die IPsec-Verarbeitung für ein Sendepaket ausführt, führt sie die kryptografischen Vorgänge für die Paketdaten aus. Der TCP/IP-Transport hat das Paket bereits umrahmt, (falls erforderlich) gepolstert und ihm eine Sequenznummer und einen Sicherheitsparameterindex (SPI) zugewiesen. Bei einer kombinierten LSO- und IPsec-Auslagerung verfügt die NET_BUFFER möglicherweise über eine Auffüllung, die verworfen wird, während die NIC das große Paket segmentiert. Die Menge der Auffüllung wird im PadLength-Element der NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO-Struktur angegeben. Segmentierte Pakete müssen möglicherweise aufgefüllt werden, um IPsec-Vorgänge zu unterstützen.

Wenn ein Protokolltreiber ein Paket überträgt, das sowohl LSO als auch IPsecOV2 anfordert, wird der ESP-Trailer nicht umrahmt. Dies liegt daran, dass die Informationen im ESP-Anhänger, z. B. die Länge der Füllung, für das letzte Segment, das von der NIC generiert wurde, nicht richtig sind.