다음을 통해 공유


수신 필터를 가상 포트로 이동

오버리싱 드라이버는 수신 필터를 VPort(가상 포트)에서 NIC 스위치의 다른 VPort로 이동하는 OID_RECEIVE_FILTER_MOVE_FILTER OID(개체 식별자) 집합 요청을 실행합니다. 일반적으로 가상화 스택과 같은 지나치게 많은 드라이버는 다음 조건 중 어느 것이라도 충족되는 경우 이 OID 요청을 실행합니다.

  • 가상화 스택은 기본 VPort에서 수신 필터를 설정합니다. 이 필터에는 Hyper-V 자식 파티션에 노출되는 VM(가상 머신) 네트워크 어댑터에 대한 MAC(미디어 액세스 제어) 주소 및 VLAN(가상 LAN) 매개 변수가 포함됩니다. 이렇게 하면 소프트웨어 기반 가상 데이터 경로를 통해 VM 네트워크 어댑터와 기본 네트워크 어댑터 간에 패킷을 전달할 수 있습니다.

    PCI Express(PCIe) VF(가상 함수)에 대한 리소스가 할당되고 VF가 자식 파티션에 연결되면 가상화 스택은 VF에 기본이 아닌 VPort를 만듭니다. 그런 다음 가상화 스택은 VM 네트워크 어댑터에 대한 수신 필터를 기본 VPort에서 VF에 연결된 기본이 아닌 VPort로 이동합니다. 이렇게 하면 하드웨어 기반 VF 데이터 경로를 통해 VM 네트워크 어댑터와 기본 네트워크 어댑터 간에 패킷을 전달할 수 있습니다.

    이러한 데이터 경로에 대한 자세한 내용은 SR-IOV 데이터 경로를 참조하세요.

  • 게스트 운영 체제가 여전히 실행 중인 Hyper-V 자식 파티션에서 VF가 분리되었습니다. 이 경우 오버리싱 드라이버는 OID 집합 요청을 발행하여 VM 네트워크 어댑터에 대한 수신 필터를 기본 VPort에서 PF에 연결된 기본 VPort로 이동합니다. 이 경우 패킷 트래픽은 가상 데이터 경로로 되돌아갑니다.

수신 필터를 한 VPort에서 다른 VPort로 이동하려면 지나치게 많은 드라이버가 OID_RECEIVE_FILTER_MOVE_FILTER OID 집합 요청을 발급합니다. NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS 구조체에 대한 포인터를 포함합니다.

오버리싱 드라이버가 OID_RECEIVE_FILTER_MOVE_FILTER 요청을 실행하기 전에 다음과 같은 방식으로 NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS 구조를 초기화해야 합니다.

  • 드라이버는 FilterId 멤버를 이전에 할당된 수신 필터의 식별자 식별자로 설정합니다.

    참고 오버리싱 드라이버는 OID_RECEIVE_FILTER_SET_FILTER 또는OID_RECEIVE_FILTER_ENUM_FILTERS 이전 OID 메서드 요청에서 필터 식별자를 얻었습니다.

  • 드라이버는 SourceQueueId 멤버를 NDIS_DEFAULT_RECEIVE_QUEUE_ID 설정합니다.

  • 드라이버는 SourceVPortId 멤버를 이 필터가 이전에 설정된 VPort의 식별자로 설정합니다.

  • 드라이버는 DestQueueId 멤버를 NDIS_DEFAULT_RECEIVE_QUEUE_ID 설정합니다.

  • 드라이버는 DestVPortId 멤버를 이 필터를 이동할 VPort의 식별자로 설정합니다.

NDIS는 OID 집합 요청을 PF 미니포트 드라이버에 전달하기 전에 NDIS_RECEIVE_FILTER_MOVE_FILTER_PARAMETERS 멤버의 유효성을 검사합니다.

PF 미니포트 드라이버가 이 OID 집합 요청을 처리하는 경우 원자성 작업에서 수신 필터를 이동해야 합니다. 드라이버는 수신 큐 및 VPort에서 필터를 동시에 제거하고 다른 수신 큐 및 VPort에 설정하도록 네트워크 어댑터를 구성할 수 있어야 합니다.