네트워크 어댑터의 VMQ 기능 결정

NDIS는 다음과 같은 네트워크 어댑터의 VMQ 기능을 결정하는 인터페이스를 제공합니다.

  • 네트워크 어댑터의 일반 필터링 기능입니다.

  • 지원되는 VM 큐 기능.

  • 두 개의 별도 버퍼로 네트워킹 데이터 메모리를 분할할 수 있도록 Lookahead 지원.

    참고 NDIS 6.30부터 패킷 데이터를 별도의 lookahead 버퍼로 분할하는 것은 더 이상 지원되지 않습니다.

미니포트 드라이버는 네트워크 어댑터를 초기화하는 동안 NDIS에 다음 정보를 제공합니다.

  • 네트워크 어댑터가 지원할 수 있는 VMQ 하드웨어 기능입니다.

  • 현재 사용하도록 설정된 VMQ 기능입니다.

  • 네트워크 어댑터에서 사용하거나 사용하지 않도록 설정된 전역 수신 필터링 기능입니다.

드라이버와 애플리케이션을 과도하게 사용하면 다음 OID 쿼리 요청을 사용하여 네트워크 어댑터 기능을 얻을 수 있습니다.

OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES

OID_RECEIVE_FILTER_CURRENT_CAPABILITIES

OID_RECEIVE_FILTER_GLOBAL_PARAMETERS

NDIS는 미니포트 드라이버에 대한 이러한 OID 쿼리 요청을 처리합니다. 따라서 미니포트 드라이버에 대해 쿼리가 요청되지 않습니다. NDIS는 초기화 중에 네트워크 어댑터의 현재 활성화된 수신 VMQ 기능을 보고합니다. 따라서 지나치게 많은 드라이버는 이러한 OID를 쿼리할 필요가 없습니다.

NDIS_RECEIVE_FILTER_CAPABILITIES 구조는 네트워크 어댑터의 필터링 기능을 지정합니다. 이 구조체는 다음과 같은 방법으로 사용됩니다.

NDIS_RECEIVE_FILTER_CAPABILITIES 구조에는 다음 정보가 포함됩니다.

EnabledFilterTypes
지원되는 수신 필터의 형식입니다. NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED 플래그는 VMQ(가상 머신 큐) 필터를 사용하도록 지정합니다.

EnabledQueueTypes
지원되는 수신 큐의 유형입니다. NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED 플래그는 VM(가상 머신) 큐를 사용하도록 지정합니다.

NumQueues
네트워크 어댑터가 지원하는 수신 큐 수입니다. VMQ를 지원하려면 이 숫자가 NIC에서 지원하는 유니캐스트 MAC 주소 수와 같거나 작아야 합니다. 이 숫자에는 기본 큐가 포함되어서는 안됩니다.

참고 네트워크 어댑터가 지원하는 유니캐스트 MAC 주소 또는 VM 큐의 수는 연결된 NIC의 MAC 주소를 포함하지 않습니다.

SupportedQueueProperties
네트워크 어댑터가 지원하는 큐 속성입니다. NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED 플래그는 네트워크 어댑터가 VMQ 필터링을 지원하기 위한 최소 요구 사항을 제공함을 지정합니다. VMQ 지원 NIC는 각 수신 큐에 대해 MSI-X 테이블 항목을 제공해야 합니다. 따라서 VMQ 미니포트 드라이버는 NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED 플래그를 설정해야 합니다.

SupportedFilterTests
미니포트 드라이버가 지원하는 필터 테스트 작업입니다. 예를 들어 네트워크 어댑터는 선택한 헤더 필드를 테스트하여 지정된 값과 같은지 여부를 확인합니다. VMQ 미니포트 드라이버는 NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED 플래그를 설정해야 합니다.

SupportedHeaders
미니포트 드라이버가 검사할 수 있는 네트워크 패킷 헤더 유형입니다. 예를 들어 네트워크 어댑터는 네트워크 패킷의 MAC 헤더를 검사할 수 있습니다. MAC 헤더에는 패킷 유형, 대상 및 원본 MAC 주소, VLAN 식별자 및 우선 순위 태그 필드가 포함됩니다. VMQ 미니포트 드라이버는 NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED 플래그를 설정해야 합니다.

