Compartir a través de


código de control de SIO_LOOPBACK_FAST_PATH

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

El código de control de E/S de socket SIO_LOOPBACK_FAST_PATH 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ónWskControlSocketcon los parámetros siguientes.

Parámetro Valor

RequestType

WskIoctl

ControlCode de

SIO_LOOPBACK_FAST_PATH

nivel

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 de 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 vigencia 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 sin 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 bucle invertido. No se espera que las comunicaciones de bucle invertido, 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 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 realice el servicio de la cola, manteniendo el control de flujo.

Las conexiones de bucle invertido de ruta rápida tcp en presencia de una llamada de plataforma de filtrado de Windows (PMA) para los datos de conexión deben tomar la ruta de acceso lenta no optimizado para 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 se debe a que las aplicaciones en modo de usuario tienen la funcionalidad completa de seguridad 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 al WskControlSocket función 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 admitido

Windows 8

Servidor mínimo admitido

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