가상 함수에 대한 리소스 할당
SR-IOV(단일 루트 I/O 가상화)를 지원하는 네트워크 어댑터는 다음 하드웨어 구성 요소를 지원할 수 있어야 합니다.
하나의 PCI Express(PCIe) PF(물리적 함수). PF는 항상 네트워크 어댑터에 존재하며 Hyper-V 부모 파티션에 연결됩니다.
이 하드웨어 구성 요소에 대한 자세한 내용은 SR-IOV PF(물리적 함수)를 참조하세요.
하나 이상의 PCIe VF(가상 함수). 게스트 운영 체제의 네트워킹 구성 요소가 VF를 통해 패킷을 보내거나 받기 전에 각 VF를 초기화하고 Hyper-V 자식 파티션에 연결해야 합니다.
이 하드웨어 구성 요소에 대한 자세한 내용은 SR-IOV VF(가상 함수)를 참조하세요.
Hyper-V 부모 파티션의 관리 운영 체제에서 실행되는 PF 미니포트 드라이버는 PF 및 SR-IOV 네트워크 어댑터의 각 VF에 대한 리소스를 할당합니다. 이 드라이버는 모든 네트워크 어댑터와 마찬가지로 PF에 대한 리소스를 할당합니다. 그러나 드라이버는 다음과 같은 방식으로 각 VF에 대한 리소스를 할당합니다.
PF 미니포트 드라이버는 드라이버가 네트워크 어댑터에 NIC(네트워크 인터페이스 카드)를 만들 때 각 VF에 하드웨어 리소스를 할당합니다. 드라이버는 NdisMEnableVirtualization을 호출하여 VF에 대한 하드웨어 리소스 할당을 완료합니다. 이 프로세스에 대한 자세한 내용은 NIC 스위치 만들기를 참조하세요.
PF 미니포트 드라이버는 드라이버가 OID_NIC_SWITCH_ALLOCATE_VF OID(개체 식별자) 메서드 요청을 처리할 때 VF에 대한 소프트웨어 리소스를 할당합니다. 하드웨어 리소스가 VF에 할당되었지만 PF 미니포트 드라이버가 OID_NIC_SWITCH_ALLOCATE_VF 성공적으로 완료될 때까지 비 운용성으로 간주됩니다.
오버리싱 드라이버는 OID_NIC_SWITCH_ALLOCATE_VF OID 메서드 요청을 실행하여 VF에 대한 소프트웨어 리소스 할당을 요청할 수 있습니다. OID 요청에 대한 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 NDIS_NIC_SWITCH_VF_PARAMETERS 구조체에 대한 포인터를 포함합니다.
OID 요청에서 성공적으로 반환된 후 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 NDIS_NIC_SWITCH_VF_PARAMETERS 구조체에 대한 포인터를 포함합니다. 이 구조에는 어댑터 고유 VF 식별자 및 PCI RID(요청자 식별자)가 있습니다. 이러한 식별자는 다음과 같은 방법으로 사용됩니다.
오버리싱 드라이버는 다음과 같이 VF와 관련된 작업에서 VF 식별자를 사용합니다.
OID_NIC_SWITCH_VF_PARAMETERS OID 메서드 요청을 통해 현재 VF 매개 변수를 가져옵니다.
OID_NIC_SWITCH_FREE_VF OID 집합 요청을 통해 VF에 대해 이전에 할당된 리소스를 해제합니다.
OID_SRIOV_RESET_VF OID 집합 요청을 통해 VF에 PCI 재설정을 실행합니다.
RID는 가상화 스택에서 DMA를 다시 매핑하고 PF와 VF 간의 인터럽트에서 사용됩니다. 또한 RID를 사용하면 IOMMU(하드웨어 입력/출력 메모리 관리 단위)가 게스트 물리적 주소를 호스트 실제 주소로 변환할 수 있습니다.
오버리싱 드라이버가 메서드 요청을 OID_NIC_SWITCH_ALLOCATE_VF 문제에 대한 자세한 내용은 OID_NIC_SWITCH_ALLOCATE_VF 요청 발급을 참조하세요.
PF 미니포트 드라이버가 OID_NIC_SWITCH_ALLOCATE_VF 메서드 요청을 처리하는 방법에 대한 자세한 내용은 OID_NIC_SWITCH_ALLOCATE_VF 요청 처리를 참조하세요.
참고OID_NIC_SWITCH_ALLOCATE_VF OID 메서드 요청을 통해 VF에 대한 리소스를 할당한 후에는 VF에 대한 리소스 매개 변수를 동적으로 변경할 수 없습니다.