다음을 통해 공유


SIO_LOOPBACK_FAST_PATH 제어 코드

중요SIO_LOOPBACK_FAST_PATH 더 이상 사용되지 않으며 코드에서 사용하지 않는 것이 좋습니다.

SIO_LOOPBACK_FAST_PATH 소켓 I/O 제어 코드를 사용하면 WSK 애플리케이션이 루프백 인터페이스에서 더 빠른 작업을 위해 TCP 소켓을 구성할 수 있습니다.

이 IOCTL을 사용하기 위해 WSK 애플리케이션은 다음 매개 변수를 사용하여 WskControlSocket 함수를 호출합니다.

매개 변수

RequestType

WskIoctl

ControlCode

SIO_LOOPBACK_FAST_PATH

수준

0

InputSize

입력 버퍼의 크기(바이트)입니다.

InputBuffer

입력 버퍼에 대한 포인터입니다. 이 매개 변수에는 빠른 루프백 작업을 위해 소켓을 구성해야 하는지 여부를 나타내는 부울 값에 대한 포인터가 포함되어 있습니다.

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Irp

IRP에 대한 포인터입니다.

애플리케이션은 SIO_LOOPBACK_FAST_PATH IOCTL을 사용하여 TCP 소켓에서 루프백 작업의 성능을 향상시킬 수 있습니다. 이 IOCTL은 TCP/IP 스택이 이 소켓에서 루프백 작업에 특별한 빠른 경로를 사용하도록 요청합니다. SIO_LOOPBACK_FAST_PATH IOCTL은 TCP 소켓에서만 사용할 수 있습니다. 이 IOCTL은 루프백 세션의 양쪽에서 사용해야 합니다. TCP 루프백 빠른 경로는 IPv4 또는 IPv6 루프백 인터페이스를 사용하여 지원됩니다.

연결 요청을 시작하려는 소켓은 연결 요청을 만들기 전에 이 IOCTL을 적용해야 합니다. 연결 요청을 수신 대기하는 소켓은 연결을 수락하기 전에 이 IOCTL을 적용해야 합니다.

애플리케이션이 빠른 경로를 사용하여 루프백 인터페이스에서 연결을 설정하면 연결 수명 동안 모든 패킷이 빠른 경로를 사용해야 합니다.

루프백이 아닌 경로에 연결될 소켓에 SIO_LOOPBACK_FAST_PATH 적용해도 아무런 효과가 없습니다.

이 TCP 루프백 최적화는 네트워크 계층을 통한 기존 루프백 대신 TL(전송 계층)을 통과하는 패킷을 생성합니다. 이 최적화는 루프백 패킷의 대기 시간을 개선합니다. 애플리케이션이 루프백 빠른 경로를 사용하기 위해 연결 수준 설정을 옵트인하면 모든 패킷이 루프백 경로를 따릅니다. 루프백 통신의 경우 정체 및 패킷 삭제가 예상되지 않습니다. TCP에서 정체 제어 및 안정적인 배달의 개념은 필요하지 않습니다. 그러나 흐름 제어에는 이 값이 적용되지 않습니다. 흐름 제어가 없으면 발신자가 수신 버퍼를 압도하여 잘못된 TCP 루프백 동작을 발생시킬 수 있습니다. TCP 최적화 루프백 경로의 흐름 제어는 큐에 보내기 요청을 배치하여 유지 관리됩니다. 수신 버퍼가 가득 차면 TCP/IP 스택은 큐가 서비스될 때까지 전송이 완료되지 않도록 보장하고 흐름 제어를 유지합니다.

연결 데이터에 대한 WFP(Windows 필터링 플랫폼) 설명선이 있는 경우 TCP 빠른 경로 루프백 연결은 루프백에 대해 최적되지 않은 느린 경로를 사용해야 합니다. 따라서 WFP 필터는 이 새로운 루프백 빠른 경로가 사용되지 않도록 합니다. WFP 필터를 사용하도록 설정하면 SIO_LOOPBACK_FAST_PATH IOCTL이 설정된 경우에도 시스템에서 느린 경로를 사용합니다. 이렇게 하면 사용자 모드 애플리케이션에 전체 WFP 보안 기능이 있습니다.

기본적으로 SIO_LOOPBACK_FAST_PATH 사용하지 않도록 설정됩니다.

SIO_LOOPBACK_FAST_PATH IOCTL을 사용하여 소켓에서 루프백 빠른 경로를 사용하도록 설정하는 경우 TCP/IP 소켓 옵션의 하위 집합만 지원됩니다. 지원되는 옵션 목록에는 다음이 포함됩니다.

WSK 애플리케이션은 이 유형의 요청에 대해 WskControlSocket 함수를 호출할 때 IRP에 대한 포인터와 완료 루틴을 지정해야 합니다. 애플리케이션은 WSK 하위 시스템이 IRP를 완료할 때까지 버퍼를 해제해서는 안 됩니다. IRP를 완료하면 하위 시스템은 완료 루틴을 호출합니다. 완료 루틴에서 애플리케이션은 IRP 상태 검사 이전에 요청에 할당한 모든 리소스를 해제해야 합니다.

WSK IRP 처리에 대한 자세한 내용은 Winsock 커널 함수에서 IRP 사용을 참조하세요.

IRP를 완료하면 하위 시스템은 요청이 성공하면 Irp-IoStatus.Status>STATUS_SUCCESS 설정합니다. 그렇지 않으면 호출이 실패하면 Irp-IoStatus.Status>STATUS_INVALID_BUFFER_SIZE 또는 STATUS_NOT_SUPPORTED 설정됩니다.

반환 값

요구 사항

지원되는 최소 클라이언트

Windows 8

지원되는 최소 서버

Windows Server 2012

헤더

Mstcpip.h

Irql

PASSIVE_LEVEL

추가 정보

SIO_LOOPBACK_FAST_PATH(SDK)

Winsock 커널 함수와 함께 IRP 사용