다음을 통해 공유


확장 필터링

Hyper-V 확장 가능한 스위치 필터링 확장은 확장 가능한 스위치 데이터 경로에 패킷을 검사, 수정 및 삽입할 수 있습니다. 확장 가능한 스위치 포트 및 스위치 정책 설정에 따라 확장은 패킷을 삭제하거나 하나 이상의 대상 포트에 대한 배달을 제외할 수 있습니다.

필터링 확장은 수신 데이터 경로에서 확장을 캡처한 후 송신 데이터 경로의 전달 확장 후에 호출됩니다. 이러한 데이터 경로에 대한 자세한 내용은 Hyper-V 확장 가능 스위치 데이터 경로를 참조하세요.

필터링 확장 프로그램은 수신 데이터 경로에서 가져온 패킷을 사용하여 다음을 수행할 수 있습니다.

  • 패킷 트래픽을 필터링하고 확장 가능한 스위치를 통해 패킷 배달을 위한 사용자 지정 포트 또는 스위치 정책을 적용합니다. 필터링 확장이 수신 데이터 경로의 패킷을 필터링하는 경우 패킷이 시작된 원본 포트 및 네트워크 어댑터 연결에 따라 필터링 규칙을 적용할 수 있습니다. 이 정보는 패킷의 NET_BUFFER_LIST 구조의 OOB(out-of-band) 데이터에 저장되며 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 매크로를 사용하여 가져올 수 있습니다.

    참고 수신 데이터 경로에서 가져온 패킷에는 대상 포트가 포함되지 않습니다. 대상 포트를 기반으로 패킷 필터링은 송신 데이터 경로에서 가져온 패킷에서만 수행할 수 있습니다.

    사용자 지정 정책은 ISV(독립 소프트웨어 공급업체)에 의해 정의됩니다. 이 정책 유형에 대한 속성 설정은 Hyper-V WMI 관리 계층을 통해 관리됩니다. 필터링 확장은 OID_SWITCH_PORT_PROPERTY_UPDATE 및 OID_SWITCH_PROPERTY_UPDATE OID(개체 식별자) 요청을 통해 이러한 속성 설정으로 구성됩니다.

    사용자 지정 확장 가능한 포트 또는 스위치 정책에 대한 자세한 내용은 Hyper-V 확장 가능한 스위치 정책 관리를 참조하세요.

    참고 전달 확장만 확장 가능 스위치를 통해 패킷 배달에 대한 표준 포트 정책을 적용할 수 있습니다.

  • 새 패킷, 수정된 패킷 또는 복제된 패킷을 수신 데이터 경로에 삽입합니다.

    자세한 내용은 Hyper-V 확장 가능 스위치 보내기 및 받기 작업을 참조하세요.

필터링 확장 프로그램은 송신 데이터 경로에서 가져온 패킷을 사용하여 다음을 수행할 수 있습니다.

  • 패킷 트래픽을 필터링하고 확장 가능한 스위치를 통해 패킷 배달을 위한 사용자 지정 포트 또는 스위치 정책을 적용합니다. 필터링 확장이 송신 데이터 경로의 패킷을 필터링하는 경우 패킷의 원본 또는 대상 포트에 따라 필터링 규칙을 적용할 수 있습니다. 대상 포트 데이터는 패킷의 NET_BUFFER_LIST 구조의 OOB 데이터에 저장됩니다. 확장은 GetNetBufferListDestinations 함수를 호출하여 이 정보를 가져옵니다.

  • 하나 이상의 확장 가능한 스위치 대상 포트에 대한 패킷 배달을 제외합니다. 이렇게 하면 필터링 확장 프로그램에서 확장 가능한 스위치 포트에 대한 패킷 배달을 제외할 수 있습니다.

    확장 가능한 스위치 포트에 대한 패킷 배달을 제외하는 방법에 대한 자세한 내용은 확장 가능한 스위치 대상 포트로 패킷 배달 제외를 참조하세요.

  • 송신 데이터 경로까지 패킷 전달을 연기하여 하나 이상의 대상 포트에 대한 트래픽 흐름을 관리합니다.

    예를 들어 QoS(서비스 품질) 기능을 지원하는 필터링 확장은 즉시 NdisFSendNetBufferLists 를 호출하여 더 높은 우선 순위 값으로 지정된 패킷을 전달할 수 있습니다. 트래픽 흐름에 따라 확장은 나중에 우선 순위가 낮은 패킷을 전달할 수 있습니다.

  • 패킷 데이터를 수정합니다. 필터링 확장이 패킷의 데이터를 수정해야 하는 경우 먼저 포트 대상을 유지하지 않고 패킷을 복제해야 합니다. 그런 다음 확장은 수정된 패킷을 수신 데이터 경로에 삽입해야 합니다. 이렇게 하면 기본 확장에서 수정된 패킷에 정책을 적용할 수 있으며 전달 확장은 포트 대상을 추가할 수 있습니다.

    자세한 내용은 패킷 트래픽 복제를 참조하세요.

