Compartir a través de


Registro de memoria para operaciones en una SAN

El conmutador de Windows Sockets llama a las funciones de extensión de un proveedor de servicios SAN para registrar todos los búferes de datos para enviar y recibir mensajes y para las operaciones RDMA en una red de área del sistema. Estas funciones de extensión registran un búfer en una región de memoria física para su uso en un socket SAN determinado que está conectado a un mismo nivel remoto. Para obtener una descripción de estas funciones de extensión, consulte Las extensiones SPI de Windows Sockets para LOS SAN.

Registro de búferes de datos

El modificador llama a la función de extensión WSPRegisterMemory de un proveedor de servicios SAN en nombre de una aplicación que se ejecuta en un proceso local para registrar búferes de datos a los que solo puede acceder ese proceso. Los identificadores de búfer que devuelve WSPRegisterMemory solo son válidos en el contexto del proceso local que realizó el registro. El modificador llama a WSPRegisterMemory para registrar búferes que actúan como el búfer receptor de mensajes en una llamada a la función WSPRecv o al búfer de envío de mensajes en una llamada a la función WSPSend . El modificador también llama a WSPRegisterMemory para registrar búferes que sirven como búfer RDMA de recepción local en una llamada a la función de extensión WSPRdmaRead o al origen RDMA local en una llamada a la función de extensión WSPRdmaWrite . Cuando el proceso local termine de usar búferes registrados con WSPRegisterMemory, el modificador llama a la función de extensión WSPDeregisterMemory para liberar esos búferes.

El modificador llama a la función de extensión WSPRegisterRdmaMemory del proveedor de servicios SAN en nombre de una aplicación que se ejecuta en un proceso local para registrar búferes RDMA a los que pueden acceder los procesos locales y remotos. Los descriptores de búfer que devuelve WSPRegisterRdmaMemory solo son válidos para las operaciones de transferencia de datos RDMA que inicia un par remoto en el contexto de la conexión del mismo nivel al socket SAN en el que se realizó el registro. El modificador en la conexión remota del mismo nivel usa estos búferes RDMA como destino en una llamada a la función de extensión WSPRdmaWrite o al origen de una llamada a la función de extensión WSPRdmaRead . Una vez que los procesos locales y remotos terminen de usar búferes registrados con WSPRegisterRdmaMemory, el modificador llama a la función de extensión WSPDeregisterRdmaMemory para liberar esos búferes.

Administración del acceso a memoria

Un proveedor de servicios SAN debe impedir el acceso no autorizado a la memoria registrada.

La memoria debe estar registrada y accesible de la siguiente manera:

La memoria registrada para el acceso local solo debe estar disponible para el proceso en el que el modificador denominado WSPRegisterMemory.

Se puede acceder a la memoria registrada para el acceso local y remoto mediante el proceso en el que el modificador llamado WSPRegisterRdmaMemory para registrar la memoria, o bien mediante el par remoto que está conectado al socket SAN al que está registrada la memoria.

La memoria solo debe ser accesible mientras está registrada y mientras se establece la conexión. Un proveedor de servicios SAN debe asegurarse de que no hace accidentalmente que dicha memoria sea accesible para otros procesos que se ejecutan en el mismo equipo o en otros equipos de la SAN.

La memoria registrada solo para el acceso de lectura no debe estar disponible para el acceso de escritura. La memoria registrada solo para el acceso de escritura no debe estar disponible para el acceso de lectura.

Uso de la memoria registrada

El conmutador registra dos regiones de memoria prácticamente contiguas para cada socket TCP conectado que se va a usar para negociar una sesión de transferencia de datos. El modificador usa una región de memoria para proporcionar búferes de mensajes que contienen datos de envío al llamar a la función WSPSend de un proveedor de servicios SAN. El modificador usa la otra región de memoria para publicar búferes de mensajes para recibir datos al llamar a la función WSPRecv de un proveedor de servicios SAN.

El modificador normalmente registra búferes RDMA solo si transfiere datos de aplicación en operaciones RDMA.

Antes de que el modificador cierre un socket, el modificador llama a las funciones WSPDeregisterMemory o WSPDeregisterRdmaMemory de un proveedor de servicios SAN para liberar cualquier memoria que no esté usando actualmente una operación de transferencia de datos pendiente. El proveedor de servicios SAN también debe liberar memoria asociada a operaciones de transferencia de datos pendientes.