Gestion des ID multiplex

RDBSS définit un ID multiplex (MID), une valeur 16 bits, qui peut être utilisé par le client réseau (mini-redirecteur) et le serveur pour faire la distinction entre les requêtes actives simultanées sur n’importe quelle connexion. Un redirecteur réseau peut associer un MID à n’importe quel contexte arbitraire ou structure de données interne qu’il utilise. Le redirecteur réseau peut décider si les MID sont alloués et utilisés.

Un MID, tel que défini par RDBSS, fait partie d’une structure de données MID_ATLAS qui a été conçue pour répondre à plusieurs critères. Associées à une structure de données MID_ATLAS sont une série d’une ou plusieurs structures de données MID_MAP utilisées pour mapper des MID aux contextes associés.

La structure de données MID_ATLAS, la structure MID_MAP et les MID doivent être bien mis à l’échelle pour gérer les différentes fonctionnalités de différents serveurs distants. Par exemple, le serveur lan Manager standard sur Windows autorise 50 demandes en attente sur n’importe quelle connexion. Certains types de serveurs peuvent prendre en charge aussi peu qu’une seule demande en attente, tandis que les serveurs de passerelle peuvent souhaiter que ce nombre soit très élevé (de l’ordre de milliers de connexions en attente).

Les deux opérations principales qui doivent être gérées correctement sont les suivantes :

  • Mappage d’un mid au contexte qui lui est associé. Cette routine est appelée pour traiter chaque paquet reçu le long d’une connexion au niveau du client et du serveur (en supposant que les serveurs utilisent des MID).

  • Génération d’un nouveau MID pour l’envoi de requêtes au serveur. Cette routine sera utilisée au niveau du client pour l’application des limites maximales de connexion, ainsi que pour le balisage de chaque demande simultanée avec un ID unique.

Le MID doit être en mesure de gérer efficacement l’étiquetage et l’identification uniques d’un certain nombre de MID (généralement 50) à partir d’une combinaison possible de 65 536 valeurs. Dans certains cas, il peut être judicieux de créer une petite structure de MID_ATLAS pour économiser la mémoire du noyau utilisée par la structure MID_MAP et développer la taille de la structure MID_ATLAS si nécessaire pour gérer efficacement une utilisation plus importante. Pour garantir un compromis d’espace temps approprié, la recherche est organisée sous la forme d’une hiérarchie à trois niveaux. Les 16 bits utilisés pour représenter un MID sont divisés en trois champs de bits. La longueur du champ le plus à droite (le moins significatif ) est déterminée par le nombre maximal de MID autorisés dans l’atlas initial. Cette valeur maximale est un paramètre passé à la routine RxCreateMidAtlas lors de la création de la structure de données MID_ATLAS. Cette valeur maximale détermine la taille initiale de la structure de données MID_ATLAS qui est créée et le nombre de structures de données MID_MAP pouvant être prise en charge. La longueur restante est répartie de manière égale entre les deux champs suivants, qui déterminent la taille maximale des structures de MID_ATLAS subordonnées qui peuvent être définies pour développer et étendre une MID_ATLAS existante dans une hiérarchie à trois niveaux de structures de données MID_MAP. Ainsi, chaque structure de données MID_ATLAS peut contenir le nombre maximal de structures MID_MAP ou un pointeur vers une MID_ATLAS subordonnée et les structures MID_MAP.

Par exemple, si un maximum de 50 MID sont alloués lors de la création , la longueur du premier champ est 6 (64 ( 2 ** 6 ) est supérieur à 50 ). La longueur restante est divisée en deux champs de 5 bits chacun pour les deuxième et troisième niveaux hiérarchiques afin qu’une structure de données MID_ATLAS existante puisse être développée pour prendre en charge plus d’entrées MID_MAP.

RDBSS fournit les routines suivantes pour créer et manipuler une structure de données MID_ATLAS, des structures de données MID_MAP associées et des ID multiplex.

Routine Description

RxAssociateContextWithMid

Cette routine associe le contexte opaque fourni à un MID disponible à partir d’une structure MID_ATLAS.

RxCreateMidAtlas

Cette routine alloue une nouvelle instance de la structure de données MID_ATLAS et l’initialise.

RxDestroyMidAtlas

Cette routine détruit une instance existante d’une structure de données MID_ATLAS et libère la mémoire qui lui est allouée. En tant qu’effet secondaire, il appelle le destructeur de contexte passé sur chaque contexte valide dans la structure MID_ATLAS.

RxMapMidToContext

Cette routine mappe un MID à son contexte associé dans une structure MID_ATLAS.

RxMapAndDissociateMidFromContext

Cette routine mappe un MID à son contexte associé dans une structure de MID_ATLAS, puis dissocie le MID du contexte.

RxReassociateMid

Cette routine associe un MID à un autre contexte.