필터링 확장은 OID 요청 및 NDIS 상태 표시를 검사하는 것 외에도 다음을 수행할 수 있습니다.

  • 적용 가능한 확장 가능한 스위치 OID에 대한 STATUS_DATA_NOT_ACCEPTED 반환하여 확장 가능한 스위치 포트 또는 네트워크 어댑터 연결을 만드는 것을 거부합니다. 예를 들어 필터링 확장은 드라이버가 OID_SWITCH_PORT_CREATE OID 집합 요청을 받을 때 STATUS_DATA_NOT_ACCEPTED 반환하여 포트 만들기 요청을 거부할 수 있습니다.

    참고 확장 필터링은 포트 또는 네트워크 어댑터 연결을 만들거나 삭제하지 않습니다. 확장 가능한 스위치의 프로토콜 에지는 포트 또는 네트워크 어댑터 연결의 생성 또는 삭제에 대해 기본 필터 드라이버에 알리기 위해 OID를 실행합니다. 자세한 내용은 Hyper-V 확장 가능 스위치 포트 및 네트워크 어댑터 상태를 참조하세요.

  • 적용 가능한 확장 가능한 스위치 OID에 대한 STATUS_DATA_NOT_ACCEPTED 반환하여 확장 가능한 스위치 또는 포트 정책의 추가 또는 업데이트를 거부합니다. 예를 들어 필터링 확장은 확장이 OID_SWITCH_PORT_PROPERTY_ADD OID 집합 요청을 받을 때 STATUS_DATA_NOT_ACCEPTED 반환하여 포트 정책 추가를 거부할 수 있습니다.

    확장 가능한 스위치 정책에 대한 자세한 내용은 Hyper-V 확장 가능한 스위치 정책 관리를 참조하세요.

필터링 확장에는 다음과 같은 요구 사항이 있습니다.

  • 필터링 확장은 확장 가능한 스위치 인터페이스를 지원하는 NDIS 필터 드라이버로 개발되어야 합니다.

    필터 드라이버에 대한 자세한 내용은 NDIS 필터 드라이버를 참조하세요.

    필터링 확장을 작성하는 방법에 대한 자세한 내용은 Hyper-V 확장 확장 프로그램 쓰기를 참조하세요.

    참고 Windows 필터링 플랫폼(WFP)은 Wfplwfs.sys()의 기본 확장 가능한 스위치 필터링 확장을 제공합니다. 이 확장을 사용하면 WFP 필터 또는 설명선 드라이버가 Hyper-V 확장 가능한 스위치 데이터 경로를 따라 패킷을 가로챌 수 있습니다. 이렇게 하면 필터 또는 설명선 드라이버가 WFP 관리 및 시스템 함수를 사용하여 패킷 검사 또는 수정을 수행할 수 있습니다. WFP에 대한 개요는 Windows 필터링 플랫폼을 참조하세요.

  • 필터링 확장 프로그램에 대한 INF 파일은 드라이버를 수정 필터 드라이버로 설치해야 합니다. 확장 가능한 스위치 드라이버 스택에는 NDIS 모니터링 필터 드라이버를 설치할 수 없습니다.

    필터 드라이버를 수정하는 방법에 대한 자세한 내용은 필터 드라이버 유형을 참조하세요.

    필터 드라이버를 수정하기 위한 INF 요구 사항에 대한 자세한 내용은 필터 드라이버 수정 에 대한 INF 파일 구성을 참조하세요.

  • 필터 드라이버에 대한 INF 파일의 FilterClass 값은 ms_switch_filter 설정해야 합니다. 자세한 내용은 Hyper-V 확장 스위치 확장에 대한 INF 요구 사항을 참조하세요.

  • 확장 가능한 스위치의 각 instance 대해 드라이버 스택에서 여러 필터링 확장을 바인딩하고 사용하도록 설정할 수 있습니다. 기본적으로 여러 필터링 확장은 설치된 시기에 따라 정렬됩니다. 예를 들어 여러 필터링 확장은 확장 가능한 스위치 드라이버 스택에 계층화되고 가장 최근에 설치된 확장은 스택의 다른 필터링 확장 위에 계층화됩니다.

    확장 가능한 스위치 instance 바인딩되고 사용하도록 설정되면 확장 가능한 스위치 드라이버 스택의 필터링 확장 계층을 다시 정렬할 수 있습니다. 자세한 내용은 Hyper-V 확장 스위치 확장 다시 정렬을 참조하세요.