NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 구조체(ndis.h)

NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 구조는 TCP/IP 전송에서 미니포트 드라이버로 IPsec(인터넷 프로토콜 보안) 작업을 오프로드하는 데 사용되는 정보를 지정합니다.

구문

typedef struct _NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO {
  union {
    struct {
      NDIS_HANDLE OffloadHandle;
    } Transmit;
    struct {
      USHORT SaDeleteReq : 1;
      USHORT CryptoDone : 1;
      USHORT NextCryptoDone : 1;
      USHORT Pad : 13;
      USHORT CryptoStatus;
    } Receive;
  };
} NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO, *PNDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO;

멤버

Transmit

다음 멤버를 포함하는 구조체입니다.

Transmit.OffloadHandle

해당 페이로드가 전송(엔드투엔드) 연결 또는 터널 연결용인지 여부에 관계없이 하나의 IPsec 페이로드가 있는 패킷에 대한 SA(아웃바운드 보안 연결)에 대한 핸들입니다.

Receive

다음 멤버를 포함하는 구조체입니다.

Receive.SaDeleteReq

설정된 경우 TCP/IP 전송에서 다음을 실행해야 했음을 나타내는 USHORT 값입니다. OID_TCP_TASK_IPSEC_DELETE_SA OID는 패킷이 수신된 인바운드 SA를 한 번 삭제하고 삭제된 인바운드 SA에 해당하는 아웃바운드 SA를 다시 한 번 삭제합니다. NIC(네트워크 인터페이스 카드)는 해당 OID_TCP_TASK_IPSEC_DELETE_SA 요청을 받기 전에 이러한 SA 중 하나를 제거해서는 안 됩니다.

Receive.CryptoDone

설정된 경우 NIC가 수신 패킷에서 하나 이상의 IPsec 페이로드에 대해 IPsec 검사를 수행했음을 나타내는 USHORT 값입니다. 이 값이 지워지면 NIC가 패킷에서 IPsec 검사를 수행하지 않았음을 나타냅니다.

Receive.NextCryptoDone

설정된 경우 NIC가 수신 패킷의 터널 및 전송 부분 모두에서 IPsec 검사를 수행했음을 나타내는 USHORT 값입니다. 이 경우 CryptoDone 도 설정해야 합니다. NextCryptoDone 은 패킷에 터널 및 전송 IPsec 페이로드가 모두 있는 경우에만 설정됩니다. 그렇지 않으면 NextCryptoDone 이 0으로 설정됩니다.

Receive.Pad

NDIS용으로 예약되었습니다.

Receive.CryptoStatus

수신 패킷에서 NIC가 수행되었음을 IPsec이 확인한 결과입니다. 이 결과는 다음 값 중 하나로 설명될 수 있습니다.

의미
CRYPTO_SUCCESS
필요한 경우 패킷의 암호가 성공적으로 해독되었고 AH(인증 헤더) 체크섬, ESP(보안 페이로드) 체크섬 캡슐화 또는 패킷의 두 체크섬 모두 유효성이 검사되었습니다.
CRYPTO_GENERIC_ERROR
패킷이 지정되지 않은 이유로 IPsec 검사 실패했습니다.
CRYPTO_TRANSPORT_AH_AUTH_FAILED
패킷의 전송 부분에 대한 AH 체크섬이 잘못되었습니다.
CRYPTO_TRANSPORT_ESP_AUTH_FAILED
패킷의 전송 부분에 대한 ESP 체크섬이 잘못되었습니다.
CRYPTO_TUNNEL_AH_AUTH_FAILED
패킷의 터널 부분에 대한 AH 체크섬이 잘못되었습니다.
CRYPTO_TUNNEL_ESP_AUTH_FAILED
패킷의 터널 부분에 대한 ESP 체크섬이 잘못되었습니다.
CRYPTO_INVALID_PACKET_SYNTAX
수신 패킷의 길이가 잘못되었습니다.
CRYPTO_INVALID_PROTOCOL
SA에서 패킷이 수신된 IPsec 프로토콜이 패킷에서 발견된 IPsec 프로토콜과 일치하지 않습니다. 예를 들어 패킷이 수신된 SA가 AH 프로토콜을 지정하지만 패킷에 ESP 헤더만 포함된 경우 이 오류가 발생합니다.