SupportedMacHeaderFields
미니포트 드라이버가 검사할 수 있는 MAC 헤더 필드 유형입니다. VMQ 미니포트 드라이버는 NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED 플래그를 설정해야 합니다.

MaxMacHeaderFilters
미니포트 드라이버가 지원하는 최대 MAC 헤더 필터 수입니다. 최소한 VM 큐만큼 헤더 필터가 있어야 합니다.

MaxQueueGroups
이 멤버는 NDIS용으로 예약되어 있습니다.

MaxQueuesPerQueueGroup
이 멤버는 NDIS용으로 예약되어 있습니다.

MinLookaheadSplitSize
네트워크 어댑터가 lookahead 패킷 세그먼트를 지원하는 최소 크기(바이트)입니다.

참고 NDIS 6.30부터 패킷 데이터를 별도의 lookahead 버퍼로 분할하는 것은 더 이상 지원되지 않습니다. NDIS 6.30 이상 버전을 지원하는 미니포트 드라이버는 이 멤버를 0으로 설정해야 합니다.

MaxLookaheadSplitSize
네트워크 어댑터가 lookahead 패킷 세그먼트를 지원하는 최대 크기(바이트)입니다.

참고 NDIS 6.30부터 패킷 데이터를 별도의 lookahead 버퍼로 분할하는 것은 더 이상 지원되지 않습니다. NDIS 6.30 이상 버전을 지원하는 미니포트 드라이버는 이 멤버를 0으로 설정해야 합니다.

OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES OID 쿼리에서 성공적으로 반환된 후 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 NDIS_RECEIVE_FILTER_CAPABILITIES 구조체에 대한 포인터가 포함됩니다. 이러한 기능에는 현재 INF 파일 설정 또는 고급 속성 페이지를 통해 사용하지 않도록 설정된 VMQ 하드웨어 기능이 포함될 수 있습니다. VMQ INF 파일 설정에 대한 자세한 내용은 VMQ 표준 INF 항목을 참조하세요.

NDIS 미니포트 드라이버는 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 구조체의 HardwareReceiveFilterCapabilities 멤버를 초기화하는 동안 수신 필터링 하드웨어 기능을 제공합니다.

OID_RECEIVE_FILTER_CURRENT_CAPABILITIES OID 쿼리에서 성공적으로 반환된 후 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 NDIS_RECEIVE_FILTER_CAPABILITIES 구조체에 대한 포인터가 포함됩니다. 이러한 기능에는 현재 사용하도록 설정된 VMQ 기능이 포함됩니다.

NDIS 미니포트 드라이버는 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 구조체의 CurrentReceiveFilterCapabilities 멤버를 초기화하는 동안 현재 활성화된 수신 필터링 기능을 제공합니다.

NDIS는 바인딩 작업 중 NDIS_BIND_PARAMETERS 구조의ReceiveFilterCapabilities 멤버에 있는 프로토콜 드라이버에 기본 네트워크 어댑터의 현재 활성화된 수신 필터링 기능을 보고합니다.

NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS 구조는 OID_RECEIVE_FILTER_GLOBAL_PARAMETERS 쿼리 OID에서 현재 전역 수신 필터 설정을 가져오는 데 사용됩니다.

NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS 다음 정보를 포함합니다.

EnabledFilterTypes
활성화된 수신 필터의 유형입니다. NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED 플래그는 VMQ(가상 머신 큐) 필터를 사용하도록 지정합니다.

EnabledQueueTypes
활성화된 수신 큐의 유형입니다. NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED 플래그는 VM(가상 머신) 큐를 사용하도록 지정합니다.

OID_RECEIVE_FILTER_GLOBAL_PARAMETERS OID 쿼리에서 성공적으로 반환된 후 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS 구조체에 대한 포인터가 포함됩니다. NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS 구조는 네트워크 어댑터에서 사용하거나 사용하지 않도록 설정된 수신 필터링 기능을 지정합니다.

NDIS 프로토콜 드라이버는 OID_RECEIVE_FILTER_GLOBAL_PARAMETERS 사용하여 네트워크 어댑터에서 수신 필터링을 위해 현재 전역 구성 매개 변수를 쿼리합니다. 예를 들어 프로토콜 드라이버는 이 OID를 사용하여 수신 필터 또는 수신 큐 유형이 사용하도록 설정되었는지 또는 사용하지 않도록 설정되었는지 확인할 수 있습니다.