다음을 통해 공유


IPsec 오프로드 버전 2를 사용하여 네트워크 데이터 수신

[IPsec 작업 오프로드 기능은 더 이상 사용되지 않으며 사용해서는 안 됩니다.]

NIC는 전송에서 오프로드된 SA(보안 연결)에 지정된 수신 패킷에서 IPsec 오프로드 버전 2(IPsecOV2) 처리를 수행합니다.

미니포트 드라이버는 수신된 데이터를 오버리딩 드라이버로 나타내기 전에 IPsecOV2 OOB(대역 외) 정보를 설정합니다. OOB 정보에 액세스하는 방법에 대한 자세한 내용은 IPsec 오프로드 버전 2에서 NET_BUFFER_LIST 정보 액세스를 참조하세요.

참고 미니포트 드라이버는 NIC에서 IPsec 데이터를 처리하는 동안 오류가 발생하더라도 오버리딩 드라이버에 수신된 모든 패킷을 표시해야 합니다. 드라이버 스택이 네트워크 트래픽을 모니터링하고 문제를 해결할 수 있도록 하려면 드라이버에서 오류가 있는 패킷을 표시해야 합니다.

미니포트 드라이버가 드라이버 스택 위로 수신된 데이터 패킷을 나타내기 전에 미니포트 드라이버는 다음과 같습니다.

  • 하드웨어가 IPsec 오프로드 작업을 처리하도록 구성되어 있는지 확인합니다. 그렇지 않은 경우 미니포트 드라이버는 추가 IPsec 오프로드 처리 없이 수신 표시를 수행합니다.

  • SPI(보안 매개 변수 인덱스)를 확인하여 일치하는 오프로드된 SA가 있는지 확인합니다. 미니포트 드라이버는 패킷의 대상 주소가 오프로드된 SA에 지정된 주소와 동일한지 확인합니다. 일치하는 SA가 없는 경우 NIC는 IPsecOV2 OOB 정보를 설정하지 않고 수신된 데이터를 나타냅니다.

  • 미니포트 드라이버가 전송에 보고한 기능을 기반으로 패킷을 처리하거나 추가 IPsec 처리 없이 수신 표시를 수행할 수 있는지 확인합니다. 예를 들어 패킷에는 NIC가 이러한 패킷에 대한 IPsec 오프로드 처리를 지원하지 않고 미니포트 드라이버가 IPsec 처리를 수행하는 IP 옵션이 있을 수 있습니다.

  • NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 구조체에서 CryptoDone 플래그를 설정하여 수신된 패킷에서 하나 이상의 IPsec 페이로드에서 NIC가 IPsec 검사를 수행했음을 나타냅니다.

  • NIC가 수신 패킷의 터널 및 전송 부분 모두에서 IPsec 검사를 수행했음을 나타내도록 NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 구조에서 NextCryptoDone 플래그를 설정합니다. 미니포트 드라이버는 패킷에 터널 및 전송 페이로드가 모두 있는 경우에만 이 플래그를 설정합니다. 그렇지 않으면 이 플래그는 0이어야 합니다.

  • NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 구조체의 올바른 CryptoStatus 값을 설정하여 IPsec 검사 결과를 나타냅니다.

NIC가 들어오는 패킷에서 오프로드 처리를 수행하지 않은 경우 미니포트 드라이버는 CryptoDoneNextCryptoDone 플래그를 모두 지웁니다. 미니포트 드라이버는 패킷이 AH로 보호되었는지 ESP로 보호되었는지 여부에 관계없이 NIC가 암호 해독되지 않는 모든 수신 패킷에 대해 이러한 플래그를 지웁니다.

미니포트 드라이버는 수신 NET_BUFFER_LIST 대한 NDIS_IPSEC_OFFLOAD_V2_NET_BUFFER_LIST_INFO 구조에서 SaDeleteReq를 설정할 수 있습니다. 이후 TCP/IP 전송은 패킷이 수신된 인바운드 SA를 삭제하기 위해 OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA 한 번, 삭제된 인바운드 SA에 해당하는 아웃바운드 SA를 삭제하기 위해 다시 한 번 문제를 해결합니다. SA를 추가하고 삭제하는 방법에 대한 자세한 내용은 IPsec 오프로드 버전 2에서 보안 연결 관리를 참조하세요.

미니포트 드라이버가 TCP/IP 전송에 대한 NET_BUFFER_LIST 구조를 나타내면 TCP/IP 전송은 NIC가 패킷에서 수행되었는지 IPsec 검사 결과를 검사하고, 패킷에 대한 시퀀스 번호를 확인하고, 체크섬 또는 시퀀싱 테스트에 실패한 패킷으로 수행할 작업을 결정합니다.