Partager via


Inscription de la mémoire pour les opérations sur un SAN

Le commutateur Windows Sockets appelle les fonctions d’extension d’un fournisseur de services SAN pour inscrire toutes les mémoires tampons de données pour l’envoi et la réception de messages et pour les opérations RDMA sur un réseau de zone système. Ces fonctions d’extension inscrivent une mémoire tampon dans une région de mémoire physique pour une utilisation sur un socket SAN particulier connecté à un homologue distant. Pour obtenir une description de ces fonctions d’extension, consultez extensions SPI windows sockets pour les SAN.

Inscription de mémoires tampons de données

Le commutateur appelle la fonction d’extension WSPRegisterMemory d’un fournisseur de services SAN pour le compte d’une application qui s’exécute dans un processus local pour inscrire des mémoires tampons de données accessibles uniquement par ce processus. Les handles de mémoire tampon retournés par WSPRegisterMemory sont valides uniquement dans le contexte du processus local qui a effectué l’inscription. Le commutateur appelle WSPRegisterMemory pour inscrire les mémoires tampons qui servent de mémoire tampon de réception de message dans un appel à la fonction WSPRecv ou de mémoire tampon d’envoi de message dans un appel à la fonction WSPSend . Le commutateur appelle également WSPRegisterMemory pour inscrire les mémoires tampons qui servent de mémoire tampon RDMA de réception locale dans un appel à la fonction d’extension WSPRdmaRead ou à la source RDMA locale dans un appel à la fonction d’extension WSPRdmaWrite . Une fois le processus local terminé à l’aide des mémoires tampons inscrites auprès de WSPRegisterMemory, le commutateur appelle la fonction d’extension WSPDeregisterMemory pour libérer ces mémoires tampons.

Le commutateur appelle la fonction d’extension WSPRegisterRdmaMemory du fournisseur de services SAN pour le compte d’une application qui s’exécute dans un processus local pour inscrire les mémoires tampons RDMA auxquelles les processus locaux et distants peuvent accéder. Les descripteurs de mémoire tampon retournés par WSPRegisterRdmaMemory sont valides uniquement pour les opérations de transfert de données RDMA qu’un homologue distant lance dans le contexte de la connexion de l’homologue au socket SAN sur lequel l’inscription a été effectuée. Le commutateur au niveau de la connexion homologue distante utilise ces mémoires tampons RDMA en tant que cible dans un appel à la fonction d’extension WSPRdmaWrite ou source dans un appel à la fonction d’extension WSPRdmaRead . Une fois que les processus locaux et distants ont terminé d’utiliser des mémoires tampons inscrites auprès de WSPRegisterRdmaMemory, le commutateur appelle la fonction d’extension WSPDeregisterRdmaMemory pour libérer ces mémoires tampons.

Gestion de l’accès à la mémoire

Un fournisseur de services SAN doit empêcher l’accès non autorisé à la mémoire inscrite.

La mémoire doit être inscrite et accessible comme suit :

La mémoire inscrite pour l’accès local doit être disponible uniquement pour le processus dans lequel le commutateur appelé WSPRegisterMemory.

La mémoire inscrite pour l’accès local et à distance est accessible par le processus dans lequel le commutateur appelé WSPRegisterRdmaMemory pour inscrire la mémoire, ou par l’homologue distant connecté au socket SAN auquel la mémoire est inscrite.

La mémoire doit être accessible uniquement pendant l’inscription et pendant l’établissement de la connexion. Un fournisseur de services SAN doit s’assurer qu’il ne rend pas cette mémoire accessible par inadvertance à d’autres processus exécutés sur le même ordinateur ou sur d’autres ordinateurs sur le SAN.

La mémoire inscrite uniquement pour l’accès en lecture ne doit pas être disponible pour l’accès en écriture. La mémoire inscrite uniquement pour l’accès en écriture ne doit pas être disponible pour l’accès en lecture.

Utilisation de la mémoire inscrite

Le commutateur inscrit deux régions de mémoire pratiquement contiguës pour chaque socket TCP connecté à utiliser pour la négociation d’une session de transfert de données. Le commutateur utilise une région de mémoire pour fournir des mémoires tampons de messages contenant des données d’envoi lors de l’appel de la fonction WSPSend d’un fournisseur de services SAN. Le commutateur utilise l’autre région de mémoire pour publier des mémoires tampons de messages afin de recevoir des données lors de l’appel de la fonction WSPRecv d’un fournisseur de services SAN.

Le commutateur inscrit généralement les mémoires tampons RDMA uniquement s’il transfère des données d’application dans des opérations RDMA.

Avant que le commutateur ferme un socket, le commutateur appelle les fonctions WSPDeregisterMemory ou WSPDeregisterRdmaMemory d’un fournisseur de services SAN pour libérer toute mémoire qu’une opération de transfert de données en attente n’utilise pas actuellement. Le fournisseur de services SAN doit également libérer la mémoire associée aux opérations de transfert de données en attente.