설명

TCP/IP 전송이 NIC가 IPsec 작업을 수행할 송신 패킷을 NIC의 미니포트 드라이버에 전달하기 전에 전송은 NET_BUFFER_LIST 구조와 연결된 NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 구조에서 IPsec 정보를 업데이트합니다.

특히 TCP/IP 전송은 NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 구조에서 OffloadHandle 멤버에 대한 값을 제공합니다. OffloadHandle 값은 페이로드가 전송(엔드투엔드) 보안 연결 또는 터널 보안 연결용인지 여부에 관계없이 하나의 IPsec 페이로드가 있는 패킷에 대한 SA(아웃바운드 보안 연결)에 대한 핸들을 지정합니다. NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 구조에 제공된 OffloadHandle 값은 미니포트 드라이버에 아웃바운드 SA를 NIC에 추가하도록 요청하는 OID_TCP_TASK_IPSEC_ADD_SA 설정할 때 TCP/IP 전송이 제공한 OffloadHandle 값과 동일한 값을 가집니다.

미니포트 드라이버가 하나 이상의 IPsec 페이로드가 있는 수신 패킷을 나타내기 전에 드라이버는 다음과 같이 NET_BUFFER_LIST 구조와 연결된 NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 구조를 업데이트합니다.

  • NIC가 패킷에서 하나 이상의 IPsec 페이로드에 대해 IPsec 검사를 수행한 경우 미니포트 드라이버는 CryptoDone 멤버를 설정하고 CryptoStatus 멤버에 적절한 값을 지정하여 체크섬 유효성 검사 테스트의 결과를 나타냅니다.
  • NIC가 수신 패킷의 터널 및 전송 부분 모두에서 IPsec 검사를 수행한 경우 미니포트 드라이버는 NextCryptoDone 멤버도 설정합니다. NextCryptoDone 은 패킷에 터널 및 전송 IPsec 페이로드가 모두 있는 경우에만 설정됩니다. 그렇지 않으면 NextCryptoDone 이 0으로 설정됩니다.
  • NIC가 패킷에서 IPsec 검사를 수행하지 않은 경우 미니포트 드라이버는 CryptoDone 또는 NextCryptoDone 을 설정하지 않고 CryptoStatus 값을 제공하지 않습니다.
NIC에서 다른 SA를 위한 공간을 만들기 위해 NIC의 미니포트 드라이버는 수신 패킷에 대한 NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 구조에서 SaDeleteReq를 설정할 수 있습니다. 이후 TCP/IP 전송은 패킷 이 수신된 인바운드 SA를 삭제하고 삭제된 인바운드 SA에 해당하는 아웃바운드 SA를 삭제하기 위해 한 번 OID_TCP_TASK_IPSEC_DELETE_SA 문제를 해결합니다. NIC는 해당 OID_TCP_TASK_IPSEC_DELETE_SA 요청을 받기 전에 이러한 SA 중 하나를 제거해서는 안 됩니다. NIC의 미니포트 드라이버는 CryptoDone 과 독립적으로 SaDeleteReq를 설정할 수 있습니다.

IPsec 정보를 설정하고 가져오려면 NET_BUFFER_LIST_INFO 매크로와 함께 IPsecOffloadV1NetBufferListInfo 인덱스를 사용합니다. NET_BUFFER_LIST_INFONDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 구조를 반환합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0에서 지원됩니다. NDIS 6.1 이상의 경우 NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 사용합니다.
머리글 ndis.h(Ndis.h 포함)

추가 정보

NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

OID_TCP_TASK_IPSEC_ADD_SA

OID_TCP_TASK_IPSEC_DELETE_SA