Поделиться через


Управление идентификаторами мультиплекса

RDBSS определяет идентификатор мультиплекса (MID), 16-разрядное значение, которое может использоваться как сетевым клиентом (мини-перенаправлением), так и сервером для различения одновременно активных запросов к любому соединению. Перенаправитель сети может связать MID с любым произвольным контекстом или внутренней структурой данных, которую он использует. Выделение и использование MID полностью определяется параметром перенаправителя сети.

Mid, как определено RDBSS, является частью структуры данных MID_ATLAS, которая была разработана для удовлетворения нескольких критериев. Связанные со структурой данных MID_ATLAS представляют собой последовательность из одной или нескольких MID_MAP структур данных, используемых для сопоставления MID со связанными контекстами.

Структура данных MID_ATLAS, структура MID_MAP и MID должны хорошо масштабироваться для обработки различных возможностей различных удаленных серверов. Например, типичный сервер LAN Manager в Windows разрешает 50 невыполненных запросов для любого подключения. Некоторые типы серверов могут поддерживать всего один незавершенный запрос, в то время как серверы шлюза могут требовать, чтобы это число было очень большим (порядка тысяч незавершенных подключений).

Ниже приведены две основные операции, которые должны быть хорошо обработаны.

  • Сопоставление MID с контекстом, связанным с ним. Эта подпрограмма будет вызываться для обработки каждого пакета, полученного вместе с любым подключением как на клиенте, так и на сервере (при условии, что серверы используют MID).

  • Создание нового MID для отправки запросов на сервер. Эта подпрограмма будет использоваться на клиенте для применения максимальных ограничений на подключение, а также для добавления тегов к каждому параллельному запросу с уникальным идентификатором.

MID должен иметь возможность эффективно управлять уникальными тегами и идентификацией ряда MID (обычно 50) из возможного сочетания 65 536 значений. В некоторых случаях может быть целесообразно создать небольшую структуру MID_ATLAS, чтобы сэкономить память ядра, используемую структурой MID_MAP, и при необходимости расширить размер структуры MID_ATLAS для эффективного использования. Чтобы обеспечить правильный компромисс между временными пространствами, поиск организован в виде трехуровневой иерархии. 16 бит, используемых для представления MID, разбиваются на три битовых поля. Длина наиболее правого поля (наименее значимая) определяется максимальным числом MID, разрешенным в исходном атласе. Это максимальное значение является параметром, передаваемым подпрограмме RxCreateMidAtlas при первом создании структуры данных MID_ATLAS. Это максимальное значение определяет начальный размер создаваемой структуры данных MID_ATLAS и количество MID_MAP структур данных. Оставшаяся длина распределяется поровну между следующими двумя полями, которые определяют максимальный размер возможных подчиненных MID_ATLAS структур, которые можно определить для расширения и расширения существующей MID_ATLAS в трехуровневую иерархию MID_MAP структур данных. Таким образом, каждая MID_ATLAS структура данных может содержать максимальное количество MID_MAP структур или указатель на одну подчиненную MID_ATLAS и MID_MAP структур.

Например, если при создании выделяется не более 50 идентификаторов MID, длина первого поля составляет 6 (64 ( 2 ** 6 ) больше 50 ). Оставшаяся длина разбивается на два поля по 5 бит для второго и третьего иерархического уровней, чтобы можно было расширить существующую структуру данных MID_ATLAS, чтобы вместить больше MID_MAP записей.

RDBSS предоставляет следующие процедуры для создания структуры данных MID_ATLAS, связанных MID_MAP структурами данных и идентификаторами мультиплексов, и управления ими.

Подпрограмма Описание

RxAssociateContextWithMid

Эта подпрограмма связывает предоставленный непрозрачный контекст с доступным MID из структуры MID_ATLAS.

RxCreateMidAtlas

Эта подпрограмма выделяет новый экземпляр структуры данных MID_ATLAS и инициализирует его.

RxDevicmidAtlas

Эта подпрограмма уничтожает существующий экземпляр структуры данных MID_ATLAS и освобождает выделенную ему память. В качестве побочных эффектов он вызывает переданный деструктор контекста для каждого допустимого контекста в структуре MID_ATLAS.

RxMapMidToContext

Эта подпрограмма сопоставляет MID со связанным контекстом в MID_ATLAS структуре.

RxMapAndDissociateMidFromContext

Эта подпрограмма сопоставляет MID со связанным контекстом в MID_ATLAS структуре, а затем отмежевает MID от контекста.

RxReassociateMid

Эта подпрограмма повторно привязывает MID к альтернативному контексту.