Compartir a través de


Administración de identificadores multiplex

RDBSS define un id. de multiplex (MID), un valor de 16 bits, que puede usar el cliente de red (minidirector) y el servidor para distinguir entre las solicitudes activas simultáneamente en cualquier conexión. Un redirector de red puede asociar un MID con cualquier contexto arbitrario o estructura de datos interna que use. Está completamente en la opción del redirector de red si los MID se asignan y usan.

Mid, tal y como se define en RDBSS, forma parte de una estructura de datos MID_ATLAS que se ha diseñado para cumplir varios criterios. Asociada a una estructura de datos de MID_ATLAS son una serie de una o varias estructuras de datos MID_MAP usadas para asignar MID a contextos asociados.

La estructura de datos MID_ATLAS, la estructura de MID_MAP y los MID deben escalarse bien para controlar las distintas funcionalidades de varios servidores remotos. Por ejemplo, el servidor típico de LAN Manager en Windows permite 50 solicitudes pendientes en cualquier conexión. Algunos tipos de servidores pueden admitir tan solo una solicitud pendiente, mientras que los servidores de puerta de enlace pueden desear que este número sea muy alto (en el orden de miles de conexiones pendientes).

Las dos operaciones principales que deben controlarse bien son:

  • Asignar mid al contexto asociado. Esta rutina se invocará para procesar todos los paquetes recibidos a lo largo de cualquier conexión tanto en el cliente como en el servidor (suponiendo que los servidores usen MID).

  • Generar un nuevo MID para enviar solicitudes al servidor. Esta rutina se usará en el cliente para aplicar los límites máximos de conexión, así como para etiquetar cada solicitud simultánea con un identificador único.

Mid debe ser capaz de administrar eficazmente el etiquetado y la identificación únicos de una serie de MID (normalmente 50) a partir de una posible combinación de 65 536 valores. En algunos casos, es posible que tenga sentido crear una estructura de MID_ATLAS pequeña para guardar la memoria del kernel utilizada por la estructura MID_MAP y expandir el tamaño de la estructura de MID_ATLAS si es necesario para controlar de forma eficaz un mayor uso. Para garantizar un equilibrio adecuado entre el espacio temporal, la búsqueda se organiza como una jerarquía de tres niveles. Los 16 bits usados para representar un MID se dividen en campos de tres bits. La longitud del campo más a la derecha (menos significativo) se decide mediante el número máximo de MID que se permiten en el atlas inicial. Este valor máximo es un parámetro pasado a la rutina RxCreateMidAtlas cuando se crea por primera vez la estructura de datos MID_ATLAS. Este valor máximo determina el tamaño inicial de la estructura de datos de MID_ATLAS que se crea y cuántos MID_MAP estructuras de datos se pueden alojar. La longitud restante se divide igualmente entre los dos campos siguientes, que determinan el tamaño máximo de las posibles estructuras subordinadas MID_ATLAS que se pueden definir para expandir y ampliar una MID_ATLAS existente en una jerarquía de tres niveles de MID_MAP estructuras de datos. Por lo tanto, cada estructura de datos MID_ATLAS puede contener el número máximo de estructuras de MID_MAP o un puntero a un MID_ATLAS subordinado y las estructuras de MID_MAP.

Por ejemplo, si se asigna un máximo de 50 MID al crear , la longitud del primer campo es 6 (64 ( 2 ** 6 ) es mayor que 50 ). La longitud restante se divide en dos campos de 5 bits cada uno para el segundo y tercer nivel jerárquico para que se pueda expandir una estructura de datos MID_ATLAS existente para dar cabida a más entradas MID_MAP.

RDBSS proporciona las siguientes rutinas para crear y manipular una estructura de datos de MID_ATLAS, estructuras de datos MID_MAP asociadas e identificadores multiplex.

Rutina Descripción

RxAssociateContextWithMid

Esta rutina asocia el contexto opaco proporcionado a un MID disponible a partir de una estructura de MID_ATLAS.

RxCreateMidAtlas

Esta rutina asigna una nueva instancia de la estructura de datos MID_ATLAS e inicializa.

RxDestroyMidAtlas

Esta rutina destruye una instancia existente de una estructura de datos MID_ATLAS y libera la memoria asignada. Como efecto secundario, invoca el destructor de contexto pasado en cada contexto válido de la estructura MID_ATLAS.

RxMapMidToContext

Esta rutina asigna mid a su contexto asociado en una estructura de MID_ATLAS.

RxMapAndDissociateMidFromContext

Esta rutina asigna un MID a su contexto asociado en una estructura de MID_ATLAS y, a continuación, desasocia el MID del contexto.

RxReassociateMid

Esta rutina vuelve a asociar un MID con un contexto alternativo.