Hyper-V 확장 가능 스위치 송신 및 수신 플래그
참고 이 페이지에서는 Hyper-V 확장 가능 스위치 및 하이브리드 전달 개요의 정보 및 다이어그램에 익숙하다고 가정합니다.
Hyper-V 확장 가능한 스위치 데이터 경로를 통해 이동하는 패킷 트래픽은 다음과 같은 방법으로 확장에서 가져옵니다.
확장은 FilterSendNetBufferLists 함수가 호출되면 수신 데이터 경로에서 패킷을 가져옵니다. 확장은 NdisFSendNetBufferLists를 호출하여 수신 데이터 경로의 기본 확장에 패킷을 전달합니다. 확장 필터링 및 전달은 NdisFSendNetBufferListsComplete를 호출하여 수신 데이터 경로에서 패킷을 삭제할 수도 있습니다.
확장은 FilterReceiveNetBufferLists 함수가 호출되면 송신 데이터 경로에서 패킷을 가져옵니다. 확장은 NdisFIndicateReceiveNetBufferLists를 호출하여 송신 데이터 경로의 확장에 패킷을 전달합니다. 확장 필터링 및 전달은 NdisFReturnNetBufferLists를 호출하여 송신 데이터 경로에서 패킷을 삭제할 수도 있습니다.
FilterSendNetBufferLists 또는 NdisFSendNetBufferLists의 SendFlags 매개 변수에서 다음 플래그를 설정할 수 있습니다.
NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE
이 플래그를 설정하면 NET_BUFFER_LIST 구조체의 연결된 목록에 있는 모든 패킷이 동일한 Hyper-V 확장 가능한 스위치 원본 포트에서 시작됩니다.
NDIS가 FilterSendNetBufferLists를 호출할 때 확장 가능한 스위치 확장 가능 인터페이스가 동일한 원본 포트에서 여러 패킷을 그룹화한 경우 이 플래그를 설정합니다. 최상의 성능을 위해 확장은 이 그룹화를 제자리에 유지하고 NdisFSendNetBufferLists를 호출할 때 이 플래그를 설정해야 합니다. 확장이 목록의 다른 패킷과 동일한 원본 포트를 사용하는 경우 확장은 원래 또는 복제된 패킷을 연결된 NET_BUFFER_LIST 구조 목록에 추가할 수도 있습니다.
참고연결된 NET_BUFFER_LIST 구조 목록의 각 패킷이 동일한 원본 포트를 사용하는 경우 확장은 보내기 요청을 완료할 때 NdisFSendNetBufferListsComplete의 SendCompleteFlags 매개 변수에서 NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE 플래그를 설정해야 합니다.
NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP
이 플래그를 설정하면 NET_BUFFER_LIST 구조체의 연결된 목록에 있는 모든 패킷을 동일한 확장 가능한 스위치 대상 포트로 전달해야 합니다.
전달 확장은 각 패킷의 대상 포트를 결정한 후 수신 데이터 경로에서 전달하는 NET_BUFFER_LIST 구조의 연결된 목록에 이 플래그를 사용할 수 있습니다. 이 플래그는 패킷을 송신 데이터 경로 위로 전달하기 전에 확장 가능한 스위치의 기본 미니포트 에지에 의해 사용 및 제거됩니다.
확장 캡처 및 필터링은 이 플래그를 사용할 수 없습니다.
참고 전달 확장은 NVGRE가 아닌 패킷에 대한 패킷의 대상 포트만 결정합니다. 패킷이 NVGRE 패킷인 경우 Hyper-V HNV(네트워크 가상화) 구성 요소는 패킷의 대상 포트를 결정하고 패킷을 전달합니다. 자세한 내용은 하이브리드 전달을 참조하세요.
최상의 성능을 위해 연결된 목록의 모든 패킷을 동일한 대상 포트로 전달할 경우 전달 확장에서 이 플래그를 설정해야 합니다. 이 플래그를 설정하면 확장은 연결된 목록의 모든 패킷에 확장 가능한 스위치 전달 컨텍스트에서 동일한 대상 포트 요소가 있음을 인정합니다.
참고 전달 확장은 여러 대상 포트가 있는 패킷의 연결된 목록에 대해 이 플래그를 설정해서는 안 됩니다.
FilterReceiveNetBufferLists 또는 NdisFIndicateReceiveNetBufferLists의 ReceiveFlags 매개 변수에서 다음 플래그를 설정할 수 있습니다.
NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE
이 플래그를 설정하면 NET_BUFFER_LIST 구조체의 연결된 목록에 있는 모든 패킷이 동일한 Hyper-V 확장 가능한 스위치 원본 포트에서 시작됩니다.
NDIS 가 FilterReceiveNetBufferLists를 호출할 때 확장 가능한 스위치가 동일한 원본 포트에서 여러 패킷을 그룹화한 경우 이 플래그를 설정합니다. 최상의 성능을 위해 확장은 이 그룹화를 제자리에 유지하고 NdisMIndicateReceiveNetBufferLists를 호출할 때 이 플래그를 설정해야 합니다. 또한 패킷에 목록의 다른 패킷과 동일한 원본 포트가 있는 경우 확장은 원본 또는 복제된 패킷을 연결된 NET_BUFFER_LIST 구조 목록에 추가해야 합니다.
참고연결된 NET_BUFFER_LIST 구조 목록의 각 패킷이 동일한 원본 포트를 사용하는 경우 확장은 수신 요청이 완료될 때 FilterReturnNetBufferLists의 ReturnFlags 매개 변수에 NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE 플래그를 설정해야 합니다. 확장은 NdisFReturnNetBufferLists를 호출하여 시작되거나 복제되지 않은 패킷을 반환하는 경우 ReturnFlags 매개 변수에서 이 플래그를 설정해야 합니다.
NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP
이 플래그를 설정하면 NET_BUFFER_LIST 구조체의 연결된 목록에 있는 모든 패킷을 동일한 확장 가능한 스위치 대상 포트로 전달해야 합니다.
NDIS 가 FilterReceiveNetBufferLists를 호출할 때 확장 가능한 스위치가 동일한 대상 포트가 있는 여러 패킷을 그룹화한 경우 이 플래그를 설정합니다. 최상의 성능을 위해 확장은 이 그룹화를 제자리에 유지하고 NdisMIndicateReceiveNetBufferLists를 호출할 때 이 플래그를 설정해야 합니다. 또한 패킷에 목록의 다른 패킷과 동일한 대상 포트가 있는 경우 확장은 원래 또는 복제된 패킷을 연결된 NET_BUFFER_LIST 구조 목록에 추가해야 합니다.
참고 확장이 NdisFIndicateReceiveNetBufferLists를 호출하는 경우 ReceiveFlags 매개 변수에서 NDIS_RECEIVE_FLAGS_RESOURCES 플래그를 설정해서는 안 됩니다. 확장 가능한 스위치 인터페이스는 이 플래그를 무시하고 FilterReturnNetBufferLists를 호출하여 수신 표시를 완료합니다.