Share via


Hyper-V 확장 가능 스위치 전달 컨텍스트 관리

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

Hyper-V 확장 가능한 스위치 데이터 경로를 트래버스하는 각 패킷의 NET_BUFFER_LIST 구조에는 OOB(대역 외) 데이터가 포함됩니다. 이 데이터는 패킷이 시작된 원본 포트와 패킷 배달을 위한 하나 이상의 대상 포트를 지정합니다. 이 OOB 데이터를 확장 가능한 전환 전달 컨텍스트라고 합니다.

참고 확장 가능한 스위치 전달 컨텍스트는 NET_BUFFER_LIST_CONTEXT 구조와 다릅니다. 이를 통해 확장은 전달 컨텍스트에 영향을 주지 않고 자체 컨텍스트 구조를 할당할 수 있습니다.

확장 가능한 스위치 전달 컨텍스트는 다음과 같은 방식으로 할당되고 해제됩니다.

확장 가능한 모든 스위치 확장은 다음 확장 가능한 스위치 처리기 함수를 호출하여 패킷의 전달 컨텍스트 내의 데이터에 액세스할 수 있습니다.

AllocateNetBufferListForwardingContext
확장 가능한 스위치 전달 컨텍스트를 할당하고 확장 가능한 스위치 내에서 보내기 또는 받기 작업을 위한 NET_BUFFER_LIST 구조를 준비합니다.

CopyNetBufferListInfo
원본 패킷의 NET_BUFFER_LIST 구조에서 대상 패킷의 NET_BUFFER_LIST 구조로 전달 컨텍스트를 복사합니다. 이 데이터에는 확장 가능한 스위치 원본 포트 및 네트워크 어댑터 정보가 포함됩니다. 확장 가능한 스위치 대상 포트 정보를 대상 패킷에 복사할 수도 있습니다.

FreeNetBufferListForwardingContext
NET_BUFFER_LIST 구조체의 확장 가능한 전환 전달 컨텍스트에서 리소스를 해제 합니다. 이 데이터는 Hyper-V 확장 가능 스위치의 송신 또는 수신 작업에 사용되었으며, 이전에는 AllocateNetBufferListForwardingContext 함수를 호출하여 할당되었습니다.

GetNetBufferListDestinations
패킷의 NET_BUFFER_LIST 구조의 전달 컨텍스트에서 대상 포트를 반환합니다.

전달 확장은 패킷이 NVGRE 패킷이 아닌 한 패킷에 대한 대상 포트를 추가하는 역할을 합니다. (자세한 내용은 하이브리드 전달을 참조하세요.) 확장은 다음 확장 가능한 스위치 처리기 함수를 호출하여 패킷의 전달 컨텍스트 내에서 대상 포트를 추가하거나 업데이트합니다.

AddNetBufferListDestination
NET_BUFFER_LIST 구조체로 지정된 패킷의 확장 가능한 스위치 전달 컨텍스트 영역에 단일 대상을 추가합니다.

참고 이 호출은 변경 내용을 전달 컨텍스트 영역에 커밋합니다. 이 경우 전달 확장은 UpdateNetBufferListDestinations를 호출할 필요가 없습니다.

GrowNetBufferListDestinations
패킷 NET_BUFFER_LIST 구조의 전달 컨텍스트 영역에서 대상 포트 배열의 크기를 늘입니다.

UpdateNetBufferListDestinations
확장이 패킷의 하나 이상의 확장 가능한 스위치 대상 포트에 대해 수행한 수정 내용을 커밋합니다. 이 함수는 패킷의 NET_BUFFER_LIST 구조체의 전달 컨텍스트를 이러한 변경 내용으로 업데이트합니다.

참고 전달 확장이 대상 포트에 대한 변경 내용을 전달 컨텍스트에 커밋한 후에는 대상 포트를 제거할 수 없으며 대상 포트의 NDIS_SWITCH_PORT_DESTINATION 구조체의 IsExcluded 멤버만 변경할 수 있습니다. 자세한 내용은 확장 가능한 스위치 대상 포트에 대한 패킷 배달 제외를 참조하세요.

Hyper-V 확장 가능 스위치 전달 컨텍스트

Hyper-V 확장 가능 스위치 전달 컨텍스트 데이터 형식