Controlar las opciones de socket y los códigos de control de una SAN
El conmutador Windows Sockets, junto con el proveedor TCP/IP, controla la mayoría de las llamadas WSPGetSockOpt, WSPSetSockOpt y WSPIoctl iniciadas por las aplicaciones. Estas solicitudes suelen establecer y recuperar opciones y parámetros operativos asociados con el socket de una aplicación. Por lo general, el modificador no reenvía estas llamadas a un proveedor de servicios SAN, excepto como se describe en las secciones siguientes.
Recuperación de opciones de socket SAN
El modificador de Windows Sockets llama a la función WSPGetSockOpt de un proveedor de servicios SAN y pasa una de las siguientes opciones de socket para recuperar el valor actual de esa opción, si el proveedor de servicios SAN admite esa opción:
SO_DEBUG
Los proveedores de servicios SAN no son necesarios para admitir esta opción. Se recomienda, pero no es necesario, para proporcionar información de depuración de salida si las aplicaciones establecen la opción SO_DEBUG.
SO_MAX_MSG_SIZE
Un proveedor de servicios SAN debe admitir esta opción si el transporte san subyacente está orientado a mensajes y el transporte limita la cantidad de datos que el conmutador puede enviar en una llamada a la función WSPSend del proveedor de servicios SAN. Posteriormente, el modificador no pasa solicitudes de envío al proveedor de servicios SAN que superan el tamaño que devuelve el proveedor de servicios SAN para el valor de esta opción.
SO_MAX_RDMA_SIZE
Un proveedor de servicios SAN debe admitir esta opción si el transporte SAN subyacente limita la cantidad de datos que el conmutador puede transferir en llamadas a la función WSPRdmaRead o WSPRdmaWrite del proveedor de servicios SAN. Posteriormente, el modificador no pasa solicitudes de transferencia RDMA al proveedor de servicios SAN que supera el tamaño que devuelve el proveedor de servicios SAN para el valor de esta opción.
SO_RDMA_THRESHOLD_SIZE
Un proveedor de servicios SAN admite esta opción para indicar su preferencia por la cantidad mínima de datos que el conmutador puede transferir en llamadas a la función WSPRdmaRead o WSPRdmaWrite del proveedor de servicios SAN. Sin embargo, el modificador puede establecer el umbral real en un valor diferente del valor devuelto por el proveedor de servicios SAN. Posteriormente, el modificador llama a la función WSPRdmaRead o WSPRdmaWrite para transferir bloques de datos (transferencias RDMA) que superan el tamaño de este umbral y la función WSPSend o WSPRecv para transferir bloques de datos (transferencias orientadas a mensajes) que son menores o iguales que el tamaño de este umbral.
SO_GROUP_ID, SO_GROUP_PRIORITY
Un proveedor de servicios SAN debe admitir estas opciones si admite la calidad de servicio (QoS). De lo contrario, el modificador reenvía estas opciones al proveedor TCP/IP, que mantiene los valores predeterminados. Un proveedor de servicios SAN indica que admite QoS estableciendo el bit XP1_QOS_SUPPORTED en el miembro dwServiceFlags de la estructura WSAPROTOCOL_INFO.
Configuración de las opciones de socket SAN
El conmutador Windows Sockets llama a la función WSPSetSockOpt de un proveedor de servicios SAN y pasa una de las siguientes opciones de socket para establecer un valor para esa opción, si el proveedor de servicios SAN admite esa opción:
SO_DEBUG
Para obtener una descripción de esta opción de socket, consulte la lista anterior.
SO_GROUP_PRIORITY
Para obtener una descripción de esta opción de socket, consulte la lista anterior.
Acceso a la información del socket SAN
El modificador de Windows Sockets llama a la función WSPIoctl de un proveedor de servicios SAN y pasa uno de los siguientes códigos de control para establecer o recuperar información para ese proveedor de servicios SAN, si el proveedor de servicios SAN admite ese código de control:
SIO_GET_EXTENSION_FUNCTION_POINTER
Recupera un puntero a una función de extensión que un proveedor de servicios SAN debe admitir. Para obtener más información sobre las funciones de extensión, vea Extensiones SPI de Windows Sockets para SAN. El búfer de entrada de la llamada WSPIoctl contiene el GUID cuyo valor identifica la función de extensión especificada. El proveedor de servicios SAN devuelve el puntero a la función solicitada en el búfer de salida de WSPIoctl. La tabla siguiente contiene GUID para las funciones de extensión que un proveedor de servicios SAN puede admitir:
Función de extensión | GUID |
---|---|
{C0B422F5-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422F6-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422F7-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422F8-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422F9-F58C-11d1-AD6C-00C04FA34A2D} |
|
{C0B422FA-F58C-11d1-AD6C-00C04FA34A2D} |
|
{E5DA4AF8-D824-48CD-A799-6337A98ED2AF} |
SIO_GET_QOS, SIO_GET_GROUP_QOS, SIO_SET_QOS, SIO_SET_GROUP_QOS
Un proveedor de servicios SAN debe admitir estos códigos de control si admite QoS. De lo contrario, el modificador reenvía estas opciones al proveedor TCP/IP, que mantiene los valores predeterminados. Un proveedor indica que admite QoS estableciendo el bit de XP1_QOS_SUPPORTED en el miembro dwServiceFlags de la estructura WSAPROTOCOL_INFO.
SIO_ADDRESS_LIST_QUERY
Recupera la lista de direcciones IP locales asignadas a las tarjetas de interfaz de red (NIC) que controla el proveedor de servicios SAN. El proveedor de servicios SAN usa una estructura de SOCKET_ADDRESS_LIST, definida de la siguiente manera, para devolver la lista en el búfer de salida de WSPIoctl:
typedef struct _SOCKET_ADDRESS_LIST {
INT iAddressCount;
SOCKET_ADDRESS Address[1];
} SOCKET_ADDRESS_LIST, FAR * LPSOCKET_ADDRESS_LIST;
Los miembros de esta estructura contienen la siguiente información:
iAddressCount
Especifica el número de estructuras de direcciones de la lista.
Dirección
Matriz de estructuras de direcciones IP.
El modificador usa este código IOCTL internamente para decidir si se debe usar un proveedor de servicios SAN determinado para ejecutar las solicitudes de una aplicación para realizar conexiones o escuchar las conexiones entrantes. El modificador reenvía las solicitudes de aplicación reales para la lista de direcciones IP locales al proveedor TCP/IP. El modificador también usa el proveedor TCP/IP para detectar los cambios en las listas de direcciones que todos los proveedores de servicios SAN servicio. Después de que TCP/IP informa de un cambio, el modificador consulta a todos los proveedores de servicios SAN para actualizar sus listas.