Управление идентификаторами мультиплекса
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 структурами данных и идентификаторами мультиплексов, и управления ими.
Подпрограмма | Описание |
---|---|
Эта подпрограмма связывает предоставленный непрозрачный контекст с доступным MID из структуры MID_ATLAS. |
|
Эта подпрограмма выделяет новый экземпляр структуры данных MID_ATLAS и инициализирует его. |
|
Эта подпрограмма уничтожает существующий экземпляр структуры данных MID_ATLAS и освобождает выделенную ему память. В качестве побочных эффектов он вызывает переданный деструктор контекста для каждого допустимого контекста в структуре MID_ATLAS. |
|
Эта подпрограмма сопоставляет MID со связанным контекстом в MID_ATLAS структуре. |
|
Эта подпрограмма сопоставляет MID со связанным контекстом в MID_ATLAS структуре, а затем отмежевает MID от контекста. |
|
Эта подпрограмма повторно привязывает MID к альтернативному контексту. |