다음을 통해 공유


확장 가능한 스위치 데이터 경로에 대한 패킷 관리 지침

이 항목에서는 확장 가능한 스위치 데이터 경로에서 가져온 패킷을 관리하기 위해 Hyper-V 확장 스위치 확장이 따라야 하는 지침에 대해 설명합니다.

참고 확장 가능한 스위치 인터페이스에서 NDIS 필터 드라이버를 확장 가능한 스위치 확장 이라고 하며 드라이버 스택을 확장 가능한 스위치 드라이버 스택이라고 합니다. 확장에 대한 자세한 내용은 Hyper-V 확장 스위치 확장을 참조하세요.

참고 이 페이지에서는 Hyper-V 확장 가능 스위치하이브리드 전달 개요의 정보 및 다이어그램에 익숙하다고 가정합니다.

확장은 확장 가능한 스위치 데이터 경로에서 패킷 관리에 대한 다음 지침을 따라야 합니다.

  • 패킷을 시작하는 확장은 수신 데이터 경로에 대한 보내기 요청을 시작하려면 NdisFSendNetBufferLists 를 호출해야 합니다. 확장 가능한 스위치를 통해 패킷의 적절한 전달을 허용하려면 이 방법으로 수행해야 합니다.

  • 캡처 확장 프로그램은 확장 가능한 스위치 수신 및 송신 데이터 경로에서 패킷을 모니터링할 수 있습니다. 그러나 이 유형의 확장은 항상 패킷을 전달해야 하며 패킷을 삭제해서는 안 됩니다. 또한 캡처 확장은 패킷을 전달하기 전에 패킷 데이터를 수정해서는 안 됩니다.

  • 확장 가능한 스위치 수신 데이터 경로에서 필터링 및 전달 확장 프로그램은 다음을 수행할 수 있습니다.

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

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

    • 전달 확장은 패킷 트래픽을 필터링하고 확장 가능한 스위치를 통해 패킷 배달을 위해 사용자 지정 및 표준 포트 또는 스위치 정책을 적용할 수 있습니다. 전달 확장이 수신 데이터 경로의 패킷을 필터링하는 경우 전달 확장이 패킷에 할당하는 대상 포트뿐만 아니라 원본 포트를 기반으로 필터링 규칙을 적용합니다.

  • 확장 가능한 스위치 송신 데이터 경로에서 필터링 및 전달 확장 프로그램은 다음을 수행할 수 있습니다.

    • 확장 필터링은 패킷 트래픽을 필터링하고 확장 가능한 스위치를 통해 패킷 배달을 위해 사용자 지정 포트 또는 스위치 정책만 적용할 수 있습니다. 필터링 확장이 송신 데이터 경로의 패킷을 필터링하는 경우 패킷의 대상 포트에 따라 필터링 규칙을 적용할 수 있습니다.

      대상 포트 데이터는 패킷의 NET_BUFFER_LIST 구조의 OOB 데이터에 저장됩니다. 확장은 GetNetBufferListDestinations 함수를 호출하여 이 정보를 가져옵니다.

    • 전달 확장은 패킷 트래픽을 필터링하고 확장 가능한 스위치를 통해 패킷 배달을 위해 사용자 지정 및 표준 포트 또는 스위치 정책을 적용할 수 있습니다. 전달 확장이 송신 데이터 경로의 패킷을 필터링하는 경우 패킷의 원본 또는 대상 포트에 따라 필터링 규칙을 적용할 수 있습니다.

    • 패킷에 적용되는 정책에 따라 필터링 또는 전달 확장 프로그램은 하나 이상의 대상에 대한 패킷 배달을 제외할 수 있습니다. 이 절차에 대한 자세한 내용은 확장 가능한 스위치 대상 포트로 패킷 배달 제외를 참조하세요.

      패킷에 적용되는 정책에 따라 전달 확장 프로그램은 하나 이상의 대상에 대한 패킷 배달을 제외할 수 있습니다. 자세한 내용은 하이브리드 전달을 참조하세요.

  • 확장 가능한 스위치 송신 데이터 경로에서 확장 필터링 및 전달은 다음을 수행하지 않아야 합니다.

    • 송신 데이터 경로에서 패킷을 전달하기 전에 패킷 데이터를 수정합니다.

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

      전달 확장이 패킷의 데이터를 수정해야 하는 경우 먼저 포트 대상을 할당하기 전에 패킷을 복제해야 합니다. 패킷이 수정되고 포트 대상이 할당된 후 확장은 수정된 패킷을 수신 데이터 경로에 삽입해야 합니다.

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

      참고 확장이 송신 데이터 경로에서 가져온 패킷을 복제하는 경우 패킷 데이터를 변경하지 않고 원래 대상 포트 데이터를 유지한 경우에만 새 패킷을 송신 데이터 경로에 삽입할 수 있습니다.

    • 패킷을 전달하기 전에 패킷에 대상 포트를 추가합니다.

      참고 전달 확장은 수신 데이터 경로에서 가져온 패킷에 대상 포트를 추가할 수 있습니다.

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

  • 표준 NDIS 데이터 경로에서 확장할 수 없는 스위치 OOB 데이터는 패킷이 송신 또는 수신으로 표시되는지 여부에 따라 형식이 다른 경우가 많습니다. 예를 들어 NDIS_IPSEC_OFFLOAD_V2_HEADER_NET_BUFFER_LIST_INFO OOB 데이터는 송신 및 수신 관련 구조의 통합입니다.

    확장 가능한 스위치 데이터 경로에서 모든 패킷은 모두 보내고 받을 때 확장 드라이버 스택을 통해 이동합니다. 이 때문에 패킷의 NET_BUFFER_LIST 구조 내에서 확장할 수 없는 스위치 OOB 데이터는 드라이버 스택을 통해 흐름 기간 동안 전송 또는 수신 형식이 됩니다.

    이 OOB 데이터의 형식은 패킷이 확장 가능한 스위치에 도착한 원본 확장 가능한 스위치 포트에 따라 달라집니다. 원본 포트가 외부 네트워크 어댑터에 연결된 경우 확장할 수 없는 스위치 OOB 데이터는 수신 형식이 됩니다. 다른 포트의 경우 이 OOB 데이터는 송신 형식입니다.

    참고 확장이 패킷의 NET_BUFFER_LIST 구조를 복제하는 경우 OOB 데이터를 추가하거나 수정하는 경우 확장할 수 없는 스위치 OOB 데이터를 고려해야 합니다. 확장은 CopyNetBufferListInfo 를 호출하여 확장 가능한 스위치 데이터 경로와 연결된 OOB 데이터를 원본 패킷에서 복제된 패킷으로 복사해야 합니다. 이 함수는 데이터가 복제된 패킷에 복사될 때 OOB 보내기 또는 수신 형식을 유지합니다.

  • 확장이 송신 데이터 경로의 수신에서 패킷을 삭제하는 경우 ReportFilteredNetBufferLists를 호출해야 합니다. 이 함수가 호출되면 확장 가능한 스위치 인터페이스는 카운터를 증가시키고 삭제되거나 제외된 패킷에 대한 이벤트를 기록합니다.