Share via


Hyper-V 확장 가능한 스위치 포트에 패킷 전달

이 페이지에서는 Hyper-V 확장 가능 스위치 전달 확장이 패킷을 하나 이상의 포트로 전달할 수 있는 방법을 설명합니다. 이 유형의 확장은 확장 가능한 스위치 외부 네트워크 어댑터에 연결된 개별 네트워크 어댑터로 패킷을 전달할 수도 있습니다.

참고 확장 가능한 스위치 전달 확장 또는 확장 가능한 스위치 자체만 확장 가능한 스위치 포트에 패킷을 전달할 수 있습니다.

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

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

전달 확장이 확장 가능한 스위치 드라이버 스택에 설치되고 사용하도록 설정된 경우 확장 가능한 스위치 수신 데이터 경로에서 가져오는 각 패킷에 대해 전달 결정을 내릴 책임이 있습니다. 이러한 전달 결정에 따라 확장은 패킷 NET_BUFFER_LIST 구조의 OOB(대역 외) 데이터의 대상 포트 배열에 대상 포트를 추가합니다. 패킷이 확장 가능한 스위치 데이터 경로의 통과를 완료한 후 확장 가능한 스위치 인터페이스는 지정된 대상 포트에 패킷을 전달합니다.

참고 전달 확장이 설치되거나 사용하도록 설정되지 않은 경우 확장 가능한 스위치는 수신 데이터 경로에서 가져온 패킷에 대한 전달 결정을 내보낸다. 스위치는 패킷을 확장 가능한 스위치 송신 데이터 경로 위로 전달하기 전에 패킷 의 NET_BUFFER_LIST 구조의 OOB 데이터에 대상 포트를 추가합니다.

참고 패킷이 NVGRE 패킷인 경우 전달 확장은 대상 포트 배열에 대상 포트를 추가할 수 있습니다. 그러나 확장 가능한 스위치의 Hyper-V HNV(네트워크 가상화) 구성 요소는 대상 포트를 결정하고 패킷을 전달합니다. 자세한 내용은 하이브리드 전달을 참조하세요.

전달 확장은 수신 데이터 경로에서 가져온 패킷에만 포트 대상을 추가할 수 있습니다. 패킷이 송신 데이터 경로로 전달된 후 확장 프로그램 필터링 및 전달은 확장 가능한 스위치 포트에 대한 패킷 배달을 제외할 수 있습니다. 자세한 내용은 확장 가능한 스위치 대상 포트에 대한 패킷 배달 제외를 참조하세요.

패킷의 NET_BUFFER_LIST 구조의 OOB 데이터 내에서 대상 포트에 대한 데이터는 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조에 포함됩니다. 배열의 각 요소는 대상 포트를 정의하고 NDIS_SWITCH_PORT_DESTINATION 구조로 형식이 지정됩니다.

전달 확장은 다음 Hyper-V 확장 스위치 처리기 함수를 호출하여 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조와 해당 NDIS_SWITCH_PORT_DESTINATION 요소를 관리할 수 있습니다.

AddNetBufferListDestination
이 함수는 패킷의 OOB 데이터에서 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조에 단일 대상 포트를 추가합니다.

GetNetBufferListDestinations
이 함수는 패킷의 OOB 데이터에서 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조체에 대한 포인터를 반환합니다.

GrowNetBufferListDestinations
이 함수는 패킷의 OOB 데이터의 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조에 더 많은 대상 포트 요소를 추가합니다.

UpdateNetBufferListDestinations
이 함수는 패킷에 대해 하나 이상의 대상 포트를 추가하거나 제외하기 위해 확장에서 수정한 내용을 커밋합니다. 이러한 변경 내용은 패킷의 OOB 데이터에서 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 구조에 커밋됩니다.

전달 확장의 FilterSendNetBufferLists 함수가 호출되면 NetBufferList 매개 변수는 연결된 NET_BUFFER_LIST 구조 목록에 대한 포인터를 포함합니다. 이러한 각 구조는 수신 데이터 경로에서 가져온 패킷을 지정합니다.

이 목록의 각 NET_BUFFER_LIST 구조에 대해 전달 확장은 다음 단계에 따라 패킷에 대한 대상 포트를 추가합니다.

  1. 확장은 다양한 유형의 조건에 따라 패킷에 대한 전달 결정을 내보낸다. 이러한 조건에는 다음이 포함됩니다.

    • 패킷의 원본 포트 및 네트워크 어댑터 연결을 기반으로 하는 정책 조건입니다. 전달 확장은 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 매크로를 사용하여 이 정보를 가져옵니다.

    • 패킷의 페이로드 데이터를 기반으로 확장 가능한 스위치 포트에 대한 정책 조건입니다. 예를 들어 확장 가능한 스위치 포트에 대한 정책에는 IP 버전 4(IPv4) 패킷만 배달할 수 있는 필터가 포함될 수 있습니다.

    참고 패킷이 NVGRE 패킷인 경우 확장 가능한 스위치의 HNV 구성 요소는 패킷 전달을 담당합니다. 그러나 전달 확장은 수신 및 송신 경로에 자체 정책 조건을 적용할 수 있습니다. 자세한 내용은 하이브리드 전달을 참조하세요.

  2. 확장에서 패킷을 하나 이상의 확장 가능한 스위치 포트로 전달할 수 있다고 판단하는 경우 패킷의 OOB 데이터에 대상 포트를 추가해야 합니다. 이 절차에 대한 자세한 내용은 패킷에 확장 가능한 스위치 대상 포트 데이터 추가를 참조하세요.

    참고 패킷이 NVGRE 패킷인 경우 대상 포트를 추가하기 위해 전달 확장이 필요하지 않습니다. 자세한 내용은 하이브리드 전달을 참조하세요.

  3. 확장에서 패킷을 확장 가능한 스위치 포트로 전달할 수 없다고 판단하는 경우 패킷을 삭제해야 합니다.

    참고 패킷이 NVGRE 패킷인 경우에는 그렇지 않습니다. 자세한 내용은 하이브리드 전달을 참조하세요.

  4. 확장에서 패킷에 대해 하나 이상의 대상 포트를 추가한 경우 NdisFSendNetBufferLists 를 호출하여 송신 데이터 경로에서 패킷을 전달해야 합니다.

    참고 패킷이 NVGRE 패킷인 경우 확장 가능한 스위치의 HNV 구성 요소는 패킷 전달을 담당합니다. 자세한 내용은 하이브리드 전달을 참조하세요.

확장 가능한 스위치 수신 및 송신 데이터 경로에 대한 자세한 내용은 Hyper-V 확장 가능한 스위치 데이터 경로를 참조하세요.