가상 포트를 통해 패킷 흐름
기본 NIC 스위치는 SR-IOV(단일 루트 I/O 가상화) 인터페이스를 지원하는 네트워크 어댑터의 구성 요소입니다. 스위치는 항상 기본 VPort(가상 포트)를 PCI Express(PCIe) PF(물리적 함수)에 연결합니다. 스위치는 하나 이상의 기본이 아닌 VPort를 PF에 연결할 수 있습니다. 자세한 내용은 가상 포트 만들기를 참조하세요.
PF에 연결된 VPort에서 보내거나 받은 패킷에는 다음 점이 적용됩니다.
기본 VPort를 통해 보내거나 받은 패킷은 DEFAULT_VPORT_ID VPort 식별자 값으로 지정됩니다.
기본이 아닌 VPort를 통해 전송되거나 수신된 패킷은 VPort가 OID_NIC_SWITCH_CREATE_VPORT OID 메서드 요청을 통해 생성되었을 때 반환된 VPort 식별자를 사용하여 지정됩니다. 드라이버가 이 OID 요청을 처리하면 OID 요청과 연결된 NDIS_NIC_SWITCH_VPORT_PARAMETERS 구조체의 VPortId 멤버에서 VPort 식별자를 가져옵니다.
참고 VPort가 삭제되면 미니포트 드라이버가 잘못된 VPortId 값이 포함된 NBL을 받을 수 있습니다. 이 경우 미니포트는 잘못된 VPort ID를 무시하고 대신 DEFAULT_VPORT_ID 사용해야 합니다. VPortId는 NBL OOB 데이터의 NetBufferListFilteringInfo 부분에 있으며 NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID 매크로를 사용하여 검색됩니다.
PF 미니포트 드라이버는 NdisMIndicateReceiveNetBufferLists 를 호출하여 VPort에서 받은 패킷을 나타냅니다. PF 미니포트 드라이버가 NdisMIndicateReceiveNetBufferLists를 호출하기 전에 패킷에 대한 NET_BUFFER_LIST 구조의 OOB(out-of-band) 데이터에서 VPort 식별자를 설정해야 합니다. 드라이버는 NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID 매크로를 사용하여 이 작업을 수행합니다.
가상화 스택은 NdisSendNetBufferLists 를 호출하여 VPort에 패킷을 전송합니다. 가상화 스택이 NdisSendNetBufferLists를 호출하기 전에 패킷에 대한 NET_BUFFER_LIST 구조의 OOB 데이터에서 VPort 식별자를 설정합니다.
미니포트 드라이버는 NET_BUFFER_LIST_RECEIVE_FILTER_VPORT_ID 매크로를 사용하여 VPort 식별자를 가져옵니다.
미니포트 드라이버는 지정된 VPort의 하드웨어 전송 큐에서 전송 패킷을 큐에 대기해야 합니다.
참고 PCIe VF(가상 함수)의 미니포트 드라이버는 패킷에 대한 NET_BUFFER_LIST 구조의 OOB 데이터에서 VPort 식별자를 설정하거나 쿼리하지 않습니다. VF 미니포트 드라이버는 패킷을 보내면 VF에 연결된 단일 비기본 VPort에 대한 하드웨어 전송 큐의 패킷을 큐에 대기합니다.