Share via


SIO_LOOPBACK_FAST_PATH código de control

Importante El SIO_LOOPBACK_FAST_PATH está en desuso y no se recomienda usar en el código.

El SIO_LOOPBACK_FAST_PATH código de control de E/S de socket permite a una aplicación WSK configurar un socket TCP para realizar operaciones más rápidas en la interfaz de bucle invertido.

Para usar este IOCTL, una aplicación WSK llama a la función WskControlSocket con los parámetros siguientes.

Parámetro Value

RequestType

WskIoctl

ControlCode

SIO_LOOPBACK_FAST_PATH

Level

0

InputSize

Tamaño, en bytes, del búfer de entrada.

InputBuffer

Puntero al búfer de entrada. Este parámetro contiene un puntero a un valor booleano que indica si el socket debe configurarse para operaciones de bucle invertido rápido.

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Irp

Puntero a un IRP.

Una aplicación puede usar el SIO_LOOPBACK_FAST_PATH IOCTL para mejorar el rendimiento de las operaciones de bucle invertido en un socket TCP. Este IOCTL solicita que la pila TCP/IP use una ruta de acceso rápida especial para las operaciones de bucle invertido en este socket. El SIO_LOOPBACK_FAST_PATH IOCTL solo se puede usar con sockets TCP. Este IOCTL debe usarse en ambos lados de la sesión de bucle invertido. La ruta de acceso rápida de bucle invertido TCP se admite mediante la interfaz de bucle invertido IPv4 o IPv6.

El socket que planea iniciar la solicitud de conexión debe aplicar este IOCTL antes de realizar la solicitud de conexión. El socket que escucha la solicitud de conexión debe aplicar este IOCTL antes de aceptar la conexión.

Una vez que una aplicación establece la conexión en una interfaz de bucle invertido mediante la ruta de acceso rápida, todos los paquetes durante la duración de la conexión deben usar la ruta de acceso rápida.

La aplicación de SIO_LOOPBACK_FAST_PATH a un socket que se conectará a una ruta de acceso que no sea de bucle invertido no tendrá ningún efecto.

Esta optimización de bucle invertido TCP da como resultado paquetes que fluyen a través de la capa de transporte (TL) en lugar del bucle invertido tradicional a través de la capa de red. Esta optimización mejora la latencia de los paquetes de bucle invertido. Una vez que una aplicación opta por una configuración de nivel de conexión para usar la ruta de acceso rápida de bucle invertido, todos los paquetes seguirán la ruta de acceso de bucle invertido. En el caso de las comunicaciones de bucle invertido, no se espera la congestión y la caída de paquetes. La noción de control de congestión y entrega confiable en TCP será innecesaria. Sin embargo, esto no es cierto para el control de flujo. Sin el control de flujo, el remitente puede sobrecargar el búfer de recepción, lo que provoca un comportamiento erróneo de bucle invertido TCP. El control de flujo de la ruta de acceso de bucle invertido optimizado para TCP se mantiene colocando solicitudes de envío en una cola. Cuando el búfer de recepción está lleno, la pila TCP/IP garantiza que los envíos no se completarán hasta que se service la cola, manteniendo el control de flujo.

Las conexiones de bucle invertido de ruta rápida TCP en presencia de una llamada a la Plataforma de filtrado de Windows (PMA) para los datos de conexión deben tomar la ruta de acceso lenta no optimizada para el bucle invertido. Por lo tanto, los filtros DE PMA impedirán que se use esta nueva ruta de acceso rápida de bucle invertido. Cuando se habilita un filtro PMA, el sistema usará la ruta de acceso lenta incluso si se estableció el SIO_LOOPBACK_FAST_PATH IOCTL. Esto indica que las aplicaciones en modo de usuario tienen la capacidad de seguridad completa del PMA.

De forma predeterminada, SIO_LOOPBACK_FAST_PATH está deshabilitado.

Solo se admite un subconjunto de las opciones de socket TCP/IP cuando se usa el SIO_LOOPBACK_FAST_PATH IOCTL para habilitar la ruta de acceso rápida de bucle invertido en un socket. La lista de opciones admitidas incluye lo siguiente:

Una aplicación WSK debe especificar un puntero a un IRP y una rutina de finalización al llamar a la función WskControlSocket para este tipo de solicitud. La aplicación no debe liberar el búfer hasta que el subsistema WSK haya completado el IRP. Cuando completa el IRP, el subsistema invoca la rutina de finalización. En la rutina de finalización, la aplicación debe comprobar el estado de IRP y liberar todos los recursos que había asignado previamente para la solicitud.

Para obtener más información sobre el control de IRP de WSK, consulte Uso de IRP con funciones del kernel de Winsock.

Al completar el IRP, el subsistema establecerá Irp-IoStatus.Status> en STATUS_SUCCESS si la solicitud se realiza correctamente. De lo contrario, Irp-IoStatus.Status> se establecerá en STATUS_INVALID_BUFFER_SIZE o STATUS_NOT_SUPPORTED si la llamada no se realiza correctamente.

Valor devuelto

Requisitos

Cliente mínimo compatible

Windows 8

Servidor mínimo compatible

Windows Server 2012

Encabezado

Mstcpip.h

IRQL

PASSIVE_LEVEL

Consulte también

SIO_LOOPBACK_FAST_PATH (SDK)

Uso de IRP con funciones de kernel de Winsock