Share via


멀티플렉스 ID 관리

RDBSS는 네트워크 클라이언트(미니 리디렉터)와 서버에서 모든 연결에서 동시에 활성 요청을 구분하는 데 사용할 수 있는 16비트 값인 MID(멀티플렉스 ID)를 정의합니다. 네트워크 리디렉터에서는 MID를 사용하는 임의의 컨텍스트 또는 내부 데이터 구조와 연결할 수 있습니다. MID가 할당되고 사용되는지 여부는 네트워크 리디렉터의 옵션에 완전히 있습니다.

RDBSS에서 정의한 MID는 여러 조건을 충족하도록 설계된 MID_ATLAS 데이터 구조의 일부입니다. MID_ATLAS 데이터 구조와 연결된 일련의 MID_MAP 데이터 구조는 MID를 연결된 컨텍스트에 매핑하는 데 사용됩니다.

MID_ATLAS 데이터 구조, MID_MAP 구조 및 MID는 다양한 원격 서버의 다양한 기능을 처리하기 위해 잘 확장되어야 합니다. 예를 들어 Windows의 일반적인 LAN 관리자 서버는 모든 연결에서 50개의 미해결 요청을 허용합니다. 일부 유형의 서버는 하나의 미해결 요청을 지원할 수 있지만 게이트웨이 서버는 이 숫자가 매우 높기를 원할 수 있습니다(수천 개의 미해결 연결 순서).

잘 처리해야 하는 두 가지 기본 작업은 다음과 같습니다.

  • MID를 연결된 컨텍스트에 매핑합니다. 이 루틴은 클라이언트와 서버 모두에서 모든 연결을 따라 수신된 모든 패킷을 처리하기 위해 호출됩니다(서버가 MID를 사용 한다고 가정).

  • 서버에 요청을 보내기 위한 새 MID 생성 이 루틴은 클라이언트에서 최대 연결 제한을 적용하고 각 동시 요청에 고유한 ID로 태그를 지정하는 데 사용됩니다.

MID는 가능한 65,536개 값 조합에서 여러 MID(일반적으로 50)의 고유한 태그 지정 및 식별을 효율적으로 관리할 수 있어야 합니다. 경우에 따라 작은 MID_ATLAS 구조를 만들어 MID_MAP 구조에서 사용하는 커널 메모리를 저장하고 더 많은 사용량을 효율적으로 처리해야 하는 경우 MID_ATLAS 구조체의 크기를 확장하는 것이 좋습니다. 적절한 시간 공간 절충을 보장하기 위해 조회는 3단계 계층 구조로 구성됩니다. MID를 나타내는 데 사용되는 16비트는 3비트 필드로 분할됩니다. 맨 오른쪽 필드의 길이(최하위)는 초기 아틀라스에서 허용되는 최대 MID 수에 따라 결정됩니다. 이 최대값은 MID_ATLAS 데이터 구조를 처음 만들 때 RxCreateMidAtlas 루틴에 전달되는 매개 변수입니다. 이 최대값은 생성된 MID_ATLAS 데이터 구조의 초기 크기와 수용할 수 있는 MID_MAP 데이터 구조 수를 결정합니다. 나머지 길이는 다음 두 필드 간에 균등하게 분할되며, 이는 기존 MID_ATLAS 확장하여 MID_MAP 데이터 구조의 3단계 계층 구조로 확장하도록 정의할 수 있는 가능한 하위 MID_ATLAS 구조의 최대 크기를 결정합니다. 따라서 각 MID_ATLAS 데이터 구조에는 최대 MID_MAP 구조체 수 또는 하나의 하위 MID_ATLAS 대한 포인터 및 MID_MAP 구조체가 포함될 수 있습니다.

예를 들어 생성 시 최대 50개의 MID가 할당되는 경우 첫 번째 필드의 길이는 6(64( 2 ** 6 )이 50보다 큽니다. 나머지 길이는 두 번째 및 세 번째 계층 수준에 대해 각각 5비트의 두 필드로 분할되므로 더 많은 MID_MAP 항목을 수용하기 위해 기존 MID_ATLAS 데이터 구조를 확장할 수 있습니다.

RDBSS는 MID_ATLAS 데이터 구조, 연결된 MID_MAP 데이터 구조 및 멀티플렉스 ID를 만들고 조작하기 위한 다음 루틴을 제공합니다.

루틴에서 반환된 값 Description

RxAssociateContextWithMid

이 루틴은 제공된 불투명 컨텍스트를 MID_ATLAS 구조에서 사용 가능한 MID와 연결합니다.

RxCreateMidAtlas

이 루틴은 MID_ATLAS 데이터 구조의 새 instance 할당하고 초기화합니다.

RxDestroyMidAtlas

이 루틴은 MID_ATLAS 데이터 구조의 기존 instance 삭제하고 할당된 메모리를 해제합니다. 부작용으로 MID_ATLAS 구조의 모든 유효한 컨텍스트에서 전달된 컨텍스트 소멸자를 호출합니다.

RxMapMidToContext

이 루틴은 MID를 MID_ATLAS 구조의 연결된 컨텍스트에 매핑합니다.

RxMapAndDissociateMidFromContext

이 루틴은 MID를 MID_ATLAS 구조체의 연결된 컨텍스트에 매핑한 다음 컨텍스트에서 MID를 연결 해제합니다.

RxReassociateMid

이 루틴은 MID를 대체 컨텍스트와 다시 연결합니다.