SR-IOV VF(가상 함수)
PCI Express(PCIe) VF(가상 함수)는 SR-IOV(단일 루트 I/O 가상화)를 지원하는 네트워크 어댑터의 경량 PCIe 함수입니다.
VF는 네트워크 어댑터의 PCIe PF(물리적 함수)와 연결되며 네트워크 어댑터의 가상화된 instance 나타냅니다. 각 VF에는 자체 PCI 구성 공간이 있습니다. 또한 각 VF는 네트워크 어댑터(예: 외부 네트워크 포트)에서 PF 및 기타 VF와 하나 이상의 물리적 리소스를 공유합니다.
VF는 본격적인 PCIe 디바이스가 아닙니다. 그러나 Hyper-V 자식 파티션과 기본 SR-IOV 네트워크 어댑터 간에 데이터를 직접 전송하기 위한 기본 메커니즘을 제공합니다. 데이터 전송에 연결된 소프트웨어 리소스는 VF에서 직접 사용할 수 있으며 다른 VF 또는 PF에서 사용하지 않도록 격리됩니다. 그러나 이러한 리소스의 대부분은 Hyper-V 부모 파티션의 관리 운영 체제에서 실행되는 PF 미니포트 드라이버에 의해 수행됩니다.
VF는 Hyper-V 자식 파티션에서 실행되는 게스트 운영 체제에서 가상 네트워크 어댑터(VF 네트워크 어댑터)로 노출됩니다. VF가 SR-IOV 네트워크 어댑터의 NIC 스위치에서 VPort(가상 포트)와 연결되면 VM에서 실행되는 VPCI(가상 PCI) 드라이버가 VF 네트워크 어댑터를 노출합니다. 노출되면 게스트 운영 체제의 PnP 관리자가 VF 미니포트 드라이버를 로드합니다.
참고
Hyper-V 자식 파티션을 VM(가상 머신)으로도 알려져 있습니다.
VF 미니포트 드라이버는 VF를 관리하기 위해 VM에 설치된 NDIS 미니포트 드라이버입니다. VF 미니포트 드라이버에서 수행하는 모든 작업은 동일한 네트워크 어댑터의 다른 VF 또는 PF에 영향을 주지 않아야 합니다.
VF 미니포트 드라이버는 모든 PCI 디바이스 드라이버처럼 작동할 수 있습니다. VF의 PCI 구성 공간을 읽고 쓸 수 있습니다. 그러나 가상 PCI 디바이스에 대한 액세스는 권한 있는 작업이며 다음과 같은 방법으로 PF 미니포트 드라이버에 의해 관리됩니다.
VF 미니포트 드라이버가 NdisMGetBusData 를 호출하여 VF 네트워크 어댑터의 PCI 구성 공간에서 데이터를 읽으면 가상화 스택에 알림이 표시됩니다. 이 스택은 Hyper-V 부모 파티션의 관리 운영 체제에서 실행됩니다. 스택이 읽기 요청에 대한 알림을 받으면 PF 미니포트 드라이버에 OID_SRIOV_READ_VF_CONFIG_SPACE OID(개체 식별자) 메서드 요청을 발급합니다. 읽을 데이터는 OID 요청에 포함된 NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 구조에 지정됩니다.
드라이버는 VF PCI 구성 공간에서 요청된 데이터를 읽고 OID 요청을 완료하여 데이터를 반환합니다. 그런 다음 NdisMGetBusData에 대한 호출이 완료되면 이 데이터가 VF 미니포트 드라이버로 반환됩니다.
VF 미니포트 드라이버가 NdisMSetBusData 를 호출하여 VF 네트워크 어댑터의 PCI 구성 공간에 데이터를 쓰면 가상화 스택에 쓰기 요청에 대한 알림이 표시됩니다. PF 미니포트 드라이버에 OID_SRIOV_WRITE_VF_CONFIG_SPACE OID 메서드 요청을 발급합니다. 쓸 데이터는 OID 요청에 포함된 NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS 구조로 지정됩니다.
드라이버는 VF PCI 구성 공간에 데이터를 쓰고 OID 요청을 완료할 때 요청의 상태 반환합니다. 이 상태 NdisMSetBusData 호출이 완료된 후 VF 미니포트 드라이버로 반환됩니다.
VF 미니포트 드라이버는 PF 미니포트 드라이버와 통신할 수도 있습니다. 이 통신 경로는 백채널 인터페이스를 통해 수행됩니다. 자세한 내용은 SR-IOV PF/VF 백채널 통신을 참조하세요.
참고 VF 미니포트 드라이버는 특정 작업에 대해 PF 미니포트 드라이버와 통신할 수 있도록 가상화된 환경에서 실행되고 있음을 알고 있어야 합니다. 드라이버에서 이 작업을 수행하는 방법에 대한 자세한 내용은 VF 미니포트 드라이버 초기화를 참조하세요.